使用IPtables+IPset屏蔽禁止國外IP訪問-與腳本小子SayGoodBye

作者博客上的地址:點擊此處

前言

近期筆者在東南沿海某數(shù)據(jù)中心托管的服務器上經(jīng)常出現(xiàn)ssh爆破登陸警告,Nginx日志中也出現(xiàn)不少腳本小子的試探痕跡。雖然不對安全構(gòu)成太大的威脅,但看起來實在難受。與托管方聯(lián)系,對方稱今年6月后不再提供路由保護 ::aru:unhappy::

無奈只能自己動手,豐衣足食。

屏蔽思想

從APNIC處獲取全球IPv4數(shù)據(jù),使用IPtables添加CN部分IP到ACCEPT規(guī)則中,其余DROP。因為逐條添加和加載文件會造成IPtables規(guī)則數(shù)過多,影響大并發(fā)性能,故轉(zhuǎn)為使用IPset構(gòu)建IP集合。

具體操作(以CentOS6為例)

安裝IPset

直接使用yum install ipset安裝即可

使用IPSet創(chuàng)建IP集合

ipset create mainland hash:net maxelem 65536
其中mainland是自己定義的IP集合名稱,可修改成你自己的名稱

編寫腳本自動執(zhí)行更新APNIC數(shù)據(jù)到IP集合

腳本內(nèi)容如下

#!/usr/bin/env bash
wget --no-check-certificate -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /home/mainland.txt
ipset flush mainland
while read ip; do
    ipset add mainland $ip
done < /home/mainland.txt
ipset save chnroute > /home/mainland.conf

假設(shè)腳本保存在/home/mainland.sh
給可執(zhí)行權(quán)限chmod +x /home/mainland.sh

設(shè)置Crontab定時每天零點更新一次IP集合

crontab -e
添加一行
0 0 * * * /home/mainland.sh

配置IPtables限制訪問

假設(shè)需要放通8888端口的TCP和UDP大陸訪問

iptables -A INPUT -m set --match-set mainland src -p tcp --dport 8888 -j ACCEPT
iptables -A INPUT -m set --match-set mainland src -p udp --dport 8888 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j DROP
iptables -A INPUT -p udp --dport 8888 -j DROP
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 項目上線之后,經(jīng)常會被一些爬蟲盯上,這些IP產(chǎn)生大量高頻請求,導致帶寬流量異常,對服務器造成負荷。針對這種問題可以...
    BrainYi閱讀 2,736評論 0 51
  • ipset是什么?ipset是iptables的擴展,它允許你創(chuàng)建 匹配整個地址集合的規(guī)則。而不像普通的iptab...
    化城閱讀 2,585評論 0 0
  • 提起老友,我不禁想起平明,我的初中同學,已是一位故友。 一起讀初中時,我們是同桌。當時在農(nóng)村,平明家境算比較好的了...
    種豆南山上閱讀 526評論 0 8
  • 雷潑萊拉 她有一個平民的名字,叫克萊岑莎-安娜-阿羅依佳-馮肯胡泊,今年三十九歲,生在齊勒塔爾一個小山村里,是個...
    精神燦爛閱讀 722評論 0 0
  • ...。。。...。。。...
    延小狼閱讀 119評論 0 0

友情鏈接更多精彩內(nèi)容