-1

我有一个关于SECMARK的问题,它是iptables中的一个包标签功能。

我尝试根据Paul Moore 的指南(一个非常古老的 14 年旧博客)进行配置,但在 ubuntu 18.04 和 centOS 7.7 上都出现了错误:

命令:iptables -t mangle -A INPUT -p tcp --src 192.168.0.16 --dport 22 -j SECMARK --selctx system_u:object_r:foo_ssh_packet_t:s0

Ubuntu:No chain/target/match by that name

centOS:invalid argument. Run 'dmesg' for more information (PS 我在 centOS 上运行 dmesg 但没有得到任何有价值的东西)

我还尝试通过将“-t mangle”更改为“-t security”来配置“安全”表,并且得到了相同的输出。

iptables -t security -A INPUT -p tcp --src 192.168.0.16 --dport 22 -j SECMARK --selctx system_u:object_r:foo_ssh_packet_t:s0

4

1 回答 1

0

由于没有人知道答案,而我自己也想出了办法,我想我最好留下一些东西来帮助其他人。

的原因No chain/target/match by that name

SECMARK 和 SELinux 高度耦合,必须先定义 SELinux Context,然后才能在 iptables/nftables 规则中使用。

定义 SELinux 的方法是创建一个用户定义的 SELinux 规则集,也就是.te文件,然后在您的机器上编译并安装它。之后,您的 iptables/nftables 可以正常执行上述命令。

操作系统类型与SECMARK的关系

Ubuntu 是当今最流行的 Linux 发行版之一,但注意到 Ubuntu DO NOT Pre-install SELinuxAppArmor 直到 2019 年 1 月才支持 SECMARK,所以如果你想在 Ubuntu 上使用 SECMARK,卸载 apparmor 并安装 SELinux 可能是值得的。

如果您想在系统之间使用 SECMARK,请注意您需要在两个系统上都安装策略。

参考

SECMARK 支持代码(直到今天才合并)

来自邮件列表:[apparmor] Apparmor netfiter 支持?

于 2021-03-01T08:28:46.703 回答