top
本文目录
一、配置 Nginx 限流
nginx.conf 配置
blog.conf 配置
二、配置 fail2ban 封禁 ip
创建配置文件
启动 fail2ban
三、测试
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:766378891@qq.com

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


共计 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 攻击

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

/>

Tips:清朝云网络工作室

阅读剩余
THE END
icon
0
icon
分享
icon
二维码
icon
海报
发表评论
评论列表

赶快来坐沙发

您好,今天过得怎么样?