防止SSH爆破,及拉黑攻击IP配置
查看爆破登录次数及IP地址
# cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
修改ssh登录端口
原因:开放外网访问的机器,使用默认的22端口进行ssh登录,频繁的遭遇爆破攻击,强度不大但为了防患于未然,决定修改访问端口
修改ssh的配置文件,新增一行port,或者取消原来port的注释,修改端口
[root@master01 ~]# vim /etc/ssh/sshd_config
防火墙放行对应端口号
firewall-cmd --zone=public --add-port=<port>/tcp --permanent
然后执行命令重启sshd服务
systemctl restart sshd
然后发现报错了……
[root@master01 ~]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
[root@master01 ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since 三 2022-06-08 08:39:25 CST; 2s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 15128 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=255)
Main PID: 15128 (code=exited, status=255)
6月 08 08:39:25 master01.localdomain systemd[1]: Failed to start OpenSSH server daemon.
6月 08 08:39:25 master01.localdomain systemd[1]: Unit sshd.service entered failed state.
6月 08 08:39:25 master01.localdomain systemd[1]: sshd.service failed.
经排查是selinux作祟
[root@master01 ~]# getenforce
Enforcing
修改selinux配置文件,
[root@master01 ~]# vim /etc/selinux/config
配置SELINUX=disable
然后重启系统,再次执行之前配置步骤,重启sshd服务即可
下一次登录服务器就需要使用新端口了
如果要求必须启用selinux,可以执行命令添加相应端口到SELinux
semanage port -a -t ssh_port_t -p tcp <port>
检查是否添加了相应端口
semanage port -l | grep ssh
自动拉黑爆破IP脚本
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /tmp/black.list
for i in `cat /tmp/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