Configuré estas reglas de iptables y me bloqueó el acceso ssh (y todo lo demás):
*filter
# Allow loopback
-I INPUT 1 -i lo -j ACCEPT
# Allow DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT
# allow outbound connection to several website
-A OUTPUT -p tcp -d www.google.com -j ACCEPT
-A OUTPUT -p tcp -d example.com -j ACCEPT
-A OUTPUT -p tcp -d myotherwebsite.tld -j ACCEPT
#allow inbound connection after an allowed outbound
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#allow me and my website to communicate
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/8 -j ACCEPT
-A INPUT -j LOG
-A OUTPUT -j LOG
#drop everything else
-P INPUT DROP
COMMIT
En este ejemplo mi ip es 1.1.1.1, mi sitio web es 2.2.2.2 y este servidor es 3.3.3.3. Bloqueo todas las conexiones ipv6 (mi pc solo está configurada en ipv4). Estoy casi seguro de que estas reglas funcionaron en el pasado, pero ahora no.
Respuesta1
Agregue una regla a su OUTPUT
cadena que permita paquetes para conexiones ya establecidas. La regla típica para agregar a su conjunto de reglas sería:
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Para la conexión SSH, esto tendrá el mismo propósito que la regla que describió entu respuesta anterior. Sin embargo, es más genérico y también se aplicará para permitir flujos bidireccionales de paquetes relacionados con cualquier otra INPUT
regla de cadena que pueda agregar en el futuro, sin más reglas explícitas en su OUTPUT
cadena.
Respuesta2
Parece que se necesita una regla bidireccional, agregar la siguiente línea me permite acceder a mi servidor:
-A OUTPUT -d 1.1.1.1/32 -j ACCEPT