linux防火墙如何防御ARP攻击?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux防火墙如何防御ARP攻击?相关的知识,希望对你有一定的参考价值。

请各位大虾知道下,最好有详细做法!

windows下放arp攻击可以用金山ARP防火墙,把网关ip和MAC填上,然后选项里把安全模式的钩勾上就基本没什么问题。Linux没找到这么现成的东西,baidu google上找了一些方法,都自己试过一遍,不是非常管用。

进行arp攻击要做两件事情:
1、欺骗目标机器,攻击机器A告诉目标机器B:我是网关!
2、欺骗网关,攻击机器A告诉网关:我是B!

也就是A进行双向欺骗。
这样做以后目标机器B发给网关的数据包都让攻击机器A给没收了,没有发给网关,所以B就上不了网了。要让B能上网,A需要将从B收到的包转发给网关。(有时候开P2P终结这之类的软件的时候发现别人上不了网了,有时候是因为自己有一个NB的防火墙,有时侯是其他原因,从被控制的机器上发过来的包没有能转发给网关,所以。。。)

我在网上找了一些关于Linux怎么防arp攻击的文章,基本上有这么几种做法。
1、绑定IP-MAC。通过arp -s 或者 arp -f。我就咬定哪个是网关了,你们谁说的话我都不信!
但是有个缺点,必须双向绑定IP-MAC,如果你无法控制路由器,不能在网关那里设置静态IP,这个方法就无效了。
2、既然控制不了网关,我只能告诉网关哪个才是真正的我了。向网关发送自己的IP和MAC。也就是告诉网关:我才是XXX。
(1)用arping,或者arpspoof(arpsniffer)。
命令:arping -U -I 网卡接口 -s 源IP 目标IP
由于命令里面没有指定网关的MAC,所以形同虚设,效果不好。
(2)用arpoison或者ARPSender,可以指定MAC,效果算是比较好,但有时候还是不行。
命令:arpoison -i 网卡接口 -d 网关IP -s 我的IP -t 网关MAC -r 我的MAC
参考了这篇文章: http://hi.baidu.com/yk103/blog/item/f39e253f9d6aeeed55e72361.html
我用Wireshark看了一下,发现虽然我指定了目标的MAC,但是我的机器依然会间歇性地往攻击机器发送我的IP和MAC,然后攻击机器利用我的MAC进行双向欺骗。

所以我想,有没有什么办法不让除了网关之外的其他人知道我的MAC呢?后来就找到了一下这篇文章。

文章地址: http://www.kanwi.cn/read-348.html
文章内容:(因为原文地址访问非常慢所以在这里贴出来)
Linux/FreeBSD防止ARP欺骗的一种 被动方法(隐藏MAC)
作者: Knight 日期: 2008-11-17 14:15

文章作者:Helvin
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

首先对国内某些IDC不负责任的行为表示抗议

一般欺骗机器通过ARP Request获得网关的MAC,然后同样方法获得你服务器的MAC进行双向欺骗,然后sniffer密码,挂马之类。
国内几乎所有的IDC都是几百服务器公用一个网关的。然后上百个服务器总有几个有漏洞的,然后你就被ARP欺骗挂马或者抓密码了

下面介绍的是Linux 利用arptables来防止ARP Request获得你的MAC。这样攻击者会认为你的服务器是不存在的(本来很复杂的,需要patch编译内核什么的,上周才发现还有一个 arptables,免编译内核,现在把方法写一下)

Debian/Ubuntu:(runas sudo)CentOS/RHAS 叫arptables_jf
引用:

apt-get install arptables
arptables -A INPUT --src-mac ! 网关MAC -j DROP
arptables -A INPUT -s ! 网关IP -j DROP

如果你有本网的内网机器要互联,可以 引用:

arptables -I INPUT --src-mac 你的其他服务器MAC ACCEPT

如果你的MAC已经被欺骗机器拿到,那只能ifconfig ethx hw ether MAC来修改了

有一定的危险性,请酌情测试,你也可以疯狂刷新网关+本机ARP绑定,看具体需要
还要注意这个时候不要发出ARP Request到除网关以外的其他IP,其后果可能是被其他机器拿到MAC

补充一个FreeBSD下的隐藏MAC的方法
首先sysctl net.link.ether.ipfw=1开启IPFW ether层过滤功能(网桥模式要使用sysctl net.link.ether.bridge_ipfw=1)
然后
ipfw add 00005 allow ip from any to any MAC 网关MAC any /* 打开你到网关的通信 */
ipfw add 00006 allow ip from any to any MAC any 网关MAC /* 打开网关到你的通信 */
/* ........中间你可以添加本网段内需要互联的IP地址MAC双向通信........ */
ipfw add 00010 deny ip from any to any MAC any any /* 关闭所有其他MAC的任何响应 */

