學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 病毒知識(shí) > 怎么使用Nginx防御CC攻擊

怎么使用Nginx防御CC攻擊

時(shí)間: 權(quán)威724 分享

怎么使用Nginx防御CC攻擊

  CC攻擊針對(duì)的是服務(wù)器上面的內(nèi)存和CPU資源,因此通常會(huì)找到一些比較高消耗的接口,例如search.php之類的需要大量sql查詢的接口,下面是學(xué)習(xí)啦小編整理的一些關(guān)于怎么使用Nginx防御CC攻擊的相關(guān)資料,供你參考。

  什么是nginx?

  Nginx ("engine x") 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā)的,第一個(gè)公開版本0.1.0發(fā)布于2004年10月4日。其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。2011年6月1日,nginx 1.0.4發(fā)布。

  Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā),供俄國大型的入口網(wǎng)站及搜索引擎Rambler(俄文:Рамблер)使用。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、新浪、網(wǎng)易、騰訊等。

  Nginx 可以在大多數(shù) Unix like OS 上編譯運(yùn)行,并有 Windows 移植版。 Nginx 的1.4.0穩(wěn)定版已經(jīng)于2013年4月24日發(fā)布,一般情況下,對(duì)于新建站點(diǎn),建議使用最新穩(wěn)定版作為生產(chǎn)版本,已有站點(diǎn)的升級(jí)急迫性不高。Nginx 的源代碼使用 2-clause BSD-like license。

  Nginx 是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù)器,它具有很多非常優(yōu)越的特性:

  在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品:Nginx在美國是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一。能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng),感謝Nginx為我們選擇了 epoll and kqueue作為開發(fā)模型。

  使用Nginx防御CC攻擊的方法:

  我們主要用到的是Nginx中提供的兩個(gè)limit模塊:

  ngx_http_limit_conn_module

  ngx_http_limit_req_module

  一、白名單

  首先這兩個(gè)模塊是支持白名單的,就是可能有某些IP地址,我們是不需要進(jìn)行限制的,比如可能會(huì)是搜索引擎啦什么的或者自己的IP,因此需要設(shè)置一個(gè)白名單,不需要的可跳過本步。具體方法:

  在HTTP段中插入如下格式內(nèi)容,聲明白名單IP

  http{

  .......

  geo $limited{

  default 1;

  #公司

  119.123.5.0/24 0;

  }

  .........

  }

  geo指令定義了一個(gè)白名單$limited變量,默認(rèn)值為1,如果客戶端IP在上面的范圍內(nèi),$limited的值為0。

  然后緊跟在上面內(nèi)容后使用map指令映射搜索引擎客戶端的ip為空串,如果不是白名單IP就顯示本身真實(shí)的IP,這樣搜索引擎iIP就不能存到limit模塊的內(nèi)存session中,所以不會(huì)限制白名單的IP訪問。

  map $limited $limit {

  1 $binary_remote_addr;

  0 "";

  }

  二、訪問頻率限制

  訪問頻率限制使用到的是ngx_http_limit_req_module,需要在兩個(gè)地方配置,首先在HTTP段中,聲明好這個(gè)模塊一些參數(shù),如果有設(shè)置白名單,設(shè)置如下

  http{

  ...

  limit_req_zone $limit zone=one:10m rate=20r/m; ##平均20r/m 每分鐘20個(gè)請求

  ...

  }

  如果沒有配置白名單,所有來訪IP都會(huì)限制,配置如下

  http{

  ...

  limit_req_zone $binary_remote_addr zone=one:10m rate=20r/m; ##平均20r/m 每分鐘20個(gè)請求

  ...

  }

  解釋一下上面的參數(shù),第一個(gè)代表的是需要限制的ip群,這個(gè)很好理解,第二個(gè)zone=one表示這個(gè)limit_zone的名字叫做one,后面的使用中可以用這個(gè)one來進(jìn)行指代,后面的15m,代表為這個(gè)zone分配10m的內(nèi)存,1m可以保存16000的$binary_remote_addr。最后一個(gè)是頻率,如果要按秒來算可以設(shè)置20r/s這樣。

  最后是配置到Nginx的php的解析段

  location ~ \.php$ {

  ...

  limit_req zone=one burst=5 nodelay;

  ...

  }

  指定了使用名字為one的zone,然后緩沖隊(duì)列為5,無延遲,如果不設(shè)置無延遲,訪問會(huì)卡住。

  三、訪問連接限制

  訪問連接限制使用到的是ngx_http_limit_conn_module,也是需要在兩個(gè)地方配置,首先在HTTP段中,聲明好這個(gè)模塊一些參數(shù),如果有設(shè)置白名單,設(shè)置如下

  http{

  ...

  limit_conn_zone $limit zone=addr:10m;

  ...

  }

  如果沒有配置白名單,所有來訪IP都會(huì)限制,配置如下

  view sourceprint?http{

  ...

  limit_conn_zone $binary_remote_addr zone=addr:10m;

  ...

  }

  參數(shù)的意思跟上面的差不多也就不多解釋了。

  后面的就是在server段中進(jìn)行設(shè)置了,可以具體到某個(gè)目錄什么的了

  server {

  location /download/ {

  limit_conn addr 5;

  }

  大功告成,打完收工,記得要nginx -s reload

  看過文章“怎么使用Nginx防御CC攻擊”的人還看了:

  1.如何防御DDoS攻擊

  2.如何防御DDOS遭遇攻擊

  3.怎么防網(wǎng)站攻擊

  4.計(jì)算機(jī)安全知識(shí):常用的防御攻擊措施(2)

  5.vps如何防攻擊

  6.服務(wù)器怎么防攻擊

  7.教你實(shí)現(xiàn)電腦的網(wǎng)絡(luò)安全和如何防止黑客的攻擊

  8.如何防御Sniffer攻擊

  9.如何防護(hù)ARP攻擊

  10.網(wǎng)絡(luò)攻擊以及防范措施有哪些

557177