安装fail2ban和iptables
yum install -y iptables iptables-services fail2ban
文件路径
fail2ban的配置文件路径:/etc/fail2ban
fail2ban安装目录:/usr/share/fail2ban
日志文件:/var/log/fail2ban.log
达到阈值之后的执行的动作的配置文件: action.d/
包含所有的过滤规则:filter.d/
ssh防护规则
cat /etc/fail2ban/jail.d/jail.local
#defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
[DEFAULT]
# 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
#ignoreip = 127.0.0.1/8
# 客户端主机被禁止的时长(默认单位为秒),-1为永久封禁
bantime = -1
# 过滤的时长(秒)
findtime = 600
# 匹配到的阈值(次数)
maxretry = 3
[ssh]
# 是否开启
enabled = true
# 过滤规则
filter = sshd
# port=ssh为默认协议端口22,如果更改了ssh服务的端口号,需要在这里设置对应的端口号,否则配置不生效
action = iptables[name=SSH, port=ssh, protocol=tcp]
# 日志文件的路径
logpath = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 3
启动fail2ban和iptables
systemctl start fail2ban
systemctl start iptables
systemctl enable fail2ban
systemctl enable iptables
查看当前被禁止登陆的ip
fail2ban-client status ssh
fail2ban-client使用命令:
start——启动fail2ban server和监狱
reload——重新加载配置文件
stop——暂停fail2ban和监狱
status——查看运行的监控服务数量和列表
set loglevel——设置日志等级,有 CRITICAL, ERROR, WARNING,NOTICE, INFO, DEBUG
get loglevel——获取当前日志的等级
set idle on|off——设置某个监控(监狱)的状态。
set addignoreip ——设置某个监控(监狱)可以忽略的ip
set delignoreip ——删除某个监控(监狱)可以忽略的ip
set banip ——将ip加入 监控(监狱)
set unbanip ——将ip从监控(监狱)移除
例:
fail2ban-client set ssh unbanip 1.1.1.1
nginx防护规则
在fail2ban中添加防护规则
vim /etc/fail2ban/jail.d/jail.local
[http-ddos]
enabled = true
port = http,https
filter = http-ddos
logpath = /var/logs/access.log
maxretry = 100
findtime = 1
0
bantime = 12h
action = iptables[name=HTTP,port=http,protocol=tcp]
新建监控nginx日志规则的文件
vim /etc/fail2ban/filter.d/http-ddos.conf
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
重启fail2ban,如果nginx前端有cdn加速或者负载均衡可能导致规则失效