前几天发现服务器上日志飙涨,一查发现有很多陌生IP在疯狂尝试登录:
$tail -f /var/log/secure
当时的图没截下来,以下示例图,如果看到陌生IP在尝试登录,要小心了
防御思路:1.更换SSH端口、2.多次尝试登录失败的IP列为黑名单
1.更换SSH端口
$vi /etc/ssh/sshd_config
#开启两个端口,一个22,一个自定
Port 22
Port 13722
#开启自定端口
$firewall-cmd --zone=public --add-port=13722/tcp --permanent
$firewall-cmd --reload
#向SELinux中添加修改的SSH端口
$yum install -y policycoreutils-python
$yum provides semanage
$semanage port -l | grep ssh
$semanage port -a -t ssh_port_t -p tcp 13722
$semanage port -l | grep ssh
$systemctl restart sshd.service
之后测试下通过自定端口能否SSH登录,如果可以关掉22端口
$vi /etc/ssh/sshd_config
#Port 22
$systemctl restart sshd.service
2.定时检测登陆日志 将多次尝试登录的IP列入黑名单,禁止sshd链接
$yum install crontabs
$systemctl enable crond
$systemctl start crond
$vi /etc/crontab
$vi /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.list
for i in `cat /usr/local/bin/black.list`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ ${#NUM} -gt 1 ]; then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
#代码结束
$crontab -e
0 0 * * * sh /usr/local/bin/secure_ssh.sh
设置结束,黑明单列表在 /usr/local/bin/black.list