Revisar las reglas de iptables para un servidor

Revisar las reglas de iptables para un servidor

Este cuadro ejecuta Ubuntu 14.04b y casi estaba desconfigurado.
Pensé que sería una buena idea traer al menos un firewall y iptables fue mi elección.

En mi humilde opinión, será mejor cargar las reglas desde un archivo generado por iptables en el inicio previo a la interfaz, mediante /etc/network/interfaces, usando algo como
pre-up iptables-restore < /etc/iptables.rules
(con un iptables-saveat post-down, en caso de que tenga que cambiar algo).

Sin embargo, hay dos cosas que me molestan:

  • Primero, no estoy seguro de que mi archivo funcione correctamente (ver más abajo).
  • En segundo lugar, la última vez que usé iptables, ¡IPv6 ni siquiera existía! Descubrí que hay ip6tables para eso, pero no puedo determinar si puedo usar el mismo archivo de reglas para ambos... Eso sería genial, pero lamentablemente, suena demasiado fácil para ser verdad :/

De ahora en adelante está mi archivo de reglas, ¿alguien sería tan amable de señalarme algo extraño, ilógico o innecesario?

Como puedes ver, la caja tendrá un Apache.Servidor web(con nombre de dominio, entoncesDNSnecesita pasar), unservidor mysql(con acceso remoto), unservidor SFTP(parece que FTP ahora es algo bastante obsoleto), actuará comoservidor de correo(postfix, probablemente, y tal vez una lista de correo con mayordomo si todavía existe) ydebe ser absolutamente accesiblea través deSSH(No puedo darme el lujo de perder el acceso SSH a este servidor: es un material dedicado en algún lugar a 400 km de distancia sin consola)

# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*raw
:PREROUTING ACCEPT [30261051:8737714396]
:OUTPUT ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*nat
:PREROUTING ACCEPT [8040256:1000464908]
:INPUT ACCEPT [8040256:1000464908]
:OUTPUT ACCEPT [357964:47801350]
:POSTROUTING ACCEPT [357964:47801350]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*mangle
:PREROUTING ACCEPT [30261051:8737714396]
:INPUT ACCEPT [30261051:8737714396]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28933128:15186346449]
:POSTROUTING ACCEPT [28933128:15186346449]
COMMIT
# Completed on Wed Sep 28 15:08:21 2016
# Generated by iptables-save v1.4.21 on Wed Sep 28 15:08:21 2016
*filter
:INPUT ACCEPT [10752:1386943]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18529:5801236]
# Do not kill established connections
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#INPUT rules
#SSH & SFTP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP server
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTPS
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#Echo
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#DNS
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
#SMTP
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
#SQL in
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP
-A INPUT -i eth0 -p tcp -m tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3
-A INPUT -i eth0 -p tcp -m tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A INPUT -i eth0 -p tcp -m tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
#Limit HTTP flood
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 100 -j ACCEPT
#Loopback
-A INPUT -i lo -j ACCEPT

#OUTPUTS
#SSH & SFTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
#HTTPS
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
#echo
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
#DNS
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
#SMTP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
#SQL out
-A OUTPUT -o eth0 -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
#IMAP
-A OUTPUT -o eth0 -p tcp -m tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
#IMAP sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
#POP3
-A OUTPUT -o eth0 -p tcp -m tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
#POP3 sur SSL
-A OUTPUT -o eth0 -p tcp -m tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
#Doublons by legacy script.
#Remove?
-A OUTPUT -p tcp -m tcp --dport 53
-A OUTPUT -p udp -m udp --dport 53
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
#Loopback
-A OUTPUT -o lo -j ACCEPT

#End of config. Make it happen!
COMMIT
# Completed on Wed Sep 28 15:08:21 2016

¡Gracias por cualquier ayuda!

Respuesta1

Dado que su archivo guardado no hace referencia a ninguna IP, también iptablesdebería poder usarlo . ip6tablesSu mejor opción es emitir un attrabajo para restablecer las reglas del firewall en 2 minutos (o el tiempo que considere apropiado):

# echo "service iptables stop" | at now + 2 minutes

luego aplique las reglas de iptables de su archivo para IPv4 e IPv6:

# iptables-restore < iptables-save-file
# ip6tables-restore < iptables-save-file

Si las cosas son inaccesibles en ese momento, espere 2 minutos para que el attrabajo desactive el firewall y comience a configurar los conjuntos de reglas manualmente. Si funcionan, ejecútelo service iptables savey service ip6tables savedisfrute de su nuevo firewall.

También debo señalar que su archivo existente en realidad nunca niega, rechaza o descarta ningún tráfico: la política predeterminada en todas las cadenas es ACCEPT, y no hay reglas de seguimiento DROPni REJECTobjetivos, por lo que tiene lo que parece ser una configuración de firewall bastante ineficaz. .

información relacionada