首頁 > 運維 > linux運維 > 主體

在Linux下如何批量屏蔽惡意IP位址防攻擊的案例分析

黄舟
發布: 2017-06-07 10:28:43
原創
2278 人瀏覽過

很多情況下,你可能需要在Linux下封鎖IP位址。例如,身為一個終端用戶,你可能想要免受間諜軟體或IP追蹤的困擾。如果你是系統管理員,你可能想要禁止垃圾IP位址存取你們的公司郵件伺服器。或者你因為一些原因想要禁止某些國家存取你的web服務。在許多情況下,然而,你的IP位址屏蔽清單可能很快就會成長到幾萬的IP。該如何處理這個?

解決方案: ipset + iblocklist2ipset

安裝

最簡單的方法就是yum安裝,但是該方法版本比較低,缺少一些使用的模組參數等,所以不大推薦;

yum install ipset -y
登入後複製

編譯安裝:

1.依賴環境:

yum install libmnl libmnl-devel kernel-devel libtool-devel -y
登入後複製

(新版本的安裝方法:git pull git://git.netfilter.org/libmnl.git  運行./autogen.sh)

(備註:如果只安裝libmnl時,會出現下面的報錯:

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/modules/2.6.32- 431.el6.x86_64/source

經過檢查發現這個軟連線/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  创建一个IP集pythontab,指定类型为hash:ip,设置ip集最多存储IP数为1000000
ipset add pythontab X.X.X.X  增加一个ip地址到IP集pythontab中去
ipset add pythontab X.X.X.X/24  增加一个网段到IP集pythontab中去
ipset dell pythontab X.X.X.X   删除IP集中指定的IP地址
ipset list 查看当前所有list
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位址停用

現在你應該看到了IP集合的強大了。一件繁瑣和費時的工作。 ##首先讓我們從iblocklist.com得到免費的黑名單

接下來我要使用一個名為iblocklist2ipset的開源Python工具來將黑名單轉換成IP集。

首先,你需要安裝了pip

使用的下方指令安裝iblocklist2ipset。

$ pip install iblocklist2ipset
登入後複製

在某些發行版如Fedora,你可能需要執行:

$ python-pip install iblocklist2ipset
登入後複製

現在到iblocklist.com,抓取任何一個P2P清單的URL(例如"level1"清單)。

下載解壓縮,然後儲存為txt文件,例如叫做pythontab.txt, 因為iblocklist2ipset只支援url取得list,所以把pythontab.txt放到你網站的任意目錄。例如: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
登入後複製

現在可以查看自動建立的IP集:

$ ipset list pythontab
登入後複製

這樣就省去了手動管理的麻煩。

注意,在centos下使用yum安裝的不是最新版,可能會不支援-f參數,導入黑名單文件,所以建議用源碼包安裝最新版本

以上是在Linux下如何批量屏蔽惡意IP位址防攻擊的案例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板