服務器運行環境是Tomcat,現在要實現的目的是,只允許特定的IP訪問某個目錄,
一種方法是在tomcat配置文件server.conf中,使用RemoteAddrValve對虛擬主機做訪問控制。
另外一種方法可以通過iptables規則。個人比較喜歡iptables
例如:禁止訪問http://192.168.137.254:10000/managersns 這個路徑,只允許192.168.137.101訪問
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP
以上規則是正對eth0網卡,可以跟蹤自己需求修改。
參數說明:
-m string
使用string功能,string是iptables的一個module,也就是做字符串匹配的。
–string “xxxx”
定義字符串內容,可以是URL裡任意字符,如果是需要block下載某些類型的文件或請求,這個有很大的發揮空間,可自由想象喔。
–algo bm
設置字符匹配的查詢算法,一般默認使用bm算法效果就可以了,另外還可以設置kmp算法,那是一種更復雜的算法,詳細內容可自行參見高等數學裡的資料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)
-j DROP
這在公司網絡禁用視頻網站是非常有效的,在網關服務器上設置:
iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP
iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP
iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP
iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP
其中各項參數的意義如下:
-A FORWARD
增加FORWARD鏈的規則,以上規則是針對啟用了路由功能(即:echo 1 > /proc/sys/net/ipv4/ip_forward)
如果是直接訪問,可使用的INPUT或OUTPUT。
設置符合此條件的包的處理方式,DROP即是丟棄,也是reject的意思。
iptables -A INPUT -m string --string "stringname" --algo bm -j DROP
推薦閱讀:
iptables—包過濾(網絡層)防火牆 http://www.linuxidc.com/Linux/2013-08/88423.htm
Linux防火牆iptables詳細教程 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables+L7+Squid實現完善的軟件防火牆 http://www.linuxidc.com/Linux/2013-05/84802.htm
iptables的備份、恢復及防火牆腳本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm