失败登录次数统计
lastb | awk '{ print $3 " " $1 }' | sort | uniq -c | sort -n
若var/log/secure没有记录登录失败的信息,则需要开启ssh设置,编辑/etc/ssh/sshd_config文件
syslogFacility AUTHPRIV
新建文件secure_ssh.sh,内容如下:
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /app/soft/script/black.list
for i in `cat /app/soft/script/black.list`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 10 ]; then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
添加可操作权限
chmod +x secure_ssh.sh //赋权
添加到系统定时任务 crontab -e
*/10 * * * * /app/soft/script/secure_ssh.sh
若hosts.allow、hosts.deny配置不生效的解决方法
解决方法如下:
hosts.allow和hosts.deny属于tcp_Wrappers防火墙的配置文件,而用tcp_Wrappers防火墙控制某一服务访问策略的前提是,该服务支持tcp_Wrappers防火墙,即该服务应用了libwrapped库文件。
查看某服务(如ssh)是否应用了libwrapped库文件的方法是:
# ldd /usr/sbin/sshd |grep libwrap.so.0
没有显示,表示此服务器上安装的SSH没有应用libwrapped库文件,也就不能用tcp_Wrappers防火墙控制访问策略。(一般情况下服务器默认安装的SSH都是支持libwrapped库文件,这台服务器不清楚为什么不支持)
最终解决方法是重新安装SSH。
# yum -y remove openssh
# yum -y install openssh
# yum -y install openssh-server
安装完成后再次查看是否应用了libwrapped库文件,显示支持。
# ldd /usr/sbin/sshd |grep libwrap.so.0 libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3fb7f09000)
再测试SSH登陆,配置生效