Überprüfen Sie die iptables-Regeln für einen Server

Überprüfen Sie die iptables-Regeln für einen Server

Auf dieser Box läuft Ubuntu 14.04b und sie war fast unkonfiguriert.
Ich dachte, es wäre eine gute Idee, zumindest eine Firewall mitzubringen, und ich entschied mich für iptables.

Meiner bescheidenen Meinung nach ist es besser, die Regeln beim Start der Schnittstelle vor dem Hochfahren aus einer von iptables generierten Datei zu laden, und zwar /etc/network/interfacesmithilfe von etwas wie
pre-up iptables-restore < /etc/iptables.rules
(mit einem iptables-savenach dem Herunterfahren, falls ich etwas ändern muss).

Es gibt jedoch zwei Dinge, die mich auf die Palme bringen:

  • Erstens bin ich nicht sicher, ob meine Datei die Aufgabe richtig erledigt (siehe unten).
  • Zweitens, als ich das letzte Mal iptables verwendet habe, war IPv6 noch gar nicht verfügbar! Ich habe herausgefunden, dass es dafür ip6tables gibt, aber ich kann nicht feststellen, ob ich für beides dieselbe Regeldatei verwenden kann... Das wäre großartig, aber leider klingt es zu einfach, um wahr zu sein :/

Nachfolgend finden Sie meine Regeldatei. Wäre irgendjemand so freundlich, mich auf alles Merkwürdige, Unlogische oder Unnötige hinzuweisen?

Wie Sie sehen können, wird die Box einen Apache habenWebserver(mit Domänennamen, alsoDNSmuss durch), einMySQL-Server(mit Fernzugriff), einSFTP-Server(es scheint, als wäre FTP mittlerweile ziemlich veraltet) fungiert alsMail-Server(wahrscheinlich Postfix und vielleicht eine Mailingliste mit Majordomo, falls es diese noch gibt) undmuss unbedingt zugänglich seindurchSSH(Ich kann es mir nicht leisten, den SSH-Zugriff auf diesen Server zu verlieren: Es handelt sich um ein dediziertes Gerät irgendwo 400 km entfernt und ohne Konsole.)

# 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

Vielen Dank für jede Hilfe!

Antwort1

Da Ihre iptablesSicherungsdatei keine IPs referenziert, sollten Sie sie ip6tablesauch problemlos verwenden können. Am besten geben Sie einen atJob aus, um die Firewall-Regeln in 2 Minuten (oder zu einem beliebigen anderen Zeitpunkt) zurückzusetzen:

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

Wenden Sie dann die iptables-Regeln aus Ihrer Datei für IPv4 und IPv6 an:

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

Wenn an diesem Punkt nicht auf die Dinge zugegriffen werden kann, warten Sie 2 Minuten, bis der atJob die Firewall deaktiviert hat, und beginnen Sie mit der manuellen Konfiguration der Regelsätze. Wenn sie funktionieren, führen Sie sie aus service iptables saveund service ip6tables savegenießen Sie Ihre neue Firewall.

Ich sollte auch erwähnen, dass Ihre vorhandene Datei tatsächlich keinen Datenverkehr verweigert, ablehnt oder löscht. Die Standardrichtlinie für alle Ketten lautet ACCEPT, und es gibt keine nachfolgenden Regeln mit DROPoder REJECTZielen. Daher haben Sie anscheinend eine ziemlich ineffektive Firewall-Konfiguration.

verwandte Informationen