怎么在nginx中限制IP惡意調(diào)用短信接口-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)怎么在nginx中限制IP惡意調(diào)用短信接口,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元黎川做網(wǎng)站,已為上家服務(wù),為黎川各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

處理方法:

一、nginx黑名單方式:

1、過濾日志訪問API接口的IP,統(tǒng)計每10分鐘調(diào)用超過100次的IP,直接丟進(jìn)nginx的訪問黑名單

2、具體步驟:

編寫shell腳本:

vim /shell/nginx_cutaccesslog.sh
#!/bin/bash
log_path=/xxx/nginx/logs
date=`date -d "10 min ago" +%Y%m%d-%H:%M:%S`
nginxpid=`cat ${log_path}/nginx.pid`
cd ${log_path}
#過濾access.log中正常訪問API接口并在10分鐘(下面是日志切割,再做個定時任務(wù)每10分鐘執(zhí)行一次,就可以實現(xiàn)了)內(nèi)訪問量最高的30個IP,取值如果此IP訪問量大于100次,則把此IP放入黑名單
cat access.log | grep sendCheckCode | grep -v 403 | awk '{print $2}'|sort|uniq -c | sort -k1 -n | tail -30 | awk '{if($1>100) print "deny "$2";"}' > ../conf/denyip.conf
#日志切割,做定時任務(wù),每10分鐘執(zhí)行一次
mv ${log_path}/access.log ${log_path}/accesslog.bak/access_${date}.log
../sbin/nginx -s reload

可自己定義時間間隔和訪問量,也可取消篩選訪問量最高的30個,直接取值每10分鐘訪問接口超過100次的

其中:"grep -v 403" 是把已經(jīng)禁止訪問的IP給過濾掉,只篩選正常訪問的

3、修改nginx.conf

在http模塊加入:

include       denyip.conf;

重新加載nginx生效。

4、添加計劃任務(wù):

*/10 * * * * /bin/bash /shell/nginx_cutaccesslog.sh > /dev/null 2>&1

5、驗證:

[root@xxx logs]# ll accesslog.bak/
-rw-r--r-- 1 root root 2663901 Jun 5 15:10 access_20180605-15:00:01.log
-rw-r--r-- 1 root root 13696947 Jun 5 15:20 access_20180605-15:10:01.log
-rw-r--r-- 1 root root 13265509 Jun 5 15:30 access_20180605-15:20:01.log
-rw-r--r-- 1 root root 13846297 Jun 5 15:40 access_20180605-15:30:01.log
[root@xxx logs]# cat ../conf/denyip.conf 
…………
…………
deny 112.12.137.28;
deny 183.167.237.229;
deny 111.41.43.58;
deny 115.217.117.159;
deny 219.133.100.133;
deny 171.221.254.115;
deny 60.184.131.6;
…………
…………

再查看已經(jīng)禁用IP的訪問日志,則會返回403錯誤:

[root@xxx logs]# tail -f access.log | grep "60.184.131.6"
31268622 60.184.131.6 "-" [05/Jun/2018:15:47:34 +0800] 0.000 xxxxxx.com "POST /xxxxxx/sendCheckCode HTTP/1.1" 377 403 168 - - - "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" "https://xxxxxx/sendCheckCode"
31268622 60.184.131.6 "-" [05/Jun/2018:15:47:35 +0800] 0.000 xxxxxx.com "POST /xxxxxx/sendCheckCode HTTP/1.1" 377 403 168 - - - "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" "https://xxxxxx/sendCheckCode"
31268622 60.184.131.6 "-" [05/Jun/2018:15:47:35 +0800] 0.000 xxxxxx.com "POST /xxxxxx/sendCheckCode HTTP/1.1" 377 403 168 - - - "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" https://xxxxxx/sendCheckCode

二、限制IP請求數(shù):

處理這種情況的方法還有一種是限制單 IP 單位時間的請求數(shù),以及單 IP 的并發(fā)連接數(shù)

此方法沒有實際運用,因為感覺這種方法會誤殺正常的訪問用戶

寫一下此方法的大概配置,http模塊加入:

http {
 limit_req_zone $binary_remote_addr zone=one:10m rate=8r/s;
 server {
  location /search/ {
   limit_req zone=one burst=5;
  }

如何估算 limit_req_zone size:

一兆字節(jié)區(qū)域可以保持大約1萬6064字節(jié)的狀態(tài)。

那么 10M 就可以存儲 16 萬的 IP 統(tǒng)計信息, 這個對普通應(yīng)用足夠了,16 萬每秒的 UV,已經(jīng)超級厲害了。

如果 size 的大小如果設(shè)置小了, 例如設(shè)置成 1M,那么當(dāng)一秒內(nèi)的請求 IP 數(shù)超過 16000 的時候,超出的 IP 對應(yīng)的用戶看到的均為 503 Service Temporarily Unavailable 頁面了。參考, 漏桶算法 Leaky Bucket。 同時,rate 的單位用 r/s 非常合適,如果換成按天,按小時計數(shù),10M 的內(nèi)存肯定不夠用。

如何估算 limit_req_zone rate:

首先需要知道的是,普通瀏覽器的同時并發(fā)數(shù)量。按照 Dropbox 技術(shù)博客里所談到的,目前主流瀏覽器限制 AJAX 對同一個子域名的并發(fā)連接數(shù)是6個。IE 6,IE 7 是兩個。

大多數(shù)瀏覽器每個主機名都有6個并發(fā)連接的限制。

關(guān)于怎么在nginx中限制IP惡意調(diào)用短信接口就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標(biāo)題名稱:怎么在nginx中限制IP惡意調(diào)用短信接口-創(chuàng)新互聯(lián)
鏈接URL:http://bm7419.com/article34/hscse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站、定制網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)