Pesquisa de site

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.

  1. 25 dicas de segurança para servidores Linux
  2. 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.

  1. Guia Básico sobre Dicas/Comandos do IPTables (Firewall Linux)
  2. Como configurar um firewall Iptables para permitir acesso remoto a serviços no Linux
  3. Como configurar ‘FirewallD’ no RHEL/CentOS 7 e Fedora 21
  4. 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:

  1. /etc/hosts.allow
  2. /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.