Wie erlaube ich bestimmte IPS und blockiere alle anderen Verbindungen in Iptables?
Wie erlaube ich bestimmte IPS und blockiere alle anderen Verbindungen in Iptables?
Antworten:
Ich habe vor langer Zeit einen Blogeintrag über grundlegende Iptables-Regeln für den Desktop-Benutzer geschrieben, den Sie wahrscheinlich lesen sollten, sowie den dazugehörigen Artikel über Stateful Firewall-Design . Aber vor dem Kernel 2.6.39 (das beinhaltet ipsetund Sie können das für das Whitelisting von IPs verwenden, wenn Sie mehr als 10 zur Whitelist haben (wobei 10 willkürlich ist)).
Behandeln Sie zuerst Zustände, von denen wir wissen, dass sie akzeptiert oder gelöscht werden sollen, und Schnittstellen.
iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept
Wenn Sie nur eine Erlaubnis durch IP nur ohne Zustand tun möchten
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Es ist jedoch wahrscheinlich, dass Sie dabei auf Probleme stoßen, und ich schlage vor, den Status zu verwenden, um Ihr Leben zu erleichtern. Zum Beispiel nicht zulassen -i lound -o lowird sicherlich Probleme für bestimmte Anwendungen verursachen.
iptables -Falle Regeln löschen soll, kann ich nicht mal ubuntu.com
Hier ist ein (ungetestetes!) Beispiel, das nur eingehende Verbindungen blockiert . Verbindungen über die Loopback-Schnittstelle von 192.168.3.x, ICMP oder zum SSH-Port sind zulässig. Alle anderen Verbindungen werden abgelehnt.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
loim obigen Beispiel ist vom Statusvergleich ausgeschlossen und immer zulässig.
Die folgende Regel erlaubt nur Ihre IP und blockiert alle anderen IPs über Port 22 oder ssh. Testen Sie mit einem neuen Terminal, bevor Sie die Verbindung trennen.
iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
yourIPaddresskönnte ich ein paar IP-Adressen und Bereiche hinzufügen? Und wenn ich SSH auf einem nicht standardmäßigen Port wie 2888 verwende, würde der Befehl das 22in Ihrem Beispiel auf ändern 2288? Blockiert dies auch rsync, sftp usw. für diesen Server von allen IP-Adressen außer den zulässigen?
-p tcphier wichtig ist, da --dportes ohne dies nicht funktioniert. Ich würde auch vorschlagen, -j REJECTanstatt zu verwenden, DROPweil REJECTder Port mit dem geschlossenen Port identisch ist und DROPPakete, die für diesen Port bestimmt sind, schwarz durchlöchert werden. In der Praxis kann ein entfernter Angreifer DROPkonfigurierte Ports anhand tatsächlich geschlossener Ports erkennen.
Hier ist ein voll funktionsfähiges Beispiel.
Funktioniert auch mit den Anwendungen (mein Kommentar zu keepass startet nicht)