web-dev-qa-db-ja.com

lastbとiptablesを使用してブルートフォース攻撃をブロックする

Linux lastbコマンドを使用して、私のサーバーが世界中のさまざまなIPからブルートフォース攻撃を受けていることがわかりました。 lastbでブルートフォース攻撃者を検出し、iptablesでブロックするスクリプトを開発しました。スクリプトは次のとおりです。

#!/bin/bash

cd /root/
windowSize=100
tresh=10
lastb | head -n $windowSize | awk '{print $3}' | uniq -c > .ips
nlines=`wc .ips -l | awk '{print $1}'`
END=`expr $nlines - 1 `
for i in `seq 0 $END`;
do
        range=`expr $nlines - $i`
        count=`tail .ips -n $range | head -n 1 | awk '{print $1}'`
        if [ $count -gt $tresh ] ; then
                IP=`tail .ips -n $range | head -n 1 | awk '{print $2}'`
                if [ ! -z .blips ] ; then
                        touch .blips
                fi ;
                blocked=`cat .blips | grep $IP -c`
                if [ $blocked = '0' ] ; then
                        echo blocking $IP
                        iptables -A INPUT -s $IP -j DROP
                        echo $IP >> .blips
                fi ;
        fi;
done
rm .ips

このスクリプトをcrondで1時間ごとに実行すると、問題が発生する可能性がありますか?

2
lashgar

はい、システムに接続するIPアドレスが除外されていることを確認するための対策を講じていないため、システムから自分を締め出すことができます。

より良い解決策は、インストールすることです fail2ban これはあなたがやろうとしていることをするために広く使われています。

3
user9517

提案された解決策は、IPTABLESを保存しないという意味で欠けている(または賢い)ため、IPTABLESに加えられた変更は次回の起動時に失われます。

ブロックされたIPをコミットして保存する必要があります:/ sbin/service iptables save

変更が完了しました/ sbin/service iptables save rm .ips

一方、システムは自動化されているため、.blipsの変更を確認した後、手動でのみコミットするのが賢明かもしれません。

2
sakumatto

DenyHostsまたはFail2banは、ほとんどの自家製カスタムスクリプトよりもうまく機能します。

http://en.wikipedia.org/wiki/DenyHosts

http://en.wikipedia.org/wiki/Fail2ban