作者
胡楊月影
使用代理服務器自身的MAC地址檢查功能
Linux下使用較多的代理服務器是Squid和Socks
此處以Squid為例
說明如何檢查客戶端MAC地址
由於Squid的RPM發布版通常沒有啟用這一特性
這種版本使用MAC匹配會提示錯誤的acl類型
所以我們必須手工編譯源代碼
首先下載squid
x
src
tar
gz
然後用tar xvfz squid
tar
gz命令解開源代碼
並進入展開後的子目錄
用
/configure配置編譯選項
除了啟用自己需要的特性外
再加上參數
enable
arp
acl
即允許設置acl(Access Control List)為arp(MAC地址匹配)方式
然後執行make
make install
安裝完成後
就可以修改nf來匹配MAC地址了
如下所示
# 設置一個accept_group列表
該用戶的MAC地址為
:
:
:
:bb:
acl access_group arp
:
:
:
:bb:
# 根據最低安全要求
設置all列表
包含源IP地址為
/
即所有用戶
acl all src
/
# 允許accept_group組正常訪問
http_access allow accept_group
# 禁止其他所有未經授權的訪問
http_access deny all
啟動Squid
並配置正確的緩存目錄和端口轉發
當Squid收到請求時
無論請求用戶來自哪個IP地址或主機
它都會檢查其MAC地址
並且只允許MAC地址為
:
:
:
:bb:
的請求通過
這樣也可以實現客戶端零配置的用戶識別
對於使用iptables + Squid做透明代理的Linux網關來說
可以選擇iptables或Squid來識別用戶
利用靜態ARP表進行控制
我們知道
ARP(Address Resolution Protocol
地址轉換協議)被當作底層協議
用於IP地址到物理地址的轉換
在以太網中
所有對IP的訪問最終都轉化為對網卡MAC地址的訪問
不妨設想一下
如果主機A的ARP列表中
到主機B的IP地址與MAC地址對應不正確
由A發往B數據包就會發向錯誤的MAC地址
當然無法順利到達B
結果是A與B根本不能進行通信
Linux可以通過arp命令控制ARP轉換
即IP到MAC的轉換
因此
也能利用這一功能對用戶MAC地址進行匹配
下面我們就來看看arp命令的用法
輸入arp將顯示當前所有ARP轉換記錄
類似於這樣
Address HWtype HWaddress Flags Mask Iface
ether
:
:
:
:
:F
C eth
ether
:
:
:F
:
:
C eth
ether
:
:
E:F
:
:C
C eth
.
.
.
ether
:
:
E:F
:
:C
C eth
由此可以看到
當前系統保留的IP地址與MAC地址一一對應
並指明了硬件類型(Hwtype)和通信所使用的接口(Iface)
不過這些都是動態生成的
無需手工干預
我們要做的恰恰是手工干預這一過程
我們需要用到arp命令的另一重要功能
就是手工更改這一對應關系
此外
該命令還可以讀取文本文件中的ARP記錄
其默認文件是/etc/ethers
也就是說
當輸入ARP
f的時候
系統就會讀取/etc/ethers這個文件
並以其中的項目取代系統當前的ARP記錄
假設/etc/ethers文件內容如下
:
:
:
:bb:
然後執行命令arp
f
這時
我們查看系統ARP表
會發現無論
原來對應的MAC地址是什麼
都會被新的所取代
Address HWtype HWaddress Flags Mask Iface
ether
:
:
:
:
:F
C eth
ether
:
:
:F
:
:
C eth
ether
:
:
E:F
:
:C
C eth
.
.
.
ether
:
:
:
:bb:
C eth
此時
本機發往
的數據包目標MAC地址將由原來的
:
:
E:F
:
:C
改為
:
:
:
:bb:
顯然
如果
所在網卡的MAC地址並非
:
:
:
:bb:
數據包就無法到達正確的目的地
那麼它們也就無法通信了
這樣也達到了識別非法用戶的目的
當然
控制MAC地址的方法還不止這些
例如可以利用交換機的端口管理功能識別用戶
根據交換機的原理
它是直接將數據發送到相應端口
那麼就必須保有一個數據庫
包含所有端口所連網卡的MAC地址
由此可見
控制每個端口使用的MAC地址理論上是完全可行的
大部分中高端交換機如
Com SuperStack系列等
都具有這種功能
具體操作與交換機型號有關
這裡就不贅述
最後
提醒一下
MAC地址控制並非絕對保險
正如這個世界上沒有絕對解不開的密碼一樣
所謂安全都是相對於特定的環境而言
現在
很多網卡都支持MAC地址的軟件修改
Linux和Windows本身也都有辦法修改這一物理地址
不過由於這種方式相對穩定
摒棄了繁瑣的客戶端設置
對用戶完全透明
而且具備很強的可操作性
所以在某種程度上說是安全的
(責任編輯
郁單曰)
From:http://tw.wingwit.com/Article/program/Oracle/201311/18152.html