2016-04-15 6 views
1

Ich möchte alle neuen ausgehenden TCP-Verbindungen protokollieren, mit Ausnahme von Verbindungen zu localhost und IPs im selben Netzwerk.Iptable Regel, um alle abgehenden Verbindungen außerhalb des Subnetzes zu protokollieren

So stelle ich es ein, aber ich sehe ausgehende Verbindungen zu 127.0.0.1 und zu 192.168.1.122, was meine IP ist. Ich sehe auch ausgehende Verbindungen zu 192.168.1.121, die in demselben Subnetz sind.

sudo iptables -I OUTPUT -m state -p tcp --state NEW ! -s 127.0.0.1 ! -d 127.0.0.1 -m limit --limit 1/m --limit-burst 1 -j LOG --log-uid --log-prefix "Outbound Connection: " 

    for i in $(hostname -I) 
    do 
    echo $i 
    sudo iptables -I OUTPUT -m state -p tcp --state NEW -s 127.0.0.1 ! -d $i/24 -m limit --limit 1/m --limit-burst 1 -j LOG --log-uid --log-prefix "Outbound Connection: " 
    done 

Hier Ausgang ist nach diesem Skript iptables-save, habe ich den Ausgang snipped nur diese Regel zu erfassen.

-A INPUT -p tcp -m multiport --dports 0:65535 -j f2b-outbound 

    -A OUTPUT -s 127.0.0.1/32 ! -d 172.17.0.0/24 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A OUTPUT -s 127.0.0.1/32 ! -d 10.97.11.0/24 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A OUTPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A OUTPUT -s 127.0.0.1/32 ! -d 172.17.0.0/24 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A OUTPUT -s 127.0.0.1/32 ! -d 10.97.11.0/24 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A OUTPUT ! -s 127.0.0.1/32 ! -d 127.0.0.1/32 -p tcp -m state --state NEW -m limit --limit 5/min -j LOG --log-prefix "Outbound Connection: " --log-uid 
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 5432 -j ACCEPT 
+0

Können Sie die Ausgabe von 'iptables-save' veröffentlichen, nachdem Sie Ihr Skript ausführen? –

+0

Bearbeitet, um den iptables-save anzuzeigen. –

Antwort

0

Die Anschlüsse werden von Ihrem ersten iptables Linie angemeldet. Es wird alle Nicht-Localhost-Pakete übereinstimmen, da die Übereinstimmungskriterien Quelle nicht-localhost UND Ziel nicht-localhost sind. Auch Ihre zusätzlichen Regeln werden niemals übereinstimmen, da ein ausgehendes Paket nie eine Quelladresse von 127.0.0.1/8 (localhost subnet) hat.

Sie müssen von

die Zeile in Ihrer for Schleife ändern
sudo iptables -I OUTPUT -m state -p tcp --state NEW -s 127.0.0.1 ! -d $i/24 -m limit --limit 1/m --limit-burst 1 -j LOG --log-uid --log-prefix "Outbound Connection: " 

zu

sudo iptables -I OUTPUT -m state -p tcp --state NEW ! -d $i/24 -m limit --limit 1/m --limit-burst 1 -j LOG --log-uid --log-prefix "Outbound Connection: " 
+0

Also sollte ich die erste Regel komplett entfernen und die zweite ändern, wie von Ihnen gezeigt, werde ich das versuchen, aber ich fand "ausgehendes Paket wird nie eine Quelladresse von 127.0.0.1/8 (localhost Subnetz) haben." das ist verwirrend. Ich erwähnte -s 127.0.0.1, haben nicht alle ausgehenden Pakete das als Quelladresse? –

+0

Ausgehende Pakete haben (in der Regel) eine Quelladresse, die der ausgehenden Schnittstelle zugewiesen ist. Wenn Ihrer 'eth0'-Schnittstelle '192.168.0.10' zugewiesen ist, haben die meisten (oder alle) Pakete, die diese Schnittstelle verlassen, die Quelladresse '192.168.0.1'. Das Localhost-Subnetz (127.0.0.1) verlässt den Host überhaupt nicht und Sie sollten nie eine 127-Adresse auf dem Draht sehen. –

+0

Danke für die Erklärung, ich akzeptiere diese Antwort. –