Linux:记录可疑的火星数据包/不可路由的源地址
如何在Linux操作系统上记录具有不可路由源地址的数据包。
如何在Debian,Ubuntu,CentOS/RHEL或者任何基于Linux的服务器上记录欺骗数据包?如何在Linux操作系统上记录火星数据包(来自火星的数据包)?
引言:火星数据包不过是IP数据包,它指定了保留给Internet号码分配机构(IANA)专用的源地址或者目标地址。以下是此类地址块的示例:
- 10.0.0.0/8
- 100.64.0.0/10
- 172.16.0.0/12
- 192.0.0.0/24
- 192.168.0.0/16
- 127.0.0.0/8
- 224.0.0.0/4
- 240.0.0.0/4
- ::/128
- ::/96
- :: 1/128
Linux:记录可疑火星数据包
在公共Internet上,这样的数据包(火星人)源地址被欺骗,并且不能按声明的那样起源,或者无法传递该数据包。
根据RFC 6890,IPv4和IPv6火星数据包的源或者目标地址都在特殊用途范围内。
记录mart难者数据包有什么用处
如前所述,火星数据包是一种具有无法通过公共Internet路由的源地址的数据包。
这样的数据包浪费了服务器上的资源。
通常,火星且无法路由的数据包用于危险目的或者DoS/DDOS服务器。
因此,您必须尽早丢弃坏的火星数据包,然后登录到服务器进行进一步检查。
如何在Linux上记录火星数据包?
您需要使用sysctl命令命令来查看或者设置Linux内核变量,该变量可以将具有不可路由的源地址的数据包记录到内核日志文件(例如/var/log/messages)中。
查看当前设置
使用sudo命令执行以下sysctl命令或者以root用户身份运行它:
# sysctl -a| grep martians $ sudo sysctl -a| grep martians
确定Linux上是否记录了可疑数据包,值0表示可疑火星数据包未记录在系统上。
如何在Linux上记录可疑的火星数据包?
您需要在/etc/sysctl.conf
文件中将以下变量设置为1:
- net.ipv4.conf.all.log_martians
- net.ipv4.conf.default.log_martians
编辑文件/etc/sysctl.conf,执行:
# vi /etc/sysctl.conf
追加/编辑如下:
net.ipv4.conf.all.log_martians=1 net.ipv4.conf.default.log_martians=1
保存并关闭文件。
要加载更改,请执行:
# sysctl -p
如何在命令行上修改活动的内核参数?
另外,您可以使用以下bash for循环语法切换活动的内核参数:
## Grab all Linux kernel vars in $x ## x=$(sysctl -a| grep martians | awk '{ print }') ## Just display it on screen ## echo "$x" ## Alright, toggle all vars to 1 or 0 as per your requirements ## for i in $x do /sbin/sysctl -w ${i}=1 done ## Verify settings ## sysctl -a| grep martians
使用for循环记录可疑数据包
如何查看Linux上已记录的可疑火星数据包日志?
使用grep命令,如下所示:
cd /var/log grep -i --color martian messages*
输出示例:
messages-20120101:Dec 31 09:25:45 theitroad-router kernel: martian source 74.xx.47.yy from 10.13.106.25, on dev eth1 messages-20120101:Dec 31 09:25:53 theitroad-router kernel: martian source 74.xx.47.yy from 10.13.106.25, on dev eth1 messages-20120101:Dec 31 09:26:10 theitroad-router kernel: martian source 74.xx.47.yy from 10.13.106.25, on dev eth1 messages-20120101:Dec 31 14:04:12 theitroad-router kernel: martian source 74.xx.47.yy from 10.1.97.141, on dev eth1
如何使用防火墙阻止火星数据包?
了解如何使用iptables阻止试图欺骗服务器并声称数据包来自本地地址/网络的欺骗和错误地址攻击。
记录和丢弃具有可疑源地址的数据包
## eth1 is wan port on server ## /sbin/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP DROP SPOOF A: " /sbin/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j LOG --log-prefix "IP DROP SPOOF B: " /sbin/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j LOG --log-prefix "IP DROP SPOOF C: " /sbin/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j LOG --log-prefix "IP DROP MULTICAST D: " /sbin/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j LOG --log-prefix "IP DROP SPOOF E: " /sbin/iptables -A INPUT -i eth1 -d 127.0.0.0/8 -j LOG --log-prefix "IP DROP LOOPBACK: " /sbin/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP /sbin/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP /sbin/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP /sbin/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP /sbin/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP /sbin/iptables -A INPUT -i eth1 -d 127.0.0.0/8 -j DROP /sbin/iptables-save > /root/my-iptables.rules