Linux系统安全03 使用 arptables 阻止arp欺骗,保护内网安全

如果iptables是linux下工作于网络层和传输层的防火墙软件,那么arptables就是工作于数据链路层的防火墙软件。arptables主要是基于IP地址和MAC地址来匹配数据包,并进行相应的处理。arptables的命令格式与iptables十分类似,了解iptables的朋友可以秒懂arptables的使用。

arp数据包通常不会跨路由器传播,因此主要的防护目标是局域网。身边人最可怕,原因有二,其一:身边人难于防范,身边人几乎了解你的一切并可以直接接触你的一切。其二:身边人一旦决定作出某种对你不利的行为,其伤害值往往极大,甚至足以造成毁灭性打击的后果。社会环境下如此,网络环境下尤其如此。arp欺骗就是一个典型例子,本博客不打算详细介绍arp欺骗的原理,只想说arp欺骗的危害堪比电信诈骗,甚至比电信诈骗更可恶。

本博客直接给出arptables的一个配置。本配置的作用是阻止除了局域网网关之外的全部局域网数据包,即在数据链路层实现了360网络防火墙的局域网保护功能。本配置仅仅在主机端屏蔽了任何来自局域网中非网关的arp请求与应答数据包。如果需要完全阻止arp欺骗,还需要在网管上进行类似的配置,即进行各个主机的ip地址和arp地址的绑定的设定工作。

同时,在本主机上还可以使用arp -s 命令静态绑定网关的ip地址和mac地址。

为了避免泄露网络隐私,本文涉及的所有ip地址和mac地址全部以aa,bb之类的字母代替。

 1 [u@11 ~]$ sudo cat /etc/arptables-rules
 2 [sudo] password for u:
 3 #!/bin/bash
 4 
 5 MAC_OFFSET=1
 6 MAC_SIZE=17
 7 IP_OFFSET=19
 8 IP_SIZE=15
 9 
10 
11 ETH_WAN=eth1
12 IP_ME_WAN=11.bb.bb.bb
13 MAC_ME_WAN=xx:xx:xx:xx:xx:xx
14 
15 #局域网网管的IP地址和MAC地址。
16 IP_GW_WAN=11.aa.aa.aa
17 MAC_GW_WAN=yy:yy:yy:yy:yy:yy
18 
19 #本机的IP地址和MAC地址。
20 ETH_LAN=eth0
21 IP_ME_LAN=11.cc.cc.cc
22 MAC_ME_LAN=zz:zz:zz:zz:zz:zz
23 
24 
25 #本机允许访问的局域网其它主机或本机的IP地址和MAC地址。
26 ARPTABLE_LAN="aa:aa:aa:aa:aa:[email protected]  bb:bb:bb:bb:bb:[email protected] cc:cc:cc:cc:cc:[email protected]"
27 
28 #清空和重置各个规则链、计数器。
29 arptables -F
30 arptables -X
31 arptables -Z
32 
33 #初始化默认设定为DROP。
34 arptables -P INPUT DROP
35 arptables -P OUTPUT DROP
36 arptables -P FORWARD DROP
37 
38 #允许与网关之间的数据包。必须允许,否则无法通信。
39 arptables -A INPUT  -i ${ETH_WAN} --src-ip ${IP_GW_WAN} --src-mac ${MAC_GW_WAN}  --dst-ip ${IP_ME_WAN} --dst-mac ${MAC_ME_WAN} -j ACCEPT
40 arptables -A OUTPUT -o ${ETH_WAN} --src-ip ${IP_ME_WAN} --src-mac ${MAC_ME_WAN}  --dst-ip ${IP_GW_WAN}  -j ACCEPT
41 
42 #添加一个arp规则的函数
43 function   arp_rule_lan
44 {
45  eth=$1
46  meip=$2
47  memac=$3
48  shift 3
49 
50  arptable=$*
51  for macip in ${arptable}
52  do
53    mac=$(expr substr ${macip} ${MAC_OFFSET}  ${MAC_SIZE})
54    ip=$(expr  substr ${macip} ${IP_OFFSET}   ${IP_SIZE})
55    arptables -A INPUT -i ${eth} --src-ip ${ip} --src-mac ${mac} --dst-ip ${meip} --dst-mac ${memac} -j ACCEPT
56    arptables -A OUTPUT -o ${eth} --src-ip ${meip} --src-mac ${memac} --dst-ip ${ip} --dst-mac ${mac} -j ACCEPT
57  done
58 
59 
60 }
61 
62 
63 
64 arp_rule_lan ${ETH_LAN} ${IP_ME_LAN} ${MAC_ME_LAN} "${ARPTABLE_LAN}"
65 
66 
67 
68 
69 arptables-save > /etc/sysconfig/arptables
70 arptables -L -n -v --line-numbers

猜你喜欢

转载自www.cnblogs.com/coe2coe/p/9055830.html