sshd防止爆破.sh
最近听说有个同事的云主机被登录,植入了挖矿的代码。恶意暴破,我也遇到过,最多的一次,都有几万次的登录记录,当时也是找了好久的方式,最后发现,使用脚本方式,最稳妥。
以下是我想到的几种安全方式。使用定时脚本,基本上能满足大部分的需求。
脚本方式
效果很好。
/root/addblacklist.sh
#!/bin/bash
#检测用户恶意登入
#2019-10-30
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"=" $1;}' >/root/black.txt
DEFINE="3"
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" >> /etc/hosts.deny
fi
fi
done
加入到定时任务中
chmod +x /root/addblacklist.sh
*/1 * * * * /root/addblacklist.sh
备注:可以通过back.txt的修改时间,是否变化,来看定时任务是否生效。
另外一个脚本
原理差不多,也是在定时任务中,检测ssh日志
cat auto_deny_ip_login.sh
#!/bin/bash
# Date:20220305
# centos7
# 自动检测IP暴力破解,禁止IP登录SSHD服务
Secure_File="/var/log/secure"
Deny_File="/etc/firewalld/zones/public.xml"
Start_Time=$(date +%Y%m%d%H%M)
IP_List="/tmp/firewalld.txt"
# 匹配IP次数
IPADDR=$(grep -i "failed" /var/log/secure |egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" |sort -nr |uniq -c|awk '$1>=5 {print $2}')
[ -f ${IP_List} ] || touch ${IP_List}
for i in $(echo -n ${IPADDR})
do
# IP失败次数达到5就加入防火墙Firewalld禁止登录ssh服务两个小时
grep -wq ${i} ${IP_List}
if [ $? -ne 0 ];then
firewall-cmd --zone=public --add-rich-rule="rule family=ipv4 source address="${i}" service name='ssh' drop" --permanent
firewall-cmd --reload
echo "${i} #${Start_Time}" >>${IP_List}
else
# 查询IP封停时间,大于等于两小时就删除此IP
End_Time=$(date +%Y%m%d%H%M)
IP_ADDR=$(egrep -v "^$|^#" ${IP_List} |awk -F'#' '{print $1,$2}' |awk '{if('${End_Time}'>=$2+200) print $1}')
for j in $(echo -n ${IP_ADDR})
do
if [ ! -z ${j} ];then
firewall-cmd --permanent --remove-rich-rule="rule family=ipv4 source address="${IP_ADDR}" service name='ssh' drop"
firewall-cmd --reload
sed -i "/${IP_ADDR}/d" ${IP_List}
fi
done
fi
done
端口
效果一般。
修改默认的端口,防止被发现,效果一般。但是,需要注意,新的端口一定要能被访问到,否则,有可能导致,无法访问到sshd,导致失联,就得不偿失了。
修改文件 /etc/ssh/sshd_config,在下面位置,添加。
Port 22022
禁止root账号登录
效果较好。
新建一个账号,这个账号名称,最好选择不常用的账号。然后对于黑客来讲,首先要破解账号的名称,然后,才是密码,相当于,增加了很大的难度。
复杂密码
一般的云厂商,都会提示使用复杂的密码。如果密码足够复杂,也会使破解的难度加大。