shell指令碼結合iptables防連接埠掃描的實現_linux shell

來源:互聯網
上載者:User

網上有現在的防連接埠工具,如psad、portsentry,但覺得配置有點麻煩,且伺服器不想再裝一個額外的軟體。所以自己就寫了個shell指令碼實現這個功能。基本思路是:使用iptables的recent模組記錄下在60秒鐘內掃描超過10個連接埠的IP,並結合inotify-tools工具即時監控iptables的日誌,一旦iptables記錄檔有寫入新的ip記錄,則使用iptables封鎖源ip,起到了防止連接埠掃描的功能。

1、iptables規則設定

建立指令碼iptables.sh,執行此指令碼。

複製代碼 代碼如下:
IPT="/sbin/iptables"
$IPT --delete-chain
$IPT --flush

#Default Policy
$IPT -P INPUT DROP  
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

#INPUT Chain
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
$IPT -A INPUT -p tcp --syn -m recent --name portscan --rcheck --seconds 60 --hitcount 10 -j LOG
$IPT -A INPUT -p tcp --syn -m recent --name portscan --set -j DROP
#OUTPUT Chain
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

#iptables save
service iptables save
service iptables restart

注意:17-18行的兩條規則務必在INPUT鏈的最下面,其它規則自己可以補充。

2、iptables日誌位置更改

編輯/etc/syslog.conf,添加:
複製代碼 代碼如下:
kern.warning /var/log/iptables.log

重啟syslog
複製代碼 代碼如下:
/etc/init.d/syslog restart


3、防連接埠掃描shell指令碼

首先安裝inotify:
複製代碼 代碼如下:
yum install inotify-tools

儲存以下代碼為ban-portscan.sh
複製代碼 代碼如下:
btime=600 #封ip的時間
while true;do
    while inotifywait -q -q -e modify /var/log/iptables.log;do
        ip=`tail -1 /var/log/iptables.log | awk -F"[ =]" '{print $13}' | grep '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'`
        if test -z "`/sbin/iptables -nL | grep $ip`";then
            /sbin/iptables -I INPUT -s $ip -j DROP
            {
            sleep $btime && /sbin/iptables -D INPUT -s $ip -j DROP
            } &
        fi
    done
done

執行命令開始啟用連接埠防掃描
複製代碼 代碼如下:
nohup ./ban-portscan.sh &

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.