原始套接字和安全 – Linux和Windows

所有版本的linux都允许通过原始套接字进行通信吗?

似乎在Windows中,Windows XP SP2以后的版本有能力通过原始套接字发送stream量,但受到两种限制:

  1. TCP数据不能通过原始套接字发送。
  2. 具有无效源地址的UDP数据报不能通过原始套接字发送。 任何传出UDP数据报的IP源地址必须存在于networking接口上,否则数据报将被丢弃。

Linux中是否有类似的安全措施? 有任何想法吗 ?

Thx在advans,Karthik Balaguru

这些都是最令人烦恼的安全措施。 Linux(和NetBSD)是开源的,你可以让内核做你想做的事情。

真正的安全是根源还是根源。 这是理智的,应该是这样。

Windows强加的限制并没有真正的安全优势。 要实际使用原始套接字,您需要在Windows和* nix下都是超级用户; 既然你是超级用户,你可以简单地在Windows上安装你自己的存根协议驱动程序,并发送你喜欢的任何数据包。 或者,您可以修补tcpip.sys (或任何适当的文件)以删除限制,如半开连接限制所做的那样。 这不仅仅是发送一个SOCK_RAW套接字,而是只需要做一次。

Windows的所有限制都是为了防止出现问题,而不是主动恶意软件导致问题,打破某些在引入限制时出现的恶意软件(任何更新的内容都可以简单地解决这些限制),并惹恼任何networkingpipe理员或软件开发人员需要注入一些数据包用于testing目的。