我看很多人写 Linux 系统SSH 登录失败的内容会记录到/var/log/secure文件,没有人写Ubantu的,Ubantu的记录文件在/var/log/auth.log里,
先在/etc/hosts.allow: 设置允许哪些IP访问主机
sshd:XXX.XXX.XXX.XXX:allow
sshd:1.2.3.4:allow
sshd:123.234.56.78:allow
XXX.XXX.XXX.XXX代表你本地ip,如果你是动态的,ip只换后两位,那么可以跟我一样(建议动态ip不要继续往下看了,不要搞坑太大)
sshd:123.234.:allow
在root文件夹建立一个ssh.sh文件
内容:
cat /var/log/auth.log | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
#cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
DEFINE="5"
for i in `cat /root/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ]
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ]
then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
-----------------------------------------
然后 给个执行权限
#chmod +x /root/ssh.sh
#cat /etc/hosts.deny
测试一下
# cd /root
# ./ssh.sh
#cat /etc/hosts.deny
看看有区别吗
-----------------------------------------
将ssh.sh脚本放入cron计划任务,每1小时执行一次。
# crontab -e
7 */1 * * * sh /usr/local/bin/secure_ssh.sh