前言
真正的懒癌晚期患者(缺钱也治不了),懒到不想给服务器做安全加固,就靠着复杂的数字字母混合16
位密码保障着。前段时间看了看/var/log/secure
文件,吓到了,好几个IP
登录ssh
失败,有近十万次之多。网上的闲人是真不少啊,网站没几个正经访客,各种扫描的倒是每天都有近千IP
。还是得出手干活啊,不然哪天真攻破了服务器,也对不起自己的专业了。
手里服务器大部分centos7
,只有两台debian9
,方案上自然选择fail2ban+firewall
了。
安装fail2ban
fail2ban
主要靠监控系统各种日志文件,并根据一定规则匹配异常IP
后,再使用相应的防火墙将IP
屏蔽,针对密码爆破和漏洞扫描非常有用。
yum -y install epel-release
yum -y install fail2ban
安装成功之后,fail2ban
的配置文件位于/etc/fail2ban
,其中的jail.conf
为主要配置文件,有关的匹配规则位于filter.d
目录下。fail2ban
的目录结构说明如下:
/etc/fail2ban ## fail2ban 服务配置目录
/etc/fail2ban/action.d ## iptables 、mail 等动作文件目录
/etc/fail2ban/filter.d ## 条件匹配文件目录,过滤日志关键内容
/etc/fail2ban/jail.d ## 规则文件目录,按具体防护项目分成文件
/etc/fail2ban/jail.local ## 默认规则文件
/etc/fail2ban/jail.conf ## fail2ban 防护配置文件
/etc/fail2ban/fail2ban.conf ## fail2ban 配置文件,定义日志级别、日志、sock 文件位置等
fail2ban规则配置
新建/etc/fail2ban/jail.local
来设置默认配置
[DEFAULT]
# time is in seconds. 3600 = 1 hour, 86400 = 24 hours (1 day)
findtime = 3600
bantime = 86400
maxretry = 5
ignoreip = 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
参数说明:
ignoreip:IP白名单,白名单中的IP不会屏蔽
bantime:屏蔽时间,单位为秒(s)
findtime:时间范围
maxretry:最大次数
修改/etc/fail2ban/jail.d/00-firewalld.conf
[DEFAULT]
banaction = firewallcmd-ipset
action = %(action_mwl)s
参数说明:
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口
action: 触发规则后进行的动作
#这里banaction必须用firewallcmd-ipset,这是firewall支持的关键,
#如果是用Iptables则填写iptables-multiport[name=sshd-ddos, port="22", protocol=tcp]
最后为ssh
新建文件/etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
filter = sshd
action = %(action_mwl)s
logpath = /var/log/secure
参数说明:
[sshd]:名称,可以随便填写
filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则
port:对应的端口,默认端口,所以这里没有填写
action:采取的行动
logpath:需要监视的日志路径
fail2ban相关的命令
#启动
systemctl start fail2ban
#停止
systemctl stop fail2ban
#启动
systemctl restart fail2ban
#开机启动
systemctl enable fail2ban
#是配置立即生效
systemctl daemon-reload
#查看是否开机启动
systemctl is-enabled fail2ban
#查看被ban IP,其中sshd为名称
fail2ban-client status sshd
#删除被ban IP
fail2ban-client set sshd unbanip 192.168.111.111
或
fail2ban-client set sshd delignoreip 192.168.111.111
#如果用以上命令删除被ban IP发现这个IP还是无法连接,是因为在临时策略中的ipset集合,只有电脑重启或者从这里面删除IP才行。
#查看临时策略中的ipset集合:“ipset list”,删除ipset集合中IP:“ipset del fail2ban-sshd 192.168.111.111 -exist”
#查看日志
tail /var/log/fail2ban.log
总结
jail.conf
文件里有许多配置说明,可仔细看看。filter.d
目录包含常见的SSH/FTP/NGINX/APACHE
等日志匹配。action.d
目录里许多关于防火墙的操作,如果屏蔽IP
的细节可以参考里面的内容。建议升级到0.10以上,以支持ipv6
。
参考:
https://github.com/fail2ban/fail2ban
「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」
(๑>ڡ<)☆谢谢老板~
使用微信扫描二维码完成支付