Zuerst
iptables
ist der richtige Befehl, um die Arbeit zu erledigen. Im Allgemeinen würden Sie jedoch eine vernünftige Anzahl von Befehlen verwenden, um eine vollständige Tabelle einzurichten. Ein Befehl ist eine Alternative zur Tabelle.
Um herauszufinden, welche Tabellen bereits vorhanden sind, und die Standardrichtlinie, wenn keine Regeln übereinstimmen, verwenden Sie diese iptables -L
. Normalerweise würde ine ein Bash-Skript schreiben, das alle iptables-Einstellungen enthält. Wo spülen Sie zuerst alle Ketten und setzen dann alles auf einmal ein. Dies soll verhindern, dass Sie den Überblick darüber verlieren, was ein- und ausgeschaltet ist.
Überprüfen Sie auch Ihre Init- Implementierung, ob Init-Skripte verfügbar sind, damit Ihre Änderungen auch nach dem Aus- und Wiedereinschalten erhalten bleiben . (Normalerweise gehen Ihre Tabellen nach dem Neustart verloren).
Erstellen Sie einfach ein Skript, das alle Ihre iptables-Befehle enthält:
#!/bin/bash # Flush all chains iptables -F #Set defaults policies iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # Don't block localhost traffic iptables -A INPUT -i lo -j ACCEPT # Don't re-evaluate already accepted connections iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT #Allowed incomming tcp ports iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT # SSH # Add watherver you wish to allow more
In diesem Artikel finden Sie weitere Tipps zu den Standardregeln für iptable.
Nun, um deine Frage zu beantworten
Zuerst mussten wir sicherstellen, dass eine grundlegende Firewall installiert ist. Jetzt können Sie Ihre Regel zu Ihrem Skript hinzufügen, um wirksam zu werden. Bitte berücksichtigen Sie die Vorschläge aus den anderen Antworten: Ein Benutzer kann zwei gesperrte Ports mit einem Proxy oder alternativen Ports problemlos umgehen.
Außerdem war Ihre Syntax nicht korrekt. --dport kann nur einen Port verwenden. Dazu müssen Sie das Multi-Port- Modul verwenden oder mehrere Regeln verketten.
Das Blockieren aller ausgehenden Verbindungen für diesen Benutzer führt jedoch dazu, dass viele Anwendungen fehlschlagen, da sie von der lokalen Verbindung unter localhost oder 127.0.0.1 abhängen . (Wenn Sie beispielsweise KDM / KDE verwenden, wird Ihr System während der Anmeldung blockiert.)
So müssen Sie das ausschließen lo Netzwerk - Schnittstelle von Ihrer Regel. Wenn Sie dem Benutzer immer noch Zugriff auf bestimmte Dienste gewähren möchten, erstellen Sie einfach eine Regel vor der DROP-Regel, die diese Ports zulässt . Ich würde folgendes vorschlagen:
# Don't re-evaluate already ACCEPTed connections: iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Allow an outgoing connection, like SSH iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner $USERNAME -j ACCEPT # Drop anything else that not on localhost iptables -A OUTPUT ! -o lo -m owner --uid-owner $USERNAME -j DROP