我有一个访问网络的 Python 脚本,有时我想拒绝它的网络访问。如何使用 SELinux 或 AppArmor 实现这一目标?我希望能够以受限的访问权限启动这个特定的脚本。
使用 SELinux 或 AppArmor 限制单个进程的网络访问
信息安全
网络
访问控制
selinux
服装
2021-08-14 13:57:51
3个回答
AppArmor 能够阻止来自应用程序的网络连接。我自己从未做过,但您应该查看AppArmor 社区页面和网络规则页面,了解如何做的详细信息。
从外观上看,该deny network
指令应该允许您阻止应用程序的所有网络访问。
如果您启用了 SELinux,我的印象是默认操作是拒绝访问,所以您想要做的是有时允许网络访问,对吗?
我怀疑您将不得不在 serverfault 上执行类似此答案的操作,其中包含单个进程的 SE Linux 配置httpd
,然后将该配置与iptables
控制网络访问相结合。
要添加time
方面,iptables 中有一个time
模块。这是一个链接,显示了另一个论坛上的一些实际用法。
AppArmor 已经得到了很好的回答:)
本案例的 AppArmor 配置文件为:
profile nonetwork /path/to/exec {
# Allow all rules...
capability,
network,
mount,
remount,
umount,
pivot_root,
ptrace,
signal,
dbus,
unix,
file,
# ...but no network
deny network,
deny capability net_admin,
deny capability net_bind_service,
deny capability net_broadcast,
deny capability net_raw,
}
现在并不是所有的 linux 发行版都支持某些特性,例如 Debian 10 不支持network
, unix
,dbus
规则。因此,此配置文件在此类发行版中不起作用。