Как написать конкретные правила iptables, используя python-iptables
Я пытаюсь использовать python-iptables, чтобы написать скрипт для установки определенных правил. Я выяснил, как установить правила, разрешающие все, и запретить все, но мне нужно выяснить, как написать правило, разрешающее установленные соединения.
Например, мне нужно написать следующие правила, используя python-iptables:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Если кто-то знает из первых рук или знает хороший ресурс для написания вышеупомянутых или подобных правил, я был бы очень признателен. Заранее спасибо!
Вот'с готовым продуктом. Я планирую добавить больше опций правил, чтобы позволить пользователям разрешать http / s и т. Д. Соединения, если они этого желают.
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()