前書き
通常、外部ネットワークIPを使用してサーバーにログインすると、他の誰かのポートがスキャンされているために、サーバーが悪意を持って何度もログインしていることがよくあります。
There were 56 failed login attempts since the last successful login.
煩わしいことではありませんか?パスワードが複雑でファイアウォールがありますが、悪意を持って試す人がいることを保証するのは難しいので、スクリプトを書いて定期的にIPブラックリストのバッチを収集するのが最も簡単なテストです。操作は次のとおりです。
cat /usr/local/sbin/secure_ssh.sh
#! /bin/bash
#从secure文件中提取反复登录失败的IP名单作为黑名单列表并统计次数
#格式大概是这样 36.37.122.47=22 IP=次数
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/sbin/blackList.txt
#一旦当前IP超过20次尝试,就关小黑屋
for i in `cat /usr/local/sbin/blackList.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 20 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
echo "新增异常IP: $IP" >> /usr/local/sbin/secure_ssh.log
fi
fi
done
たまに一度実行しても窒息しないことがあります。定期的に実行するcrontabを作成してください
#5分ごとの実行を表します
echo "*/5 * * * * root bash /usr/local/sbin/secure_ssh.sh" >> /etc/crontab
最後に、/ etc /hosts.denyファイルで効果を確認できます。
総括する
もちろん、パスワードや証明書を定期的に変更することをお勧めします。ファイアウォールはポートを制限し、ソースを制限するなど、
すべての対策を講じる必要があります。