Nginx 限流以及配合 fail2ban 封禁 ip 防御 cc 攻击

412次阅读
没有评论

共计 1613 个字符,预计需要花费 5 分钟才能阅读完成。

本文所讲的是通过 Nginx 限流以达到防御 cc 攻击的目的,同时通过封禁 ip 可以对恶意请求禁止访问。

另外本文都是基于 Docker 搭建的 Nginx 和 fail2ban 所进行配置,如有路径问题还请自己注意。如果不懂搭建可以参考我的文章 Docker 搭建 Nginx使用 fail2ban 防止 ssh 密码被暴力破解

一、配置 Nginx 限流

nginx.conf 配置

编辑 nginx.conf 文件,添加或修改代码,如下图所示:

日志格式:

log_format  main  '$remote_addr $status $request $body_bytes_sent [$time_local]  $http_user_agent $http_referer  $http_x_forwarded_for $upstream_addr $upstream_status $upstream_cache_status $upstream_response_time';

限流配置:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=150r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_req_zone 是限制每秒多少个请求。上面说我定义了一个 mylimit 规则,每秒中最多可以处理 150 个请求,接下来的请求根据 location 块中配置,决定是直接拒绝处理还是先放到队列中等处理完成 150 个请求以后在处理。

limit_conn_zone限制并发数量,具体的数量需要在 location 块中配置。

Nginx 限流以及配合 fail2ban 封禁 ip 防御 cc 攻击

blog.conf 配置

blog.conf 这个是针对我博客的 nginx 配置文件的 server 块。

在 location 块中加入两行,如下所示:

location / {
  limit_req zone=mylimit burst=5 nodelay;
  limit_conn addr 10;
  xxxx;
}

limit_req指使用 nginx.conf 中配置 mylimit 规则。

limit_conn指最大并发为 10,即单个IP同时并发连接数最多只能10个连接。

二、配置 fail2ban 封禁 ip

创建配置文件

mkdir -p /home/docker/fail2ban/data/jail.d && \
cat >  /home/docker/fail2ban/data/jail.d/nginxcc.conf <<EOF
[nginxcc]
enabled  = true
chain = INPUT
port = 80,443
filter   = nginx-limit-req
logpath  = /home/docker/nginx/logs/blog.error.log
maxretry = 120
findtime = 60
bantime  = 10800
EOF

其他的不多说了,主要是 logpath 需要需要说明一下,这个是 nginx 的日志文件的位置,fail2ban 需要从日志里拿到攻击者的ip,然后进行封禁。

而我是 docker 搭建的 nginx,所以在宿主机外的文件位置是/home/docker/nginx/logs/blog.error.log

启动 fail2ban

docker run -d \
--name fail2ban \
--network host \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
-v /home/docker/fail2ban/data:/data \
-v /var/log:/var/log:ro \
-v /home/docker/nginx/logs/:/home/docker/nginx/logs/:ro \
-e TZ=Asia/Shanghai \
--restart always \
crazymax/fail2ban:latest

这里把宿主机的 logs 文件夹映射到 fail2ban 容器内了。

三、测试

经过模拟 cc 攻击,发现 ip 被封禁。

Nginx 限流以及配合 fail2ban 封禁 ip 防御 cc 攻击

提醒:本文发布于571天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-02-14发表,共计1613字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock