对于暴露在公网上的linux服务器,很容易被暴力破解登陆,为了增强服务器的安全性,因此对于ssh安全加固是很有必要的,这里主要介绍centos7 系统如何使用ipset+firewalld+定时任务来对ssh服务进行安全加固。
定义firewalld ipset
bash
firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
定义firewalld规则调用ipset
bash
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset=blacklist port protocol="tcp" port=22 drop'
将日志中的ip添加到ipset中
bash
# 脚本实现自动加入
#!/bin/bash
# Author: merry
# Description: 使用root账号登录错误大于8次的IP被加入到黑名单中
for ip in `grep -i 'Failed password for root' /var/log/secure | awk '{print $11}' | sort -n | uniq -c | sort -k1nr | awk '{if ($1>8) print $2}'`; do
firewall-cmd --permanent --ipset=blacklist --add-entry="${ip}";
done;
firewall-cmd --reload;
添加定时任务
bash
0 * * * * /opt/blockips.sh >/dev/null 2>&1
检查验证
bash
# 查询黑名单IP
firewall-cmd --permanent --info-ipset=blacklist
firewall-cmd --ipset=blacklist --get-entries
# 通过文件查看
cat /etc/firewalld/ipsets/blacklist.xml
当然也可以使用fail2ban这款软件来实现,可根据需要进行选择。