UFW 的 Python 包装器
项目描述
pyufw
UFW(简单防火墙)的 python 包装器,iptables 的包装器。
安装
pyufw 可从 PyPi 获得。您可以使用 pip 下载它:
$ pip3 install pyufw
还要确保安装了ufw。根据您的发行版,包可能被命名为ufw或python-ufw.
文档
您的脚本必须以 root 权限运行。导入模块后,ufw 安全检查将开始,您可能会看到一些警告消息。将开始以下检查:
- 是 setuid 或 setgid(对于非 Linux 系统)
- 检查脚本是否由 root 拥有
- 检查绝对路径中的每个组件是否都归 root 所有
- 如果脚本是组可写的,则发出警告
- 如果脚本路径的一部分是组可写的,则发出警告
import pyufw as ufw
启用防火墙
启用 ufw 防火墙并在启动时启用。
ufw.enable()
禁用防火墙
禁用 ufw 防火墙并在启动时禁用。
ufw.disable()
重置防火墙
将防火墙返回到它的安装默认值。incoming=deny, outgoing=allow, routed=reject
默认规则是:
allow SSHallow to 224.0.0.251 app mDNS
ufw.reset()
获取状态
返回一个字典。状态为'active'或'inactive'。如果防火墙处于活动状态,还将包括默认策略和规则列表。
ufw.status()
{
'status':'active',
'default':{
'incoming':'deny',
'outgoing':'allow',
'routed':'reject'
},
'rules':{
1:'allow out on tun0',
2:'allow in on tun0'
}
}
{
'status': 'inactive'
}
设置默认值
为 和incoming设置默认策略。可供选择的策略是和。outgoingroutedallowdenyreject
ufw.default(incoming='deny', outgoing='allow', routed='reject')
添加规则
添加或插入规则。要插入规则,您可以指定规则编号,但这是可选的。
查看man ufw规则语法。
返回添加的原始 iptables 规则(如果您感兴趣)
ufw.add("allow 22")
ufw.add("allow 22", number=3)
"allow -p all --dport 22 -j ACCEPT both"
删除规则
删除规则。您可以指定规则本身、规则编号或*删除所有规则的字符串。
ufw.delete("allow 22")
ufw.delete(3)
ufw.delete('*')
获取规则
获取当前规则的列表。返回一个以规则编号为索引的字典。
ufw.get_rules()
{
1:'allow out on tun0',
2:'allow in on tun0',
3:'allow 22'
}
显示收听
返回一组侦听端口、应用程序和适用的规则。
数组包含一系列具有以下结构的元组:
(str transport, str listen_address, int listen_port, str application, dict rules)
ufw.show_listening()
[
('tcp', '*', '22', 'openssh', {
3: 'allow 22'
}),
('tcp', '*', '57621', 'spotify', {}),
('udp', '*', '1900', 'spotify', {}),
('udp', '224.0.0.251', '5353', 'chrome', {}),
('udp', '224.0.0.251', '5353', 'chrome', {}),
('udp', '*', '68', 'dhclient', {})
]
设置日志记录
设置 ufw 日志记录级别。选择:'on', 'off', 'low', 'medium', 'high', 'full'。查看man ufw有关日志记录的更多信息。
ufw.set_logging('on')
获取原始 iptables 输出
以下资源镜像 ufw cli 命令并返回相同的未格式化字符串输出。也许对调试更有用。
ufw.show_raw()
ufw.show_builtins()
ufw.show_before_rules()
ufw.show_user_rules()
ufw.show_logging_rules()
类似的酷项目
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。