Ich versuche python-iptables zu verwenden, um ein Skript zu schreiben, um bestimmte Regeln festzulegen. Ich habe herausgefunden, wie Regeln so eingestellt werden, dass alle erlaubt und alles abgelehnt wird, aber ich muss herausfinden, wie man eine Regel schreibt, um etablierte Verbindungen zuzulassen.Wie schreibe ich spezifische iptables-Regeln mit Python-iptables
Zum Beispiel muß ich die folgenden Regeln schreiben, mit Python-iptables:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Wenn jemand Wissen aus erster Hand hat oder kennt eine gute Ressource für die oben genannten oder ähnliche Regeln zu schreiben ich es sehr zu schätzen würde. Danke im Voraus!
Hier ist das fertige Produkt. Ich plane, weitere Regeloptionen hinzuzufügen, um Benutzern zu erlauben, http/s etc. Verbindungen zu erlauben, wenn sie wünschen. Dank für die ganze Hilfe.
import iptc
def dropAll():
chain = iptc.Chain(iptc.Table(iptc.Table.FILTER), "INPUT")
rule = iptc.Rule()
rule.in_interface = "eth+"
target = iptc.Target(rule, "DROP")
rule.target = target
chain.insert_rule(rule)
def allowLoopback():
chain = iptc.Chain(iptc.Table(iptc.Table.FILTER), "INPUT")
rule = iptc.Rule()
rule.in_interface = "lo"
target = iptc.Target(rule, "ACCEPT")
rule.target = target
chain.insert_rule(rule)
def allowEstablished():
chain = iptc.Chain(iptc.Table(iptc.Table.FILTER), 'INPUT')
rule = iptc.Rule()
match = rule.create_match('state')
match.state = "RELATED,ESTABLISHED"
rule.target = iptc.Target(rule, 'ACCEPT')
chain.insert_rule(rule)
dropAll()
allowLoopback()
allowEstablished()
Okay Leute, hier ist, was ich gerade arbeite. Die dritte Regel war das Problemkind, aber es funktioniert jetzt alles. Ich plane das Hinzufügen von mehreren optionalen Regeln, um http/s, ssh usw. zu erlauben, wenn der Benutzer dies wünscht. Danke für die Hilfe, die ihr Jungs rockt. – h33th3n
Hat jemand eine Ahnung, wie ich das Obige in eine Klasse verwandeln könnte, die Regeln schreibt? Würde ich das Obige mit jeder Funktion in ein Objekt verwandeln? – h33th3n