Fail2ban建站常用配置
First Post:
Word Count:
Read Time:
Word Count:
720
Read Time:
2 min
Welp, 互联网是个很忙碌的地方, 如果你没事干喜欢查看Nginx的access log与其他可以外部访问的log的话, 你应该会产生与作者一样的困扰:
我测怎么这么多B扫老子IP自己的服务器的IP无时无刻不在被各种攻击无差别轰炸
如果你有跟作者一样的困扰, ur in for a treat then!
首先你要安装 fail2ban
, 防火墙推荐使用ufw, iptables终究还是有点繁琐) fail2ban ↗
安装完成后, 你可以在 /etc/fail2ban/filter.d/
目录下创建你自己的过滤规则, 大致格式如下:
文件名:
<你的规则>.conf
内容:
1
2
3[Definition]
failregex = <过滤用正则表达式, 如果匹配则记录>
ignoreregex = <忽略用正则表达式, 如果匹配过滤并匹配这个则忽略当前记录>
Fail2ban 默认开启对 sshd 的保护, 常用指令:
fail2ban-client
reload
/restart
重载服务, 加载你创建的规则status
当前生效的过滤器banned
当前被屏蔽的IP (也可以用iptables -L
查看)
在你创建自己的过滤规则后, 可以用这个指令来测试:
fail2ban-regex -v <对应的日志的路径> <规则的路径>
如果测试下来与自己的预期一致的话, 可以在 /etc/fail2ban/jail.d/
下创建一个新的conf文件来启用你的规则(一个文件可以启用多个规则)
1 |
|
以下为一些常用的配置用正则表达式
NGINX
NGINX 的日志文件通常是
/var/log/nginx/access.log
总有机器人在访问什么不存在的目录? Worry not, we got you!
^<HOST> -.*- .*HTTP/1.* 404 .*$
二进制Request Method? BAM!
^<HOST> -.*- .*\\x.* 400 .*$
有人在用IP直接访问我的网站! (这个有些复杂)
首先, 你需要更新你的nginx配置
- 在你的
/etc/nginx/nginx.conf
配置文件中重设你的日志格式 log_format hosts '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent <host:$host>' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access_log /var/log/nginx/access.log hosts; # 记得在这里使用新的日志格式
- 在你的
- 然后, 新建一个规则
- failregex:
^<HOST> -.*-.*<host:.+?>.*$
- ignoreregex:
<host:(.+?\.)?[当前站点的主域名]>
- 例如:
<host:(.+?\.)?heimdall.work>
- 例如:
- failregex:
UFW
UFW 的日志文件通常是
/var/log/ufw.log
- 有人在扫我的端口! Fear not,
任何邪恶, 终将绳之以法.*\[UFW BLOCK\] IN=.* SRC=<HOST>