Linux下防御ARP欺骗

文章目录

  • 1 ARP 欺骗攻击简介
  • 2 ARP 欺骗攻击方法
  • 3 ARP 欺骗攻击如何防御
  • 4 防御 ARP 欺骗的具体方案
  • 5 是否防御成功

1 ARP 欺骗攻击简介

ARP 欺骗又称中间人攻击。

ARP 欺骗的两种方式参考:https://blog.csdn.net/qq_37969433/article/details/79587026

2 ARP 欺骗攻击方法

发动 ARP 欺骗的工具有 arpspoof,该工具可以模拟 ARP 欺骗,具体命令举例如下:

$ sudo arpspoof -i eth0 -t 192.168.1.22 192.168.1.1

该例子中 192.168.1.22 是目标地址,192.168.1.1 是伪装的地址。

该命令的目的就是修改 192.168.1.22 的 arp 表,将 192.168.1.1 跟攻击机的 mac 进行绑定,后续发送到 192.168.1.1 的数据包就直接发送到攻击机上。

3 ARP 欺骗攻击如何防御

防御 ARP 欺骗攻击的主要方法就是将 MAC 和 IP 进行绑定,然后将 MAC 跟 IP 无法匹配的 ARP 数据包进行丢弃,使得攻击机无法修改目标机内部的 ARP 表,从而达到防御的效果。

4 防御 ARP 欺骗的具体方案

我们常用的防火墙是 iptables,但是 iptables 只能防御网络层的攻击,对于 ARP 欺骗这种数据链路层的攻击无法防御,区别如下:

  • arptables 工作在数据链路层,用来过滤 ARP 报文。
  • ebtables 是以太网桥防火墙,以太网桥工作在数据链路层,ebtables 用来过滤数据链路层数据包。
  • iptables 工作在网络层,用来过滤 IP 报文。

所以需要采用如下方案:

  1. IP-MAC 静态绑定

    通过 arp 命令将 IP 和 MAC 进行绑定,命令如下:

    $ sudo arp -s ip_addr mac_addr
    

    该命令将 IP 和 MAC 静态绑定,而攻击机只能对动态的 arp 表进行改变,而无法对静态绑定的进行修改,故而形成保护。

  2. 通过 arptables 工具

    通过 arptables 配置内核进行防御,命令如下:

    $ sudo arptables -A INPUT -s ! ip_addr --source-mac mac_addr -j DROP
    

    该命令就是说若收到 mac 地址为 mac_addr 发送的 ARP 包,则判断该包发送源 IP 地址是否为 ip_addr,若不是,则将此包丢弃。

  3. 通过 ebtables 工具

    arptables 配置方便,使用简单,但是没有日志记录功能,所以这时候 ebtables 就派上用场了,它有日志记录功能。

    但是需要注意的是,ebtables 只能检测网桥的流量,若只需要针对某个网卡的流量进行检测,可以创建一个网桥,只添加该网卡到网桥中,具体如下:

    $ sudo brctl addbr br0
    $ sudo ifconfig br0 ip_addr netmask netmask_addr
    $ sudo brctl addif br0 eth0
    

    通过 ebtables 配置内核进行防御,命令如下:

    $ sudo ebtables -A INPUT -p arp --arp-ip-src ip_addr --arp-mac-src ! mac_addr -j DROP --log-level alert --log-arp --log-prefix "arp spoof!"
    

    该命令就是说若收到 mac 地址为 mac_addr 发送的 ARP 包,则判断该包发送源 IP 地址是否为 ip_addr,若不是,则将此包丢弃,并将报警记录到系统日志中。Ubuntu 中可以通过访问 /var/log/syslog 文件查看系统日志。

    注意: ebtables 可以通过命令查看是否有流量经过自定义规则,具体如下命令:

    $ sudo ebtables -t table_name -L --Lc
    

5 是否防御成功

判断是否被防御,最简单的就是通过查看目标机的 arp 表是否被改变,若 arp 表被改变,则代表防御失败;若未被修改,则代表防御成功。

arp 表通过命令:$ arp -a 查看

你可能感兴趣的:(网络安全,网络安全,linux)