Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何设置传出流量的邪恶位_Linux_Security_Networking_Ip - Fatal编程技术网

Linux 如何设置传出流量的邪恶位

Linux 如何设置传出流量的邪恶位,linux,security,networking,ip,Linux,Security,Networking,Ip,因此,对于我正在编写的与安全相关的应用程序,我实际上希望使用RFC3514(“邪恶比特”)来确定网络上的哪组流量在每个数据包级别上是邪恶的或不是邪恶的。这被用作辅助机器学习引擎的训练数据,因此应用程序必须事先知道哪些数据包是有害的,哪些不是 这应该相当简单,只需设置一个IP层位。我曾尝试使用iptables或libpcap来实现这一点,但要么它们没有功能,要么我没有发现它 能够为一台机器的所有流量设置它是很好的,但是对输出的流量进行过滤会更好。(比如能够指定设置了哪些更高层协议等) 我也在使用U

因此,对于我正在编写的与安全相关的应用程序,我实际上希望使用RFC3514(“邪恶比特”)来确定网络上的哪组流量在每个数据包级别上是邪恶的或不是邪恶的。这被用作辅助机器学习引擎的训练数据,因此应用程序必须事先知道哪些数据包是有害的,哪些不是

这应该相当简单,只需设置一个IP层位。我曾尝试使用iptables或libpcap来实现这一点,但要么它们没有功能,要么我没有发现它

能够为一台机器的所有流量设置它是很好的,但是对输出的流量进行过滤会更好。(比如能够指定设置了哪些更高层协议等)


我也在使用Ubuntu。因此,Linux解决方案是首选。但除此之外,使用什么方法来实现这一点并不重要。Bash脚本、c/c++应用程序、设置一些sysctl等等。

显然这实际上是为FreeBSD实现的-也许你可以看看他们的代码

您有两个选择:

一个是使用,一个基于scapy的脚本,为你做邪恶的位设置工作

另一种方法是使用原始scapy脚本编写带有邪恶位的数据包。如文件所述,Scapy能够设置

>t=TCP()
>>>t.flags=“SA”
>>>t旗
18
>>>t
>>>t.flags=23
>>>t
>>>i=IP(flags=“DF+MF”)
>>>一、国旗
3.
>>>我
>>>i.flags=6
>>>我

希望这能有所帮助。

我明白了,但是:1)内核补丁似乎有些过火2)与补丁的实际链接似乎被破坏了:在研究了一段时间后,科林,看起来你是部分正确的。似乎需要一个内核补丁来将这种功能引入iptables。然而,一个解决办法是使用轧件台。您可以在IPv4标头的DSCP和ECN字段中插入标志,这两个字段通常未使用。尽管这样做可能会导致问题,如果你的网络实际使用了其中的某些东西。+1有趣,但我认为通过IPS/IDS删除或记录这些数据包的实际标准是一种更安全的方法。好吧,关键是我不想使用基于签名的IPS/IDS。因此,机器学习部分。但这与问题无关,只是一些背景信息。我本可以问“我如何才能在发送数据包中设置标志而不干扰它们的操作/解释?”似乎我不是第一个有这种需要的人。十个月后,人们会怀疑你是否成功地过滤掉了所有有害的网络流量。你不是为索尼工作吧?哈哈,我想这里的大多数人都误解了我的问题。我很清楚RFC3514是愚人节的RFC。我不打算使用它作为一种方法来确定交通是否真的是敌对的。我希望在每个数据包级别上有一个标志,告诉我正在制作的应用程序“这个数据包是恶意的”。为了训练机器学习算法。这就像在电子邮件中有一个“这是垃圾邮件”标志,以便训练垃圾邮件过滤器。在任何情况下,如果没有内核mods,在Linux中都是不可能的。
>>> t=TCP()
>>> t.flags="SA"
>>> t.flags 
18
>>> t
<TCP flags=SA |>
>>> t.flags=23
>>> t
<TCP flags=FSRA |>
>>> i=IP(flags="DF+MF")
>>> i.flags
3
>>> i
<IP flags=MF+DF |>
>>> i.flags=6
>>> i
<IP flags=DF+evil |>