国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

香港云服务器
服務(wù)器之家 - 服務(wù)器技術(shù) - Nginx - nginx限制IP惡意調(diào)用短信接口處理方法

nginx限制IP惡意調(diào)用短信接口處理方法

2019-12-20 14:58Alan丶文 Nginx

這篇文章主要介紹了nginx限制IP惡意調(diào)用短信接口處理方法,一種是nginx黑名單方式,另一種是限制IP請(qǐng)求數(shù)。需要的朋友可以參考下

真實(shí)案例:

查看nginx日志,發(fā)現(xiàn)別有用心的人惡意調(diào)用API接口刷短信:

?
1
2
3
30966487 115.213.229.38 "-" [05/Jun/2018:14:37:29 +0800] 0.003 xxxxxx.com "POST /xxx/sendCheckCode HTTP/1.1" 401 200 46 xx.xx.xx.xx:0000 0.003 200 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" "https://xxxxxx/sendCheckCode"
30963985 60.181.111.140 "-" [05/Jun/2018:14:37:29 +0800] 0.004 xxxxxx.com "POST /xxx/sendCheckCode HTTP/1.1" 401 200 46 xx.xx.xx.xx:0000 0.004 200 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" "https://xxxxxx/sendCheckCode"
30959954 220.190.18.25 "-" [05/Jun/2018:14:37:29 +0800] 0.003 xxxxxx.com "POST /xxx/sendCheckCode HTTP/1.1" 401 200 46 xx.xx.xx.xx:0000 0.003 200 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" <a rel="external nofollow" href="https://xxxxxx/sendCheckCode">https://xxxxxx/sendCheckCode</a>

思考了幾種方案,最終考慮使用ip黑名單的方式:

處理方法:

一、nginx黑名單方式:

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

2、具體步驟:

編寫(xiě)shell腳本:

?
1
2
3
4
5
6
7
8
9
10
11
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}
#過(guò)濾access.log中正常訪問(wèn)API接口并在10分鐘(下面是日志切割,再做個(gè)定時(shí)任務(wù)每10分鐘執(zhí)行一次,就可以實(shí)現(xiàn)了)內(nèi)訪問(wèn)量最高的30個(gè)IP,取值如果此IP訪問(wèn)量大于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
#日志切割,做定時(shí)任務(wù),每10分鐘執(zhí)行一次
mv ${log_path}/access.log ${log_path}/accesslog.bak/access_${date}.log
../sbin/nginx -s reload

可自己定義時(shí)間間隔和訪問(wèn)量,也可取消篩選訪問(wèn)量最高的30個(gè),直接取值每10分鐘訪問(wèn)接口超過(guò)100次的

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

3、修改nginx.conf

在http模塊加入:

include       denyip.conf;

重新加載nginx生效。

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

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

5、驗(yàn)證:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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的訪問(wèn)日志,則會(huì)返回403錯(cuò)誤:

?
1
2
3
4
[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" <a rel="external nofollow" href="https://xxxxxx/sendCheckCode">https://xxxxxx/sendCheckCode</a>

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

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

此方法沒(méi)有實(shí)際運(yùn)用,因?yàn)楦杏X(jué)這種方法會(huì)誤殺正常的訪問(wèn)用戶

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

?
1
2
3
4
5
6
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萬(wàn)6064字節(jié)的狀態(tài)。

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

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

如何估算 limit_req_zone rate:

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

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

總結(jié)

以上所述是小編給大家介紹的nginx限制IP惡意調(diào)用短信接口處理方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.cnblogs.com/01-single/p/9140371.html

延伸 · 閱讀

精彩推薦
417
主站蜘蛛池模板: 欧美成人午夜视频 | 狠狠的日 | 欧美亚洲国产一区 | 开心久久婷婷综合中文字幕 | 欧美日韩不卡 | 成人在线观看免费 | 黄色天堂| 久久99精品久久久 | 成人不卡在线观看 | 欧美性大战久久久 | 国产精品第一国产精品 | 久久99精品一区二区三区三区 | 亚洲视频在线看 | 日本免费在线一区 | 黄视频免费 | 久操成人 | 欧美一级二级三级视频 | 欧洲成人午夜免费大片 | 日韩簧片 | 香蕉久久久久久 | 91精品视频导航 | 国内精品一级毛片国产99 | 综合久 | 国产一区二区三区免费视频 | 亚洲视频在线免费观看 | 色视频www在线播放国产人成 | 亚洲欧美日韩精品 | 亚洲成人自拍 | 国产精品成人3p一区二区三区 | 精品国产乱码久久久久久88av | 国产精品中文字幕在线 | 国产在线看片 | 日韩成人在线视频 | 国产中文字幕在线观看 | 国产一区二区三区免费视频 | 日韩欧美视频 | 奇米影视7777 | 福利视频一 | 日韩在线播放一区二区 | 日韩欧美视频 | 中文字幕一区日韩精品欧美 |