Configuración de un Firewall Básico en Linux
Por defecto, las conexiones SSH normalmente se establecen a través del puerto 22 (TCP). La mayor ventaja de utilizar el protocolo SSH-2 (comparado con VNC) es la conexión cifrada mediante el algoritmo AES con una longitud de clave de 128 bits. Por tanto, se recomienda generalmente utilizar SSH en lugar de VNC.
En Linux, deberías considerar el uso del paquete de software incorporado ‘iptables’, que viene preinstalado por defecto en la mayoría de las distribuciones.
Hay dos ventajas principales al usar iptables:
Primero, el paquete necesario ya está instalado por defecto en la mayoría de las distribuciones de Linux.
Además, es compatible con cualquier distribución de Linux (Ubuntu, Debian, CentOS, etc.) sin restricciones.
También puedes definir reglas para IPv4 e IPv6 según tus propias necesidades.
Antes de configurar nuestro firewall, no hay reglas definidas. Para verificar esto, usa el siguiente comando:
iptables -L
La salida será similar a esta:
Como puedes ver, actualmente no hay reglas definidas. El firewall de software no está bloqueando nada.
Para añadir reglas de firewall, utiliza la siguiente sintaxis:
iptables <ADD: -A> | <Cadena: INPUT / OUTPUT> | <Origen/Destino: -s / -d> | <Acción: -j> | <Tipo: ACCEPT>
Ejemplo para permitir tráfico entrante en el puerto 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Ejemplo de Configuración de Firewall para Linux
Aquí tienes un script de ejemplo que abrirá los puertos más utilizados en tu servidor Linux:
#!/bin/bash
# Eliminar configuración actual del firewall:
iptables -F
# Definir reglas predeterminadas para todas las cadenas:
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Permitir tráfico localhost entrante/saliente para pruebas (p. ej. servidor web, servidor de correo):
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Permitir tráfico loopback para gestión interna de procesos:
iptables -A INPUT -i lo -j ACCEPT
# Permitir conexiones relacionadas/establecidas:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Permitir peticiones entrantes PING:
iptables -A INPUT -p icmp -j ACCEPT
# Permitir conexiones entrantes SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Permitir solicitudes HTTP/HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Permitir solicitudes DNS:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Para usar este script, inicia sesión en tu servidor Linux como root y crea un archivo de script con este comando:
nano firewall.sh
Pega el contenido mostrado arriba.
Guarda el archivo con [CTRL] + O y sal del editor con [CTRL] + X.
Haz que el script sea ejecutable con:
chmod +x firewall.sh
Para ejecutar el script y abrir los puertos indicados:
./firewall.sh
Verifica que todos los puertos estén adaptados a tus necesidades.
Si necesitas modificar reglas existentes o añadir otras (como servicios de correo o FTP), puedes hacerlo directamente en el script.
Una vez ajustado el script a tus necesidades, puedes guardarlo como un archivo de texto normal con el nombre firewall.sh, hacerlo ejecutable y ejecutarlo como se indicó.
Si usas nuestro script de ejemplo, deberías obtener la siguiente salida con:
iptables -vL
Importante:
Todas las reglas del firewall no se aplican de forma permanente con este método.
Después de un reinicio del servidor, se deben volver a aplicar manualmente.
Por eso, para configurarlas de manera permanente, ejecuta los siguientes comandos según tu sistema operativo:
Configuración Permanente del Firewall
Configuración Permanente para CentOS 7 o superior
yum install -y iptables-services
systemctl stop firewalld
systemctl mask firewalld
systemctl enable iptables.service
systemctl -t service | grep iptables
/usr/libexec/iptables/iptables.init save
Si necesitas actualizar tu configuración de firewall para IPv4/IPv6, edita los siguientes archivos:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables
Configuración Permanente para Debian/Ubuntu
apt-get install iptables-persistent netfilter-persistent
Si necesitas actualizar la configuración de tu firewall para IPv4/IPv6, edita estos archivos:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
También puedes guardar las reglas actuales del firewall, si aún no las has guardado en los archivos anteriores, con este comando:
iptables-save > /etc/iptables/rules.v4 && ip6tables-save > /etc/iptables/rules.v6
Asegúrate también de que el identificador de red por defecto (como eth0) coincida con la interfaz de red realdel sistema.
En algunas versiones (como Ubuntu 18 con entorno Netplan), puede ser necesario actualizar el nombre de la interfaz de red.
Puedes verificarlo fácilmente en tu sistema con:
Copia de Seguridad del Firewall
Se recomienda crear una copia de seguridad de la configuración actual del firewall para poder restaurarla inmediatamente en caso de bloqueo por configuración errónea.
Para guardar tu configuración actual de IPv4/IPv6 en un archivo de respaldo, usa:
iptables-save > /root/iptables_rules
ip6tables-save > /root/ip6tables_rules
Para restaurar los archivos de respaldo, utiliza:
iptables-restore < /root/iptables_rules
ip6tables-restore < /root/ip6tables_rules
Si necesitas volver a conectarte a tu servidor debido a una configuración incorrecta del firewall, puedes usar la conexión VNC de tu VPS para restaurar la configuración anterior:
Si tienes un servidor dedicado, lamentablemente no es posible usar acceso VNC.
En ese caso, tendrás que reiniciar el servidor en el modo de rescate de Linux para recuperar el acceso.
Si eres cliente de Contabo, puedes hacerlo fácilmente desde tu panel de control de cliente.
Configuración de un Firewall Básico en Windows
El firewall de Windows se puede encontrar dentro de la configuración del Administrador del servidor siguiendo esta ruta:
Firewall de Windows → Público: Activado → Configuración avanzada
Ahora puedes modificar tus reglas de firewall según tus propias necesidades.
La diferencia principal entre Linux y Windows radica en que Windows ya proporciona una configuración básica de firewall por defecto.
En la mayoría de los casos, es suficiente mantener la configuración predeterminada o bien modificar las reglas existentes.
Todas las reglas activas del firewall están marcadas con una etiqueta verde.
El resto de las reglas (sin etiqueta) deben activarse manualmente si se desean usar.
Puedes personalizar libremente la configuración del firewall según lo que requieras.
Cambiar el puerto RDP predeterminado
Por ejemplo, si deseas cambiar el puerto del Escritorio Remoto (RDP) a otro distinto del predeterminado 3389, deberás modificar las siguientes dos reglas dentro de la cadena de reglas entrantes:
- Remote Desktop – User Mode (TCP-In)
- Remote Desktop – User Mode (UDP-In)
Después de eso, también deberás modificar la entrada correspondiente en el registro de Windows con el nuevo valor del puerto.
Para evitar problemas, asegúrate de crear una copia de seguridad completa del registro antes de hacer cambios.
Pasos para hacer una copia del registro:
- Presiona Windows + R
- Escribe regedit y pulsa Enter
- En el editor de registro, ve a Archivo → Exportar y guarda una copia
Ahora puedes navegar a la siguiente ruta para cambiar el número del puerto RDP:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber
¿Te gustaría que traduzca ahora el artículo relacionado sobre VNC o tienes otro contenido que necesitas trabajar?