防cc攻擊應該設置多(duō)少(shǎo)秒(miǎo)φ€多(duō)少(shǎo)次呢(ne)?很(hěnα₽↓)多(duō)人(rén)都(dōu)遇• 到(dào)過CC攻擊的(de)情況,CC攻擊可(kě)以從(c✘λ★óng)服務器(qì)和(hé)應用(yòβεng)層面防禦和(hé)減輕影(yǐng)響。本文(wén∏γπ")介紹受到(dào)CC攻擊後,可(kě)©♠₹≤以在服務器(qì)上(shàng)采取的(de)簡易防CC攻擊設置。
不(bù)同于DDoS靠流量蠻力攻擊,CγδλC攻擊模拟正常用(yòng)戶與服務器(qì)交互。CC攻擊一(yī)•λ般需找到(dào)網站(zhàn)/應用(yòng)的&λ(de)薄弱處,然後通(tōng)過大(dà)量連>δ•↕接/請(qǐng)求消耗服務器(qì)資源,讓CPU、帶寬能(nδ≤→↑éng)資源占用(yòng)飙升。
防護CC攻擊的(de)主要(yào)手段是(shì↕β×↓)限制(zhì)并發請(qǐng)求數(shù)量和(hé)請(qǐn¥$♠g)求速率。并發請(qǐng)求數(shù)量指的(deπ£ε")是(shì)單ip可(kě)以與服務器(qì)建 ★→立多(duō)少(shǎo)個(gè)連接,請(qǐng)求速率指的(de)是(shì)單位時(shí™®×")間(jiān)內(nèi)的(de)請(qǐng)♥↔€∑求數(shù)。兩者有(yǒu)共同部分(f€α±ēn)但(dàn)意義不(bù)同,例如(rú)± ♠¶建立十個(gè)連接每個(gè)連接請(qǐng)求一(yī)次,也(y>©βě)可(kě)以建立一(yī)個(gè)連接請(qǐn¥≤g)求十次。前者是(shì)并發連接多(duō≠α ),後者是(shì)請(qǐng)求速率高(gā☆Ωπo)。
Nginx既支持并發請(qǐng)求的(de)限制(zhì),也(≠¶©yě)支持按限制(zhì)請(qǐng)求速率。防禦CC攻擊主要(yào)是•®(shì)限制(zhì)速率,理(lǐ)論上(shàng)'€↕速率限制(zhì)得(de)好(hǎo)就(jiù)夠了(l♥↑≥e)。實踐中建議(yì)兩者結合,既防止太多(duō)連接消耗服務器(σ₩qì)資源,也(yě)防止請(qǐng)求速率過快(kuài)。
Nginx 防CC詳細設置步驟如(rú)下(xià):
1. 編輯Nginx配置文(wén)λ∏₽®件(jiàn),例如(rú) /etc/nginx/nginx.conf
, 在 http
段分(fēn)配計(jì)數(shù)內(nèi)存:
limit_conn_zone $binary &_remote_addr zone=limit_co§&nn:10m;
limit_req_zone $binary_remote'♠ _addr zone=limit_req↑'₹:10m rate=10r/s;
上(shàng)述配置分(fēn)配了(le) limit_conn¥α↔ 和(hé) limit_req 兩個(gè)1✔₽0M大(dà)小(xiǎo)的(de)內(nèi)存塊(1Mσ£λ"內(nèi)存可(kě)記錄16000個(gè)會(huì)話(huà)≤★),并設置每秒(miǎo)最大(dà)請(qǐng)求速率是(s∞↔φhì)10次。
2, 打開(kāi)網站(zhàn)配置文('εwén)件(jiàn),例如(rú)&n♠≤×bsp;/etc/nginx/conf.d/qiquanji.conf
,在 server
或者 location
段中開(kāi)啓限制(zhì):
server {
limit_conn ♣₩★limit_conn 5; # 并發連接數(shùφ♦)不(bù)超過5
limit_req zone=limit_r↔ eq burst=10 nodelay;
# Ω★≤¶其他(tā)設置
http中設置每秒(miǎo)允許10個(gè)請(q>$ǐng)求,即100毫秒(miǎo)一(yī)個(gè),如(rú)果突然來¶≈>★(lái)10個(gè)連接,後面9個(gè)直接返回503錯(cuò)誤,這÷§✘(zhè)是(shì)我們不(bù)願意看(kàn)到(dào)的(de)。lπεimit_req中的(de) burst
參數(shù)用(yòng)來(lái)處理(lǐ)Ω↓ 突發請(qǐng)求,此時(shí)10個(gè)請(q©δǐng)求都(dōu)會(huì)被接受以應對(duì)突發流量✘≈☆©。如(rú)果再來(lái)10個(gè),那(nà)就(jiù)超出了(le¶¥♣)允許的(de)突發限制(zhì),Nginx直接返回503錯(cuò)誤。
nodelay
表示在允許突發請(qǐng)求的(de)情況下(xià),直™≥♥☆接處理(lǐ)所有(yǒu)請(qǐng)求,而不₹ ¥(bù)是(shì)每100毫秒(miǎo)處理(lǐ×↔)一(yī)個(gè)。
實踐中請(qǐng)根據具體(tǐ)情況設置并發連接數(shù)和(hé)請✘π(qǐng)求速率。數(shù)值過大(dà)會≥₩(huì)影(yǐng)響防禦效果,太小(xiǎo)則會(huì✘→)影(yǐng)響正常用(yòng)戶使用(yòng)。此外(↕↓wài),建議(yì)總是(shì)啓用≤↕÷(yòng) burst
和(hé) nodelay
以應對(duì)突發流量。
3. 保存配置文(wén)件(jiàn),nginx -t
檢查有(yǒu)無語法錯(cuò)誤,然後 $± systemctl reload nginx
重新加載配置。
1. 可(kě)以将某些(xiē)ip放(fàng)入白(bái)γ✘名單,避免受到(dào)速率限制(zhì♦")。操作(zuò)是(shì)在 http 段新增開(kāi)啓變量:β←
Bash
geo $whitelist {
∑↓default 1;
10.0.0.17 0; # 按照(zhào)★εΩ∞這(zhè)個(gè)格式添加白(bái)名單ip♣✔
}
map $whitelist $limit {<≥
0 "";
1 $bina¥λπry_remote_addr;
}
# limitφ¥_conn_zone 和(hé) limit_req_zon₹e更改為(wèi):
limit_con Ωn_zone $limit zone=limit_conn:10m;
lim₽¶©δit_req_zone $limit zone=lim€βλ>it_req:10 rate=10r/s;
•
#其他(tā)配置無需改變
2. limit_conn
和(hé) limit_req
指令可(kě)以放(fàng)置在 http、≈₩server、location 中使用(yòng),分(fēn)• '别表示對(duì)所有(yǒu)站(zhàn)點、特點站(zhàn)點×∑、特定url使用(yòng)限制(zhì);
3. 可(kě)以同時(shí)使用(yòng)多(d∏☆☆uō)個(gè) limit_conn
和(hé) limit_req
應付複雜(zá)場(chǎng)Ω<景。
Nginx可(kě)以限制(zhì)并發請(qǐng)求≠→數(shù)量,防火(huǒ)牆(iptables / firewalld)←£也(yě)可(kě)以做(zuò)到(dào),并且性能(néng)更好¶≤(hǎo)。
防火(huǒ)牆限制(zhì)主要(yào)是(s✘γhì)兩方面:
1. 将某個(gè)ip拉黑(hēi):
Bash
#iptables
iptables -I INPUt -Ω&£'p tcp -s 黑(hēi)名單ip -j DRO γ∏P
# firewalld
firewall-cmd --add-rich&€♠♥-rule="rule family='ipv4'¥> ® source address='黑(hēi)名單ip ↕39; reject"
2. 限制(zhì)ip的(de)并發連接:
Bash
# iptables
iptables -I INP♦∞←Ut -p tcp --dport 443 -m Ω↕ connlimit --connlimit-ab'↕ove 5 -j DROP
# firewa↕♣ lld
firewall-cmd --add-rich-rule '♣ו;rule port port=443 protocol=tcp aα§ccept limit value="5/s₹♥→ "'
默認Nginx最大(dà)可(kě)打開(k♥®āi)1024個(gè)文(wén)件(jiàn)/連接,在大(d∑β€€à)流量時(shí)明(míng)顯不(bù)夠,因此需π ✔<要(yào)加大(dà)。
操作(zuò)方法如(rú)下(xià):
1. 編輯 /etc/systemd/system/multi-user.target§×≠→.wants/nginx.service
,添加文(wén)件(jiàn)數(shù)限制≥×(zhì):
[Unit]
Description=The nginx HTTP ↕ and reverse proxy server
After₹ ↓=network.target remote-fs.targetε→ nss-lookup.target
[Ω↕Service]
# 增加這(zhè)一(yī)行(xíng)
£π☆
LimitNOFILE=65535
#其他(tā)不(bù)用(yòng)≠≠•變
2. 重啓Nginx:systemctl daemon-reload; systemctl re•start nginx
;
3. 查看(kàn)Nginx打開(kāi)文 ↔'→(wén)件(jiàn)限制(zhì)是(shì¶α&)否已經生(shēng)效:ps aux | grep nginx
找到(dào) nginx 的(de)進程δ≈ε♥号,然後 cat /proc/進程号/limits
,輸出
經過上(shàng)述設置,配置好(hǎo)參數(✘÷δshù)後,小(xiǎo)型的(de)C±ε¶C攻擊能(néng)防住或者減輕影(yǐng)響。大(dà)規模的≈☆•(de)CC攻擊攻擊沒辦法,最好(hǎo)是(shì)選擇第三方高₽ε≠(gāo)防服務商的(de)高(gāo)防産品來(lái)抵禦CC攻擊,♥€™δ墨者安全自(zì)主研發抗CC攻擊指紋防護引擎墨者盾,可(k♠σě)以做(zuò)到(dào)99.999©₩9%的(de)無敵複合防禦!可(kě)以根據訪問(wèn)εε™ 者的(de)URL,頻(pín)率、行(xíng)為(wèi)φβ♣等多(duō)重畫(huà)像訪問(wèn)特征,≠λλ智能(néng)識别CC攻擊,擁有(yǒu)國(guó)內(nèi)最♥→±Ω全的(de)病毒特征庫樣本,迅速識别CC攻擊并進行(xíng)攔截,熟悉各運→營商及FB及微(wēi)信流量體(tǐ)系,最高(gāo)可(kě)防禦百W級σ¥+QPS攻擊。
熱(rè)門(mén)文(wén)章(zhān₽'g)
-->