Búsqueda de sitios web

Cómo bloquear el acceso SSH y FTP a una IP y un rango de red específicos en Linux


Normalmente, todos utilizamos servicios SSH y FTP para acceder a los servidores remotos y a los servidores privados virtuales. Como administrador de Linux, debe saber cómo bloquear el acceso SSH y FTP a una IP o rango de red específico en Linux para reforzar un poco más la seguridad.

  1. 25 consejos para reforzar la seguridad de los servidores Linux
  2. 5 consejos útiles para asegurar y proteger el servidor SSH

Este tutorial le mostrará cómo bloquear el acceso SSH y FTP a una dirección IP particular y/o un rango de red en el servidor CentOS 6 y 7. Esta guía fue probada en las versiones CentOS 6.x y 7.x, pero probablemente funcionará en otras distribuciones de Linux como Debian, Ubuntu y SUSE/openSUSE, etc.

Lo haremos de dos métodos. El primer método es usar IPTables/firewallD y el segundo método es usar contenedores TCP con la ayuda de hosts.allow . y el archivo hosts.deny.

Consulte las siguientes guías para saber más sobre IPTables y Firewalld.

  1. Guía Básica sobre IPTables (Firewall Linux) Consejos/Comandos
  2. Cómo configurar un firewall de Iptables para permitir el acceso remoto a servicios en Linux
  3. Cómo configurar 'FirewallD' en RHEL/CentOS 7 y Fedora 21
  4. Reglas útiles de 'FirewallD' para configurar y administrar el firewall en Linux

Ahora ya sabes qué es IPTables y FirewallD y sus conceptos básicos.

Método 1: bloquear el acceso SSH y FTP mediante IPTables/FirewallD

Ahora veamos cómo bloquear el acceso SSH y FTP a una IP específica (por ejemplo 192.168.1.100) y/o rango de red (por ejemplo 192.168.1.0/24) usando IPtables en las versiones RHEL/CentOS/Scientific Linux 6.x y FirewallD en CentOS 7.x.

Bloquear o deshabilitar el acceso 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 las nuevas reglas entren en vigor, debe utilizar el siguiente comando.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Ahora, intenta SSH el servidor desde el host bloqueado. Tenga en cuenta que aquí 192.168.1.150 es el host bloqueado.

ssh 192.168.1.150

Deberías ver el siguiente mensaje.

ssh: connect to host 192.168.1.150 port 22: Connection refused

Desbloquear o habilitar el acceso SSH

Para desbloquear o habilitar el acceso SSH, vaya al servidor remoto y ejecute el siguiente 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

Guarde los cambios usando lo siguiente para acceder a su servidor a través de SSH.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Bloquear o deshabilitar el acceso FTP

Normalmente, los puertos predeterminados para FTP son 20 y 21. Entonces, para bloquear todo el tráfico FTP usando IPTables, ejecute el siguiente 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 las nuevas reglas entren en vigor, debe utilizar el siguiente comando.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Ahora, intenta acceder al servidor desde el host bloqueado (192.168.1.100), con el comando:

ftp 192.168.1.150

Recibirá un mensaje de error similar al siguiente.

ftp: connect: Connection refused

Desbloquear o habilitar el acceso FTP

Para desbloquear y habilitar el acceso FTP nuevamente, ejecute:

--------------------- 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

Guarde los cambios con el comando:

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Ahora, intenta acceder al servidor vía FTP:

ftp 192.168.1.150

Ingrese su nombre de usuario y contraseña 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 el acceso SSH y FTP mediante contenedores TCP

Si no quiere meterse con IPTables o FirewallD, entonces los envoltorios TCP son la mejor manera de bloquear el acceso SSH y FTP a un determinado IP y/o un rango de red.

OpenSSH y FTP están compilados con soporte de contenedores TCP, lo que significa que puede especificar qué hosts pueden conectarse sin tocar su firewall en los siguientes dos archivos importantes y son:

  1. /etc/hosts.allow
  2. /etc/hosts.denegar

Como su nombre lo indica, el primer archivo contiene entradas de hosts permitidos y el segundo contiene direcciones de hosts bloqueados.

Por ejemplo, bloqueemos el acceso SSH y FTP al host que tiene la dirección IP 192.168.1.100 y el rango de red 192.168.1.0. Este método es el mismo para las series CentOS 6.x y 7.x. Y, por supuesto, funcionará en otras distribuciones como Debian, Ubuntu, SUSE, openSUSE etc.

Abra el archivo /etc/hosts.deny y agregue las siguientes direcciones IP o rango de red que desea bloquear como se muestra a continuación.

##### 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

Guardar y salir del archivo.

Ahora, reinicie el servicio sshd y vsftpd para que los nuevos cambios entren en vigor.

--------------- 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]

Ahora, intente realizar SSH en el servidor o desde un host bloqueado.

ssh 192.168.1.150

Verá el siguiente resultado:

ssh_exchange_identification: read: Connection reset by peer

Ahora, intente enviar por FTP el servidor o desde un host bloqueado.


ftp 192.168.1.150

Verá el siguiente resultado:

Connected to 192.168.1.150.
421 Service not available.

Para desbloquear o habilitar los servicios SSH y FTP nuevamente, edite el archivo hosts.deny y comente todas las líneas y finalmente reinicie los servicios vsftpd y sshd.

Conclusión

Eso es todo por ahora. En resumen, hoy aprendimos cómo bloquear una dirección IP y un rango de red específicos utilizando contenedores IPTables, FirewallD y TCP. Estos métodos son bastante fáciles y directos.

Incluso un administrador de Linux novato puede hacer esto en un par de minutos. Si conoce otras formas de bloquear el acceso SSH y FTP, no dude en compartirlas en la sección de comentarios. Y no olvides compartir nuestros artículos en todas tus redes sociales.