Linux:Iptables: Unterschied zwischen den Versionen

Aus Alexander's Wiki
Zeile 26: Zeile 26:
* Zeile 8: erlaubt Zugriffe auf den TCP-Port 22 (ssh-Daemon)
* 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)
* Zeile 9: alles verwerfen, was bis hierher gekommen ist (also die vorherigen Regeln nicht gegriffen haben)
Die Regeln laden und anzeigen:
<source lang="bash">
sudo iptables-restore /etc/network/iptables
sudo iptables -L
</source>
Die Anzeige dürfte dann so aussehen:
<source lang="bash">
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
</source>
Damit die Firewall-Regeln bei einem Neustart des Systems oder des Netzwerkdienstes automatisch geladen werden, muss noch ein Pre-Up Skript erstellen.
<source lang="bash">
sudo vi /etc/network/if-pre-up.d/iptables
</source>
In der Datei ''/etc/network/if-pre-up.d/iptables'' die folgenden Zeilen einfügen:
<source lang="bash">
#!/bin/sh
/sbin/iptables-restore /etc/network/iptables
</source>
Damit das Skript ausgeführt werden kann müssen die Zugriffsrechte entsprechend anpassen werden:
<source lang="bash">
sudo chmod +x /etc/network/if-pre-up.d/iptables
</source>


== Informationen ==
== Informationen ==

Version vom 15. Dezember 2013, 14:18 Uhr


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)