有谁知道从 Python 更改 IPTables 最安全的方法是什么?
对于一个学校项目,我们正在构建一个简单的强制门户。当用户在门户上通过身份验证(通过 python 和 mariadb)时,python 会向 IPTables 发送命令以授予其 IP 访问权限。
但执行此操作的最佳方法是什么?我确信这不是通过将确切的命令放入 Python 中来实现的。是通过运行shell脚本吗?但是如何才能在 shell 脚本中发送他们的 IP 地址呢?
答案1
你可以这样做:
import subprocess
ip = get_ip() # you have to create the code to fetch IP in this variable
subprocess.run(["/usr/sbin/iptables", "-A", "-p", "tcp", "-s", ip, "-j", "ACCEPT"])
# ^
# |
# This is a variable
答案2
您可以像 Gilles 提到的那样运行 shell 命令,也可以使用类似的库python iptables
另外,使用 ipset 对于此类任务更加方便。
创建 ipset 如下
ipset create allowed_list hash:ip
iptables 规则就像
iptables -A INPUT -m set --match-set allowed_list src -j ACCEPT
添加/删除 IP 地址
ipset add allowed_list 10.0.0.1
ipset del allowed_list 10.0.0.2