![iptables bloquea todo menos http/https/ssh](https://rvso.com/image/769301/iptables%20bloquea%20todo%20menos%20http%2Fhttps%2Fssh.png)
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-numbers
iptables-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 iptables
comandos 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-sshd
cadena. Normalmente dejas que fail2ban administre las entradas en esas cadenas.
Además, fail2ban crea reglas para las cadenas personalizadas que crea en la INPUT
cadena. Normalmente esas reglas deben venirprimero en el INPUT
cadena, antes de cualquier otra regla que cree.
En la configuración actual de su firewall, cuando usa iptables con el -A
interruptor 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