Linux:记录可疑的火星数据包/不可路由的源地址

时间:2020-01-09 10:41:46  来源:igfitidea点击:

如何在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