一、修改了ssh默认登录的22端口
1、修改sshd_config配置文件:
vi /etc/ssh/sshd_config
找到【Port 22】 ,删除注释符号【#】,将22改为要设置的目的端口,如9999,然后保存文件并退出。
2、防火墙开放当前设置的端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent
重启防火墙:
firewall-cmd --reload
3、开放ssh使用的端口
查看开放ssh使用的端口:
yum install policycoreutils-python
semanage port -l | grep ssh
开放当前设置的ssh端口:
semanage port -a -t ssh_port_t -p tcp 9999
重启ssh:
systemctl restart sshd
二、禁止关闭防火墙,开放端口需手动添加防火墙规则;
查看已开放端口:firewall-cmd --list-ports
开放端口:firewall-cmd --add-port=8080/tcp --permanent
移除端口:firewall-cmd --remove-port=8080/tcp --permanent
重新加载防火墙规则:firewall-cmd --reload
三、已设置白名单和黑名单规则;
1、设置白名单
vi /etc/hosts.allow
添加:
sshd:192.168.1.185:allow #允许192.168.1.185访问
sshd:192.168.1.*:allow #允许192.168.1该IP段访问
2、设置黑名单
vi /etc/hosts.deny
添加:
sshd:ALL #限制除/etc/hosts.allow外的其他一切IP访问本服务器
四、已设置IP锁定的脚本,超过10次失败登录会封掉IP,添加到黑名单。
1、编辑脚本
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 10 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
2、创建记录登录失败次数的文件
touch /usr/local/bin/black.txt
3、添加定时 10分钟执行一次
crontab -e
添加以下命令:
*/10 * * * * root sh /usr/local/bin/secure_ssh.sh