CC攻擊(Challenge Collapsar Attack)是一種網(wǎng)絡(luò)攻擊方式,其目的是通過大量合法或偽造的小流量請(qǐng)求,耗盡服務(wù)器資源,導(dǎo)致正常用戶無法訪問,也稱為“連接數(shù)攻擊”或“請(qǐng)求速率限制攻擊”。要在 nginx 中防止 CC 攻擊,首先需要修改nginx的配置文件。
1.使用 nginx 的 limit_req 模塊可以限制單個(gè)IP地址在一定時(shí)間內(nèi)的請(qǐng)求次數(shù)。
http {
limit_req_zone $binary_remote_addr zone=myzone:10m rate=5r/s;
server {
location / {
limit_req zone=myzone burst=10 nodelay;
}
}
}
在上述配置中,limit_req_zone 指令定義了一個(gè)名為 myzone 的內(nèi)存區(qū)域,它跟蹤源 IP 地址,并且限定了每個(gè) IP 每秒可以發(fā)起的請(qǐng)求次數(shù)(例如 rate=5r/s)。burst 參數(shù)允許突增連接數(shù)而不會(huì)立即返回錯(cuò)誤,而 nodelay 參數(shù)可以使得請(qǐng)求不會(huì)因?yàn)槌^速率而被延遲。
2.使用 nginx 的 limit_conn 模塊可以限制單個(gè)IP地址的并發(fā)連接數(shù)。
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 5;
}
}
}
這里定義了一個(gè)名為 addr 的內(nèi)存區(qū)域來跟蹤并限制并發(fā)連接數(shù)(例如 limit_conn addr 5 表示每個(gè) IP 最多可以有 5 個(gè)并發(fā)連接)。