可以用Python编写防火墙吗?
用Python写一个防火墙可以吗?比如说,它能阻止所有的网络流量吗?
6 个回答
4
Python-iptables 是一个可以让你在 Linux 系统上用 Python 来操作 iptables 的工具。它通过使用一些 C 语言写的库(比如 libiptc、libxtables 和 iptables 扩展)来实现与 iptables 的配合,而不是直接调用 iptables 的命令行程序并解析它的输出。
4
我相信理论上你可以实现你想要的,但在实际操作中,我觉得你的想法是行不通的(如果你想知道原因,那是因为把高级语言和底层内核连接起来太难了)。
你可以考虑做一个Python工具,来控制操作系统的防火墙,这样你就可以添加、删除规则等等(就像Linux中的iptables那样)。
19
是的,确实是这样。
我有一些Python代码,它可以和Linux的iptables进行互动,来执行防火墙的功能,使用的是nfqueue。我的iptables规则大概是这样的:
iptables -A INPUT -j NFQUEUE --queue-num 1
然后我有一些Python代码,看起来是这样的:
import nfqueue
from dpkt import ip
q = None
def cb(dummy, payload):
# make decision about if the packet should be allowed. in this case, drop everything:
payload.set_verdict(nfqueue.NF_DROP)
q = nfqueue.queue()
q.open()
q.bind()
q.set_callback(cb)
q.create_queue(1)
q.try_run()
这里有一篇很不错的文章,以上代码就是基于这篇文章的:
http://blog.yancomm.net/2011/05/nfqueue-packet-mangling-with-python.html