Como bloquear o acesso SSH e FTP a IP específico e intervalo de rede no Linux
Normalmente, todos nós usamos serviços SSH e FTP para acessar servidores remotos e servidores virtuais privados. Como administrador Linux, você deve saber como bloquear o acesso SSH e FTP a um IP específico ou intervalo de rede no Linux para aumentar ainda mais a segurança.
- 25 dicas de segurança para servidores Linux
- 5 dicas úteis para proteger e proteger o servidor SSH
Este tutorial mostrará como bloquear o acesso SSH e FTP a um endereço IP específico e/ou um intervalo de rede no servidor CentOS 6 e 7. Este guia foi testado nas versões CentOS 6.x e 7.x, mas provavelmente funcionará em outras distribuições Linux, como Debian, Ubuntu e SUSE/openSUSE etc.
Faremos isso de dois métodos. O primeiro método é usar IPTables/firewallD e o segundo método é usar wrappers TCP com a ajuda de hosts.allow > e arquivo hosts.deny.
Consulte os guias a seguir para saber mais sobre IPTables e Firewalld.
- Guia Básico sobre Dicas/Comandos do IPTables (Firewall Linux)
- Como configurar um firewall Iptables para permitir acesso remoto a serviços no Linux
- Como configurar ‘FirewallD’ no RHEL/CentOS 7 e Fedora 21
- Regras úteis de ‘FirewallD’ para configurar e gerenciar firewall no Linux
Agora você sabe o que é IPTables e FirewallD e seus princípios básicos.
Método 1: bloquear acesso SSH e FTP usando IPTables/FirewallD
Agora vamos ver como bloquear o acesso SSH e FTP a um IP específico (por exemplo 192.168.1.100) e/ou intervalo de rede (por exemplo 192.168.1.0/24) usando IPtables nas versões RHEL/CentOS/Scientific Linux 6.x e FirewallD no CentOS 7.x.
Bloquear ou desativar o acesso SSH
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT
Para que as novas regras entrem em vigor, você precisa usar o seguinte comando.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Agora, tente SSH o servidor do host bloqueado. Lembre-se de que aqui 192.168.1.150 é o host bloqueado.
ssh 192.168.1.150
Você deverá ver a seguinte mensagem.
ssh: connect to host 192.168.1.150 port 22: Connection refused
Desbloquear ou habilitar acesso SSH
Para desbloquear ou habilitar o acesso SSH, acesse o servidor remoto e execute o seguinte comando:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT
Salve as alterações usando o seguinte para acessar seu servidor via SSH.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Bloquear ou desativar o acesso FTP
Normalmente, as portas padrão para FTP são 20 e 21. Portanto, para bloquear todo o tráfego FTP usando IPTables execute o seguinte comando:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
Para que as novas regras entrem em vigor, você precisa usar o seguinte comando.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Agora tente acessar o servidor a partir do host bloqueado (192.168.1.100), com o comando:
ftp 192.168.1.150
Você receberá uma mensagem de erro semelhante à abaixo.
ftp: connect: Connection refused
Desbloquear ou ativar acesso FTP
Para desbloquear e ativar novamente o acesso FTP, execute:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
Salve as alterações com o comando:
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Agora, tente acessar o servidor via FTP:
ftp 192.168.1.150
Digite seu nome de usuário e senha do FTP.
Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Método 2: bloquear acesso SSH e FTP usando TCP Wrappers
Se você não quiser mexer com IPTables ou FirewallD, então wrappers TCP é a melhor maneira de bloquear o acesso SSH e FTP a um local específico. IP e/ou um intervalo de rede.
OpenSSH e FTP são compilados com suporte a wrappers TCP, o que significa que você pode especificar quais hosts têm permissão para se conectar sem tocar em seu firewall nos dois arquivos importantes a seguir e são:
- /etc/hosts.allow
- /etc/hosts.deny
Como o nome indica, o primeiro arquivo contém entradas de hosts permitidos e o segundo contém endereços de hosts bloqueados.
Por exemplo, vamos bloquear o acesso SSH e FTP ao host que possui endereço IP 192.168.1.100 e intervalo de rede 192.168.1.0. Este método é o mesmo para as séries CentOS 6.xe 7.x. E, claro, funcionará em outras distribuições como Debian, Ubuntu, SUSE, openSUSE etc.
Abra o arquivo /etc/hosts.deny
e adicione os seguintes endereços IP ou intervalo de rede que deseja bloquear, conforme mostrado abaixo.
##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0
##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0
Salve e saia do arquivo.
Agora, reinicie o serviço sshd e vsftpd para que as novas alterações tenham efeito.
--------------- For SSH Service ---------------
service sshd restart [On SysVinit]
systemctl restart sshd [On SystemD]
--------------- For FTP Service ---------------
service vsftpd restart [On SysVinit]
systemctl restart vsftpd [On SystemD]
Agora, tente fazer o SSH do servidor ou de um host bloqueado.
ssh 192.168.1.150
Você verá a seguinte saída:
ssh_exchange_identification: read: Connection reset by peer
Agora, tente fazer o FTP do servidor ou de um host bloqueado.
ftp 192.168.1.150
Você verá a seguinte saída:
Connected to 192.168.1.150.
421 Service not available.
Para desbloquear ou ativar os serviços SSH e FTP novamente, edite o arquivo hosts.deny e comente todas as linhas e, finalmente, reinicie os serviços vsftpd e sshd.
Conclusão
É tudo por agora. Resumindo, hoje aprendemos como bloquear um endereço IP específico e um intervalo de rede usando IPTables, FirewallD e TCP wrappers. Esses métodos são muito fáceis e diretos.
Até mesmo um administrador Linux novato pode fazer isso em alguns minutos. Se você conhece outras maneiras de bloquear o acesso SSH e FTP, sinta-se à vontade para compartilhá-las na seção de comentários. E não se esqueça de compartilhar nossos artigos em todas as suas redes sociais.