CAP_NET_RAW 有什么作用?

CAP_NET_RAW 有什么作用?

从手册页中,我知道您可以使用原始套接字,但我不明白“绑定到任何地址以进行透明代理”是什么意思。我知道绑定到特权端口需要另一种功能,所以我知道您不能绑定到任何端口。有没有办法告诉 Linux 你正在绑定一个代理地址?

答案1

引用自这个安全 SE 答案:

CAP_NET_RAW:任何类型的数据包都可以伪造,包括伪造发送者、发送格式错误的数据包等,这也允许绑定到任何地址(与伪造发送者的能力相关,这允许冒充设备,合法用于“透明”)代理”,根据手册页,但从攻击者的角度来看,这个术语是中间人的同义词),

答案2

是的。

http://man7.org/linux/man-pages/man7/ip.7.html

插座选项

...

IP_FREEBIND(自 Linux 2.4 起)

如果启用,此布尔选项允许绑定到非本地或(尚)不存在的 IP 地址。这允许监听套接字,而不需要底层网络接口或指定的动态 IP 地址在应用程序尝试绑定到它时处于启动状态。此选项相当于下面描述的 ip_nonlocal_bind /proc 接口的每个套接字。

也可以看看

IP_TRANSPARENT(自 Linux 2.6.24 起)

设置此布尔选项可启用此套接字上的透明代理。此套接字选项允许调用应用程序绑定到非本地 IP 地址,并以外部地址作为本地端点作为客户端和服务器运行。注意:这要求路由设置为通过 TProxy 盒(即托管使用 IP_TRANSPARENT 套接字选项的应用程序的系统)路由前往外部地址的数据包。启用此套接字选项需要超级用户权限(CAP_NET_ADMIN 功能)。

使用 iptables TPROXY 目标的 TProxy 重定向还要求在重定向套接字上设置此选项。

(根据其他手册页,我猜任何一个CAP_NET_ADMIN 或 CAP_NET_RAW 就足够了。我真的希望 IP_FREEBIND 也需要它们)。

相关内容