Iptables es un sistema firewall muy potente incluido en el núcleo de Linux. En este post voy a explicar como configurar Iptables para permitir todos los puertos de salida del servidor y bloquear todos los puertos de entrada dejando sólo abiertos los siguientes puertos:
– Puerto del servicio PING
– Puerto SSH : 443
– Puerto HTTP: 80
– Puerto FTP: 20 y 21
– Plex Media Server
– Samba
Una forma muy cómoda de habilitar estas reglas de firewall es crearse un script sh. Aqui tenéis un ejemplo:
#!/bin/bash # iptables.sh # # limpia todas las reglas / quita el firewall iptables -F #política por defecto iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # # Flush (-F) all specific rules # iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT #Conexiones establecidas iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT #ping iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #SSH iptables -A INPUT -p tcp --dport ssh -j ACCEPT #samba iptables -A INPUT -p udp --dport 137 -j ACCEPT iptables -A INPUT -p udp --dport 138 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT #HTTP iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT #FTP iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT #plex iptables -A INPUT -m state --state NEW -p tcp --dport 32400 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 32400 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 32410 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 32412 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 32411 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 32414 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 1900 -j ACCEPT
Una vez creado este fichero lo guardamos como iptables.sh y le damos permisos de ejecución:
sudo chmod +x iptables.sh sudo ./iptables.sh
Una vez ejecutado el script ya tenemos habilitado las reglas de Firewall en el servidor. El problema es que estan cargadas en memoria y si reiniciamos o apagamos el servidor perderemos la reglas que hemos creado. Una forma rápida y sencilla de mantener estas reglas habilitadas es haciendo estas reglas de forma persistente.
Creamos un script en «/etc/network/if-post-down.d/iptablessave» que guarde las reglas al apagar la máquina:
#!/bin/sh iptables-save -c > /etc/iptables.rules if [ -f /etc/iptables.downrules ]; then iptables-restore < /etc/iptables.downrules fi exit 0
Luego debemos cambiar los permisos de ese fichero y le damos permisos de ejecución chmod a+x
Y creamos un script que cargue las reglas previamente guardadas en «/etc/network/if-pre-up.d/iptablesload» y tambien le damos permisos de ejecución a este fichero con la opción chmod a+x
#!/bin/sh iptables-restore < /etc/iptables.rules exit 0
Deja una respuesta