很多情況下,你可能需要在linux下屏蔽ip地址。比如,作為一個終端用戶,你可能想要免受間諜軟件或者ip追蹤的困擾。如果你是一名系統(tǒng)管理員,你可能想要禁止垃圾ip地址訪問你們的公司郵件服務器。或者你因一些原因想要禁止某些國家訪問你的web服務。在許多情況下,然而,你的ip地址屏蔽列表可能會很快地增長到幾萬的ip。該如何處理這個?
解決方案: iplinux + iblocklinux2ipset
linux:
最簡單的方法就是yum安裝,但是該方法版本比較低,缺少一些使用的模塊參數(shù)等,所以不大推薦;
yum?install?ipset?-y
編譯安裝:
1.依賴環(huán)境:
yum?install?libmnl?libmnl-devel?kernel-devel?libtool-devel?-y
(新版本的安裝方法:linux pull git://git.netfilter.org/libmnl.git ?運行./autogen.sh)
(備注:如果只安裝libmnl時,會出現(xiàn)下面的報錯:
checking?for?libmnl...?configure:?error:?Package?requirements?(libmnl?>=?1)?were?not?met: No?package?'libmnl'?found Consider?adjusting?the?PKG_CONFIG_PATH?environment?variable?if?you installed?software?in?a?non-standard?prefix. Alternatively,?you?may?set?the?environment?variables?libmnl_CFLAGS and?libmnl_LIBS?to?avoid?the?need?to?call?pkg-config. See?the?pkg-config?man?page?for?more?details. )
在編譯的時候可能提示找不到/lib/linuxs/2.6.32-431.el6.x86_64/source
經(jīng)過排查發(fā)現(xiàn)這個軟連接/lib/modules/2.6.32-431.el6.x86_64/build –>/usr/src/kernels/2.6.32-431.el6.x86_64 不存在
解決辦法:重新建立軟連接
ln?-sb?/usr/src/kernels/2.6.32-573.3.1.el6.x86_64?/lib/modules/2.6.32-431.el6.x86_64/build
在運行 ./autogen.sh時報錯:
找不到 /usr/share/libtool/
解決辦法:安裝libtool-devel工具包即可 yum install libtool-devel
2.編譯安裝ipset ?(linux kernel source code (version >= 2.6.32))
wget?-P?/usr/local/src?http://ipset.netfilter.org/ipset-6.26.tar.bz2 cd?/usr/local/src?&&?tar?xjf?ipset-6.26.tar.bz2?&&?cd?ipset-6.26 ./autogen.sh ./configure make make?modules make?install? make?modules_install
注意:不同linux內核使用不同版本的源碼包
附注:linux kernel source code (version >= 2.6.16 or >= 2.4.36)
編譯安裝:
wget?-P?/usr/local/src?http://ipset.netfilter.org/ipset-4.5.tar.bz2 cd?/usr/local/src?&&?tar?xf?ipset-4.5.tar.bz2?&&?cd?ipset-4.5 make?KERNEL_DIR=http://img.xue163.com/lib/modules/$(shell?uname?-r)/build?????#$(shell?uname?-r)使用shell命令獲取 make?KERNEL_DIR=http://img.xue163.com/lib/modules/$(shell?uname?-r)/build?install
常用使用命令:
ipset?list?查看ip集列表信息 ipset?create?pythontab?hash:ip?maxelem?1000000??創(chuàng)建一個IP集pythontab,指定類型為hash:ip,設置ip集最多存儲IP數(shù)為1000000 ipset?add?pythontab?X.X.X.X??增加一個ip地址到IP集pythontab中去 ipset?add?pythontab?X.X.X.X/24??增加一個網(wǎng)段到IP集pythontab中去 ipset?dell?pythontab?X.X.X.X???刪除IP集中指定的IP地址 ipset?list?查看當前所有l(wèi)ist ipset?save?pythontab?-f?pythontab.txt??將IP集pythontab中的信息保存到當前文件目錄下面的文件pythontab.txt中 ipset?destroy?pythontab???刪除指定的IP集pythontab?? ipset?restore?-f?pythontab.txt??將保存的pythontab.txt文件中的IP集信息重新導入到ipset中 其他命令參考?ipset?--help iptable命令參考: iptables?-I?INPUT?-m?set?--match-set?pythontab?src?-p?tcp?--destination-port?80?-j?DROP?#拒絕ipset?IP集pythontab中的地址訪問服務器的80端口 service?iptables?save service?iptables?restart
自動IP地址禁用
現(xiàn)在你應該看到了IP集合的強大了。維護IP黑名單是一件繁瑣和費時的工作。實際上,有很多免費或者收費的服務可以來幫你完成這個。一個額外的好處是,讓我們看看如何自動將IP黑名單加到IP集中。
首先讓我們從iblocklist.com得到免費的黑名單
接下來我要使用一個名為iblocklist2ipset的開源Python工具來將黑名單轉化成IP集。
首先,你需要安裝了pip
使用的下面命令安裝iblocklist2ipset。
$?pip?install?iblocklist2ipset
在一些發(fā)行版如Fedora,你可能需要運行:
$?python-pip?install?iblocklist2ipset
現(xiàn)在到iblocklist.com,抓取任何一個P2P列表的URL(比如”level1″列表)。
下載解壓,然后保存為txt文件,比如叫做pythontab.txt, 因為iblocklist2ipset僅支持url獲取list,所以把pythontab.txt放到你網(wǎng)站的任意目錄。比如:ipset目錄
$?iblocklist2ipset?generate?--ipset?pythontab?"http://www.pythontab.com/ipset/pythontab.txt"?>?pythontab.txt
上面的命令運行之后,你會得到一個名為pythontab.txt的文件。如果查看它的內容,你會看到像這些:
create?pythontab?hash:net?family?inet?hashsize?131072?maxelem?237302 add?pythontab?1.2.4.0/24 add?pythontab?1.2.8.0/24 add?pythontab?1.9.75.8/32 add?pythontab?1.9.96.105/32 add?pythontab?1.9.102.251/32 add?pythontab?1.9.189.65/32
你可以用下面的ipset命令來加載這個文件:
$?ipset?restore?-f?pythontab.txt
現(xiàn)在可以查看自動創(chuàng)建的IP集:
$?ipset?list?pythontab
這樣就省去了手動管理的麻煩。
注意,在centos下使用yum安裝的不是最新版,可能會不支持-f參數(shù),導入黑名單文件,所以建議用源碼包安裝最新版本