Linux下用arptables防arp攻擊__Linux

來源:互聯網
上載者:User

 綁定網關的mac


arp -s 192.168.1.1  00-1d-0f-2a-7f-e2
arp -s 192.168.1.12  00-1f-d0-de-2c-2b

配置 :防止ARP最有效方法是只允許網關的ARP包 ,我現在的環境網關IP:59.37.172.1  MAC: 00:23:89:4D:29:12

本機IP: 59.37.172.81  MAC: 00:E0:81:D2:75:C5

另外一台機器IP:59.37.172.80

 

要求 只允許和網關通訊(這象是費話,不和網關通訊資料怎麼才能夠出去呢)

# arptables -A INPUT --src-ip 59.37.172.81 --src-mac 00:23:89:4D:29:12 -j ACCEPT

#arptables -A INPUT --src-ip 59.37.172.1 --src-mac00:E0:81:D2:75:C5 -j ACCEPT

#arptables –P INPUT DROP

開啟arptables服務:chkconfig arptables on

arptables 可以當作是linux下的ARP防火牆

arptables 是一個使用者空間,用於管理核心中的ARP規則表,規則檢查處理的是ARP資料幀。(arptables 類似 iptable,但比iptables簡單,它需要載入核心模組arptable_filter)。

正常情況下,arptable_filter 只有一個表filter ,不指定-t 表名 時預設就是filter 表。
       filter 表有兩個鏈,一個是IN,表示外面發進來的ARP包;另外一個是OUT ,表示本機發出的ARP包。

      INPUT(發送幀的源主機),OUTPUT(本地產生的幀),FORWARD(由橋代碼轉寄的幀).

       內建的動作:ACCEPT 允許存取ARP包;DROP 丟掉ARP包;CONTINUE 繼續下一規則;RETURN 不在這個鏈中繼續進行匹配,返回到上一條鏈的下一條規則.

擴充動作:mangle: mangle ARP包
       --mangle-ip-s IP address
              Mangles Source IP Address to given value.
       --mangle-ip-d IP address
              Mangles Destination IP Address to given value.
       --mangle-mac-s MAC address
              Mangles Source MAC Address to given value.
       --mangle-mac-d MAC address
              Mangles Destination MAC Address to given value.
       --mangle-target target
              Target of ARP mangle operation (DROP, CONTINUE or ACCEPT -- default is ACCEPT).

來自百度百科:

有兩類,一類為命令類,包括
-A, --append chain rule-specification追加規則
-D, --delete chain rule-specification刪除指定規則
-D, --delete chain rulenum刪除指定位置的規則
-I, --insert chain [rulenum] rule-specification插入規雜
-R, --replace chain rulenum rule-specification替換規則
-L, --list [chain]列出規則
-F, --flush [chain]刪除所有規則
-Z, --zero [chain]清空所有計數
-N, --new-chain chain建立鏈
-X, --delete-chain [chain]刪除鏈
-P, --policy chain target指定預設目標
-E, --rename-chain old-chain new-chain重新命名鏈
-h,協助
另一類為參數
-s, --source [!] address[/mask]源地址
-d, --destination [!] address[/mask]目的地址
-z, --source-hw [!] hwaddr[mask]源mac
-y, --target-hw [!] hwaddr[mask]目的mac
-i, --in-interface [!] name受到這個包的網卡
-o, --out-interface [!] name要發送這個包的網卡
-a, --arhln [!] value[mask]
-p, --arpop [!] value[mask]
-H, --arhrd [!] value[mask]
-w, --arpro [!] value[value]
-j, --jump target跳到目標
-c, --set-counters PKTS BYTES計數
結合一些應用來熟悉arptables

arptables -F 清除filter 所有規則

arptables -L -n 列表filter 所有規則
2. 配置arptables
linux伺服器的網關MAC是00:24:51:E9:C7:10,同網段另一台伺服器192.168.1.10(主機名稱是nh-blade-67)的MAC地址是00:17:A4:A8:68:11

用命令列配置arp防火牆:
在eth0上如果源IP是192.168.1.10,並且源MAC不是00:17:A4:A8:68:11的話,就禁止這個資料楨。

CODE: /usr/local/sbin/arptables -A INPUT -i eth0 --src-ip 192.168.1.10 --src-mac ! 00:17:A4:A8:68:11 -j DROP
在eth0上如果源MAC不是00:24:51:E9:C7:10(網關的MAC地址),就禁止這個資料楨,這一條針對外網過來的訪問

CODE: /usr/local/sbin/arptables -A INPUT -i eth0 --src-mac ! 00:24:51:E9:C7:10 -j DROP
注意:添加arp防火牆策略的次序不能錯,針對網關MAC地址的語句必須放在最後,否則本網段IP的存取原則不能生效。

把以上策略寫入設定檔:
/usr/local/sbin/arptables-save > /etc/sysconfig/arptables



為什麼以及如何使用arptables

之前一直都只有去搞IPTABLES,由於昨天又瘋了,對安全又謹慎了,於是來看了下防止ARP欺騙。


記得以前有個arp的類似iptables的東西,於是Google了一下,是arptables,安裝完之後看了網上的教程,感覺跟iptables的命令很像,都是那麼


root@LK:/home/cclove # [ip|arp]tables -A INPUT –-src-mac ! [MAC Address] -j DROP




然後就有個感覺,用iptables能不能實現arptables的功能呢。



當然不能。


因為當需要發送一個資料包到未知目的MAC地址的時候,資料包完成網路層的封裝,封裝到資料連結層 ,因為不知道目的MAC地址,會觸發ARP請求,請求目的IP地址的MAC地址。


由此可見ARP協議是當 資料包在資料連結層需要往外發送的時候體現它的作用的,而iptables只是工作在網路層的,對這個根本不能控制。


看了下iptables的man手冊,只能指定源地址
   mac
       [!] --mac-source address
              Match  source  MAC  address.    It   must   be   of   the   form
              XX:XX:XX:XX:XX:XX.   Note that this only makes sense for packets
              coming from an Ethernet device and entering the PREROUTING, FOR‐
              WARD or INPUT chains.




就是說,只能在INPUT鏈上指定mac地址以限制資料包進入本機,雖然那mac地址是資料連結層的東西,但是在Linux裝置驅動的核心代碼中有個sk_buff結構,它裡麵包含了目的地址的mac地址,所以iptables是可以指定源mac地址過濾資料包的,但是由於資料包被封裝的時候在網路層是沒有MAC地址的,所以不能在OUTPUT鏈指定目的MAC地址來限制資料包。


看來必須得用arptables了


首先安裝arptables, 在ubuntu:
root@LK:/home/cclove # apt-get install arptables




然後設定預設策略,預設拒絕所有主機的arp查詢:
root@LK:/home/cclove # arptables -P INPUT DROP




查看路由表確定網關IP,有UG標誌的就是了:
root@LK:/home/cclove # route -n
核心 IP 路由表
目標            網關            子網路遮罩        標誌  躍點   引用  使用 介面
10.0.33.0       0.0.0.0         255.255.255.128 U     1      0        0 eth0
172.16.37.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
0.0.0.0         10.0.33.1       0.0.0.0         UG    0      0        0 eth0




然後查看網關的MAC地址:
root@LK:/home/cclove # arp -n | grep 10.0.33.1
10.0.33.1                ether   00:23:89:4d:27:e1   C                     eth0




添加一條記錄允許網關的arp查詢:
root@LK:/home/cclove# arptables -A INPUT --src-mac 00:23:89:4d:27:e1 -j ACCEPT




這樣就可以了,區域網路其它電腦的arp查詢都被過濾掉了,當然,ftp、samba等的檔案分享權限設定就不能進行了。


然後也可以把其它需要聯絡的電腦的MAC地址添加可以arp查詢,就像添加網關地址可以一樣。


或者也不只是只指定MAC地址,也可以像IPTABLES那樣指定IP段:
root@LK:/home/cclove # arptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.