SSH安全是服务器运维的重中之重,实际运用中常常有些家伙喜欢尝试扫描破解密码,限制登录IP和加入尝试密码错误两次后自动封锁IP后会安全一些

限制IP

1 编辑/etc/hosts.allow
添加  sshd:192.168.2.1:allow 192.168.2.1是允许的IP

或者  sshd:192.168.2.:allow 192.168.2.是2段

添加  sshd:all:deny 禁止其他IP登录  这行也可以加在/etc/hosts.deny

 

2 编辑/etc/ssh/sshd_config
添加  allowusers   xxxx@192.168.2.1 xxxx是允许的用户名

重启SSH

 

自动屏蔽多次尝试密码的用户

写脚本从日志中筛选出登录失败2次以上的用户添加到iptables禁止

 

脚本-网上找的。

 

#!/bin/sh #### 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数 SCANNER=`grep "$(date -d -1min|awk '{print substr($0,10,7)}')" /var/log/secure|awk '/Failed/{print $(NF-3)}'|awk -F":" '{print $NF}'|grep -v from|sort|uniq -c|awk '{print $1"="$2;}'` echo $SCANNER for i in $SCANNER do # 取认证失败次数 NUM=`echo $i|awk -F= '{print $1}'` # 取其 IP 地址 IP=`echo $i|awk -F= '{print $2}'` echo $NUM echo $IP # 若其在失败次数超过 2 次且之前没有被阻断过,那么添加一条策略将其阻断,并记录日志 if [ $NUM -gt 2 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ] then iptables -I INPUT -s $IP -m state --state NEW,RELATED,ESTABLISHED -j DROP echo "`date` $IP($NUM)" >> /var/log/scanner.log fi done  #执行方式 #chmod 755 /root/jinzhiip.sh #vi /etc/crontab #*/1 * * * * root /root/jinzhiip.sh #用 crond 来运行,1 分钟运行 1 次 #运行效果 #iptables -vnL INPUT #查看日志#cat /var/log/scanner.log #清除所有拦截 #iptables -F