前提条件
1、确认/var/log/secure可以正常显示日志。
如果不行,修改/etc/ssh/sshd_config
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
修改完成后重启sshd和rsyslog服务
测试是否可以正常输出日志到/var/log/secure
2、sshd要支持libwrap.so
ldd /usr/sbin/sshd | grep libwrap.so
必须要有返回值
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f0cdce9c000)
如果没有,rpm -qa|grep openssh
确保有如下几个安装包
openssh-clients-7.4p1-22.el7_9.x86_64
openssh-7.4p1-22.el7_9.x86_64
openssh-server-7.4p1-22.el7_9.x86_6
没有的话就单独安装 yum install -y openssh openssh-server openssh-clients
安装完成后重启sshd服务,确保ldd /usr/sbin/sshd | grep libwrap.so有返回值
开始配置防爆破脚本
编写脚本文件,如果要修改路径,脚本里面的路径也要修改
vim /usr/local/bin/secure_ssh.sh
#!/bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat /usr/local/bin/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 5 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
给脚本添加执行权限
chmod +x /usr/local/bin/secure_ssh.sh
创建脚本日志文件
touch /usr/local/bin/black.txt
将脚本添加到定时任务
*/5 * * * * /usr/local/bin/secure_ssh.sh
验证方式
vim /etc/hosts.deny
在空白处添加阻止策略
sshd:68.183.64.94:deny
然后用另外一台服务访问
ssh -p 1533 43.213.45.111
cat /usr/local/bin/black.txt
/var/log/secure里面显示refuse