操作系统对不同类型的数据包的检测经常与防火墙的检测重叠。
.icmp_echo_ignore_broadcasts
通知内核将ICMP反射请求直接丢弃到广播地址或多播地址
#Enable broadcast echo Protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
.用于丢弃所有入站反射请求消息,
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
.源路由现在很少被合理地使用,防火墙一般会丢弃所有源路由数据包, 下面的命令将丢弃源路由数据包
#Disable Source Routed Packets
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
.TCP的SYN缓冲(cookies)是一种快速检测和防御SYN洪水攻击的机制, 下面的命令可以启用SYN缓冲
#Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
.邻近的路由器会向主机发送ICMP重定向消息,目的是通知主机找到了一条更短的路由路径。此时, 主机和两个路由器都在同一网络, 原来的路由器将新的路由器作为下一跳并向其发送数据包。
路由器可以向主机发出重定向消息,但主机不会,主机接收重定向消息并将新网关加入到路由缓存中。 但如果重定向消息所标示的新网关地址所在的网络,与此消息传送时经过的网络不同, 那么重定向消息应被丢弃,或者,如果重定向消息的发送源对于指定的目的地址来说,不是第一跳网关, 重定向消息也要被丢弃。启用重定向的命令如下
#Disable ICMP Redirect Acceptance
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
#Don't send Redirect Messages
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
.rp_filter会试图实现源地址确认
一个入站的数据包中带有一个源地址如果主机中的数据包转发表指出, 用该数据包中的这个源地址做为目的地址转发另一个数据包却不能将其从入站数据包进入的接口发出去的话,该入站数据包将会被自动丢弃。 如果得以实现, 路由器会默认启用这一功能, 但路由器中一般不启用这一地址确认功能, 下面的命令会去掉这项功能
#Drop Spoofed Packets coming in on an interface, which if replied to, would result in the reply going out a different interface
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done
.log_martians记录来自不太可能的地址的数据包, 不太可能的源地址包括多播地址和广播地址,0和127开头的网络, 以及E类保留地址空间。 不太可能的目的地址包括0.0.0, 网络中的0号主机, 以127开头的网络中的所有主机, 以及E类保留地址。
现在Linux网络代码检测上面提到的地址,但不对私有地址进行检测(实事上,除非知道其网络接口,否则也不能进行检测)。log_martians并不妨碍数据包的正确性检测, 它只影响日志的记录, 可以用下面的方法来设置它:
#Log packets with impossible address:
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
|