Como escrever regras específicas do iptables usando python-iptables
Estou tentando usar python-iptables para escrever um script para definir certas regras. Eu descobri como definir regras para permitir tudo e negar tudo, mas preciso descobrir como escrever uma regra para permitir conexões estabelecidas.
Por exemplo, preciso escrever as seguintes regras usando python-iptables:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Se alguém tem conhecimento em primeira mão ou conhece um bom recurso para escrever as regras acima ou similares, eu agradeceria muito. Desde já, obrigado!
Aqui está o produto acabado. Estou planejando adicionar mais opções de regras para permitir que os usuários permitam conexões http / s etc., se desejarem. Obrigado por toda a ajuda.
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()