如果服务器作为内网网关使用,可以在内网网卡界面
ifconfig em1 -arp /* 关闭ARP响应(假设em0是内网网卡) */
arp -f /etc/arp.list /* 设置静态ARP表 */
以下是ARP(8) 关于arp.list格式的描述,
Cause the file filename to be read and multiple entries to be set
in the ARP tables. Entries in the file should be of the form

hostname ether_addr [temp] [pub]

with argument meanings as given above. Leading whitespace and
empty lines are ignored. A `#' character will mark the rest of
the line as a comment.

我觉得可以把 绑定IP-MAC + arposion + MAC隐藏的方法综合起来
转自 http://hi.baidu.com/aj_shuaikun/blog/item/ab39b3d982a59fe038012fd0.html
参考技术A 安装金山贝壳ARP防火墙
http://www.beike.cn/arp.html主要闪光点:
1.主动防御:主动向网关通告本机的真实地址(MAC地址),保障安全上网,不受ARP欺骗影响。2.拦截IP地址冲突:在系统内核层拦截接收到的IP冲突数据包,避免本机因IP地址冲突造成掉线。3.拦截外部ARP攻击:在系统内核层拦截接虚假的ARP数据包,保障本机对网络地址识别的正确性。4.拦截对外ARP攻击:在系统内核层拦截本机对外的ARP攻击数据包,防止本机感染病毒/木马后成为攻击源。5.安全模式:不响应除网关外的其它机器发送的ARP请求,达到隐身效果,避免受到ARP攻击。6.查杀盗号木马:集成《贝壳木马专杀》查杀盗号木马功能,保护计算机不受木马/病毒的侵害。
参考技术B 在防火墙里 设置自动拦截ARP攻击包 默认的就已经选上了 自己再详细设置吧

arpspoof安装和5分钟基于linux-kali的arp攻击防御示例(保姆级图文)网络工程

目录


欢迎关注 『网络工程专业』 系列,持续更新中
欢迎关注 『网络工程专业』 系列,持续更新中

温馨提示:对虚拟机做任何设置,建议都要先快照备份!

温馨提示

请不要在室友打游戏的时候用arp攻击他的网络,会造成室友无法上网!


安装arpspoof工具

  • 查看arpspoof工具版本
arpspoof

如果提示没有工具就要安装了。

apt-get install -y dsniff ssldump

进行arp攻击

192.168.1.97主机向192.168.1.131网关发起arp攻击。

arpspoof -t 192.168.1.97  192.168.1.131  -i eth0

名字
arpspoof - 截获交换局域网中的数据包

用法
       arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

描述
       arpspoof通过伪造的ARP响应包改变局域网中从目标主机(或所有主机)到另一个主机(host)的数据包转发路径。这是交换局域网中嗅探网络流量的一种极为有效的方法。
       内核IP转发(或如fragrouter这样的、用户层面的、能完成同样功能的软件)必须提前开启。

参数
       -i interface
              指定要使用的接口(即指定一块网卡)

       -c own|host|both
              指定在恢复ARP配置时使用的硬件地址;当在清理(cleaning up)时,数据包的源地址可以用自己的也可以用主机(host)的硬件地址。
              使用伪造的硬件地址可能导致某些配置下的交换网络、AP网络或桥接网络通信中断,然而它比起默认值————使用自己的硬件地址要工作地更为可靠。

       -t target
              指定一个特殊的、将被ARP毒化的主机(如果没有指定,则认为是局域网中所有主机)。重复可以指定多个主机。

       -r     毒化两个主机(目标和主机(host))以捕获两个方向的网络流量。(仅仅在和-t参数一起使用时有效)

       host   host是你想要截获数据包的主机 (通常是网关)。

arp防御简单测试

防御的思路

动态ARP检测:
①交换机记录每个接口对应的IP地址和MAC,即port<->mac<->ip,生成DAI检测表;
②交换机检测每个接口发送过来的ARP回应包,根据DAI表判断是否违规,若违规则丢弃此数据包并对接口进行惩罚。

可以尝试用一些常见软件,测试一下arp防御,后续会出博客介绍如何防御


总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-3-6

欢迎关注 『网络工程专业』 系列,持续更新中
欢迎关注 『网络工程专业』 系列,持续更新中
【网络工程】vmware虚拟机连接本机网络实现上网(保姆级图文)
【更多内容敬请期待】


以上是关于linux防火墙如何防御ARP攻击?的主要内容,如果未能解决你的问题,请参考以下文章

linux防火墙

arpspoof安装和5分钟基于linux-kali的arp攻击防御示例(保姆级图文)网络工程

icmp dos和arp dos 攻击模拟实验

Crowdsec:一款面向Linux的现代化协作式大型多人防火墙

Screen OS防火墙DoS攻击的检测和防御

如何检测ARP是不是被攻击