CC 攻击是一种网络攻击手段,属于 DDoS 攻击的一种形式。CC 攻击的主要目的是通过发送大量看似合法的请求到目标服务器,耗尽服务器的资源,使得服务器无法处理正常的用户请求,从而导致网站服务无法访问。
限制请求速度 {#限制请求速度}
|---------------------|-----------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6
| limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { location /login.html { limit_req zone=one; } }
|
注意:在安装 Nginx 时加载 ngx_http_limit_req_module 模块,通过 limit_req_zone
指令定义请求速率限制的区域,并使用 limit_req
指令在特定的 location
中应用这些限制。这样设置可限制每个客户端 IP 每分钟最多发起 30
个请求。
限制连接数量 {#限制连接数量}
|---------------------|----------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6
| limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /store/ { limit_conn addr 10; } }
|
注意:在安装 Nginx 时加载 ngx_http_limit_conn_module 模块,通过 limit_conn_zone
指令定义连接数量限制的区域,并使用 limit_conn
指令在特定的 location
中应用这些限制。这将限制每个客户端的 IP 同时最多只能有 10
个连接。
关闭慢速连接 {#关闭慢速连接}
|-----------------|----------------------------------------------------------------------|
| 1 2 3 4
| server { client_body_timeout 5s; client_header_timeout 5s; }
|
注意:通过设置 client_body_timeout
和 client_header_timeout
指令来定义读取客户端请求的超时时间,可以关闭慢速连接。这样可防止攻击者通过慢连接攻击耗尽服务器资源。
设置 IP 黑名单和白名单 {#设置-IP-黑名单和白名单}
|-----------------|--------------------------------------------------------|
| 1 2 3 4
| location / { allow 192.168.1.0/24; deny all; }
|
注意:使用 allow
和 deny
指令可控制特定 IP 地址或 IP 范围的访问权限。这样可以允许特定 IP 段访问,而拒绝其它所有 IP 访问。
限制文件类型和请求大小 {#限制文件类型和请求大小}
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8
| server { location /upload/ { client_max_body_size 10M; if ($content_type ~* "^image/") { return 403 "Only non-image files are allowed."; } } }
|
注意:通过 client_max_body_size
指令限制上传文件大小和类型,防止因大文件上传或超大数据包导致的服务中断或资源耗尽。
其它限制 {#其它限制}
可集成 Fail2Ban 工具,对日志文件进行自动化监控,一旦检测异常行为或恶意 IP 地址,立即将其加入黑名单并封锁。
定制化错误页面不仅能提升用户体验,还能在遭遇攻击时减少攻击者获取的有用信息。
持续关注 Nginx 的错误日志,借助日志分析工具,及时发现并响应任何异常行为或攻击迹象。
强制所有的数据传输通过 HTTPS 加密,可以有效抵御中间人攻击和数据泄露风险。