可以用Python编写防火墙吗?

13 投票
6 回答
36778 浏览
提问于 2025-04-16 00:53

用Python写一个防火墙可以吗?比如说,它能阻止所有的网络流量吗?

6 个回答

4

Python-iptables 是一个可以让你在 Linux 系统上用 Python 来操作 iptables 的工具。它通过使用一些 C 语言写的库(比如 libiptc、libxtables 和 iptables 扩展)来实现与 iptables 的配合,而不是直接调用 iptables 的命令行程序并解析它的输出。

http://ldx.github.io/python-iptables/index.html

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

撰写回答