Linux内核rp_filter设置(反向路径过滤)
路由器的主要功能是将数据包从一个地方路由到另一个地方。
如果配置正确,Linux机器可用作网络上的路由器,它将路由大量流量而不会出现任何问题。
由于Internet上恶意和攻击流量的增加,在Linux机器或者物理路由器上配置路由时,必须格外小心。
欺骗是当今互联网安全人员正在处理的主要问题之一。
什么是IP地址欺骗?
IP欺骗是攻击者在攻击流量中发送伪造的源地址的一种方法,这意味着他们可以发送具有自己希望的IP地址的IP数据包。
攻击者大部分时间都使用欺骗手段,主要是出于以下原因。
- 进行DDOS攻击,并且他不希望目标计算机的响应到达他
- 破坏基于源的身份验证
可以通过使用反向路径过滤将欺骗控制到一定程度(尽管不完全)。
什么是反向路径过滤?
反向路径过滤是Linux内核以及那里的大多数网络设备采用的一种机制,用于检查接收数据包源地址是否可路由。
因此,换句话说,当启用了反向路径筛选的计算机接收到数据包时,该计算机将首先检查接收到的数据包的源是否可以通过其进入的接口到达。
- 如果可以通过它来的接口路由,则机器将接受该数据包
- 如果无法通过它来的接口进行路由,则计算机将丢弃该数据包。
最新的红帽机将为我们提供更多选择。
就接受流量而言,此选项比较宽松。
- 如果收到的数据包的源地址可通过计算机上的任何接口路由,则计算机将接受该数据包。
Red Hat 5/Centos 5机器中的反向路径过滤器(rp_filter)设置
在Linux机器的反向路径过滤中,像许多其他内核设置一样,过滤是由sysctl处理的。
机器上的当前值可以通过以下方法找到。
[root@localhost ~]# cat /proc/sys/net/ipv4/conf/default/rp_filter 1 [root@localhost ~]#
让我们先了解rp_filter的布尔值,然后再进行配置。
1表示内核将通过确认反向路径来进行源验证。
0表示没有源验证。
前面显示的/proc/sys/net/ipv4/conf/default/rp_filter的输出指示任何新接口的反向路径过滤的默认值。
我们还可以仅在所需的接口上启用反向路径筛选,因为每个接口都有不同的rp_filter文件。
[root@localhost ~]# cd /proc/sys/net/ipv4/conf/ [root@localhost conf]# ll total 0 dr-xr-xr-x 2 root root 0 Nov 28 05:12 all dr-xr-xr-x 2 root root 0 Nov 28 05:12 default dr-xr-xr-x 2 root root 0 Nov 28 05:12 eth0 dr-xr-xr-x 2 root root 0 Nov 28 05:12 lo
上面显示的输出中的所有文件夹都有文件rp_filter。
如果我们非常严格地反向过滤,我建议我们通过修改文件/proc/sys/net/ipv4/conf/all/rp_filter文件来启用它。
这可以通过简单地将所需的布尔值(1或者0)重定向到所需的文件来完成。
[root@localhost conf]# echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter [root@localhost conf]#
现在,重新启动网络以使新配置生效。
但是,在/proc内部编辑文件根本不是一个好习惯。
因此,我们可以通过编辑sysctl.conf文件来完成此操作
[root@localhost conf]# sysctl -w "net.ipv4.conf.all.rp_filter=1" net.ipv4.conf.all.rp_filter = 1
将“ all”替换为默认值,eth0或者<或者我们希望的任何接口名称>
Red Hat 6/Centos 6机器中的反向路径过滤器(rp_filter)设置
如前所述,还有另一个选择是对通过计算机上所有接口接收到的数据包进行源验证。
换句话说,如果源地址可通过任何接口上的任何路由进行路由,则将接受数据包。
这就是所谓的松散模式反向过滤。
在redhat-linux 6中启用rp_filter的此模式的数值为2.
例如,我们可以简单地将值设置为2(如下所示)以启用此模式。
[root@localhost conf]# echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter [root@localhost conf]#
红帽企业版Linux 6中与rp_filter相关的其余设置与红帽5中的相同。