Linux:Iptables: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 154: | Zeile 154: | ||
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT | -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT | ||
</source> | </source> | ||
:Regel Nummer 1: Pakete, die eine SSH-Verbindung öffnen wollen, sollen als ''SSH'' markiert werden. | |||
:Regel Nummer 2: Das 4. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll verworfen werden (Verhindert Mehrfacheinträge in der Logdatei). | |||
:Regel Nummer 3: Das 3. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll gelogt werden. | |||
:Regel Nummer 4: Das 3. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll verworfen werden. | |||
:Regel Nummer 5: Was bis hierher gekommen ist (SSH), soll akzeptiert werden. |
Aktuelle Version vom 6. Februar 2015, 11:14 Uhr
Standardregeln
FTP-Server
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
Samba Server
-A INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
Webserver
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
Mailserver
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
DNS Server
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
DHCP-Server
-A INPUT -p tcp -m state --state NEW -m tcp --dport 68 -j ACCEPT
TFTP-Server
-A INPUT -p udp -m state --state NEW -m udp --dport 69 -j ACCEPT
NTP-Server
-A INPUT -p udp -m state --state NEW -m udp --dport 123 -j ACCEPT
Druckserver
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A INPUT -p udp -m udp --dport 631 -j ACCEPT
Rsync-Server
-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
OpenVPN-Server
-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT #Konfiguration OpenVPN beachten!
TightVNC-Server
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT #jeder Desktop erhöht die Portnummer!
Raspberry Pi
Standardmäßig gibt es im aktuellen Raspbian Image noch keine Konfigurationsdatei für die Firewall-Regeln. Daher erstellen einer Datei /etc/network/iptables mit einem Editor.
sudo nano /etc/network/iptables
Nun werden die Regeln eingefügt (ohne die Zeilennummern):
*filter
:INPUT DROP [159:12505]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [140:13492]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
- Zeile 5: erlaubt alle Zugriffe über die Loopback-Schnittstelle lo. Dies können nur Zugriffe vom eigenen Linux-System sein.
- Zeile 6: erlaubt ICMP-Anfragen (z.B. ping)
- Zeile 7: erlaubt bereits aufgebaute eingehende Verbindungen generell
- Zeile 8: erlaubt Zugriffe auf den TCP-Port 22 (ssh-Daemon)
- Zeile 9: alles verwerfen, was bis hierher gekommen ist (also die vorherigen Regeln nicht gegriffen haben)
Die Regeln laden und anzeigen:
sudo iptables-restore /etc/network/iptables
sudo iptables -L
Die Anzeige dürfte dann so aussehen:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Damit die Firewall-Regeln bei einem Neustart des Systems oder des Netzwerkdienstes automatisch geladen werden, muss noch ein Pre-Up Skript erstellen.
sudo vi /etc/network/if-pre-up.d/iptables
In der Datei /etc/network/if-pre-up.d/iptables die folgenden Zeilen einfügen:
#!/bin/sh
/sbin/iptables-restore /etc/network/iptables
Damit das Skript ausgeführt werden kann müssen die Zugriffsrechte entsprechend anpassen werden:
sudo chmod +x /etc/network/if-pre-up.d/iptables
Informationen
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
Zeile 1: Der "Originalebefehl" Zeile 2: Begrenzung auf ein Netzwerk Zeile 3: Begrenzung auf eine Schnittstelle (z.B. LAN und WLAN)
SSH Brute Force reglementieren
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --rcheck --seconds 30 --hitcount 4 --rttl --name SSH --rsource -j REJECT --reject-with tcp-reset
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --rcheck --seconds 30 --hitcount 3 --rttl --name SSH --rsource -j LOG --log-prefix "SSH brute force "
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --update --seconds 30 --hitcount 3 --rttl --name SSH --rsource -j REJECT --reject-with tcp-reset
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
- Regel Nummer 1: Pakete, die eine SSH-Verbindung öffnen wollen, sollen als SSH markiert werden.
- Regel Nummer 2: Das 4. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll verworfen werden (Verhindert Mehrfacheinträge in der Logdatei).
- Regel Nummer 3: Das 3. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll gelogt werden.
- Regel Nummer 4: Das 3. Eröffnunspaket von einer Quelle innerhalb von 30 Sekunden soll verworfen werden.
- Regel Nummer 5: Was bis hierher gekommen ist (SSH), soll akzeptiert werden.