iptables bloquea todo menos http/https/ssh

iptables bloquea todo menos http/https/ssh

Tengo esta configuración de iptables en mi vps que se supone que ejecuta Wordpress. Lo que quiero hacer es bloquear todas las solicitudes entrantes excepto http en el puerto 80, https en el puerto 443 y ssh en el puerto 22.

Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain f2b-sshd (1 references)
    num  target     prot opt source               destination         
    1    REJECT     all  --  [retracted_ip]       anywhere             reject-with icmp-port-unreachable
    2    REJECT     all  --  [retracted].com     anywhere             reject-with icmp-port-unreachable
    3    RETURN     all  --  anywhere             anywhere            

Encontré algunos comandos en línea, pero de lo que no estoy seguro es si podrían entrar en conflicto con fail2ban.

Respuesta1

En general:

Las reglas de firewall se procesan en el orden en que se configuran y aparecen (en la salida de los comandos iptables -L -v -n --line-numbers, y/o similares).iptables -L -v -n -t nat --line-numbersiptables-save

Crear nuevas reglas en las cadenas incorrectas y/o en el orden incorrecto tendrá como resultado consecuencias no deseadas, rompiendo la funcionalidad, la seguridad y/o bloqueando el tráfico válido.

Tenga en cuenta que ejecutar iptablescomandos de bajo nivel para administrar su firewall puede no ser siempre la mejor solución. Hasta donde yo sé, en Ubuntu se prefiere usar las herramientas UFW y funcionará de manera confiable en conjunto con fail2ban.


Fail2ban crea una o más cadenas personalizadas (que manejan la mayor parte del trabajo pesado para bloquear direcciones IP específicas que se comportan mal) como la f2b-sshdcadena. Normalmente dejas que fail2ban administre las entradas en esas cadenas.

Además, fail2ban crea reglas para las cadenas personalizadas que crea en la INPUTcadena. Normalmente esas reglas deben venirprimero en el INPUTcadena, antes de cualquier otra regla que cree.

En la configuración actual de su firewall, cuando usa iptables con el -Ainterruptor para agregar nuevas reglas a la cadena INPUT, todo debería funcionar.


Al ejecutar los siguientes comandos se agregarán las reglas habituales para crear un firewall que permita ssh, http y https, y que bloquee todo el resto del tráfico entrante.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

Respuesta2

Primero hagamos una copia de seguridad :)

sudo iptables-save > ./mybackup

Si perdió la conexión y desea KVM, puede volver fácilmente al inicio de la copia de seguridad.

sudo iptables-restore < ./mybackup

Entonces puedes comenzar a agregar reglas.

sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC  -j DROP

esto arriba si desea crear un firewall para una IP distinta a su instancia, YOURIPPUBLIC: 33.33.33.33 o con máscara de red 33.33.33.33/32

RELACIONADO, ESTABLECIDO: si lo obtuvo antes de conectarse, simplemente omita todas las reglas siguientes del firewall. Para conectarse, siga las siguientes reglas :)

si quieres toda la red

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP

Puedes guardar para editar más tarde:

iptables-save > /.mynew.iptables.list.txt

información relacionada