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.
- 25 consejos para reforzar la seguridad de los servidores Linux
- 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.
- Guía Básica sobre IPTables (Firewall Linux) Consejos/Comandos
- Cómo configurar un firewall de Iptables para permitir el acceso remoto a servicios en Linux
- Cómo configurar 'FirewallD' en RHEL/CentOS 7 y Fedora 21
- 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:
- /etc/hosts.allow
- /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.