【发布时间】:2014-01-11 03:03:55
【问题描述】:
我正在尝试使用 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()
【问题讨论】:
-
好的,伙计们,这就是我现在正在做的工作。第三条规则是问题孩子,但现在一切正常。如果用户愿意,我计划添加多个可选规则以允许 http/s、ssh 等。感谢你们的帮助。
-
有谁知道我如何将上面的内容变成一个编写规则的类?我可以将上面的内容变成一个包含每个函数的对象吗?