亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nginx限制IP惡意調用短信接口處理方法

 更新時間:2018年06月05日 17:11:33   作者:Alan丶文  
這篇文章主要介紹了nginx限制IP惡意調用短信接口處理方法,一種是nginx黑名單方式,另一種是限制IP請求數(shù)。需要的朋友可以參考下

真實案例:

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

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" https://xxxxxx/sendCheckCode

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

處理方法:

一、nginx黑名單方式:

1、過濾日志訪問API接口的IP,統(tǒng)計每10分鐘調用超過100次的IP,直接丟進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分鐘(下面是日志切割,再做個定時任務每10分鐘執(zhí)行一次,就可以實現(xiàn)了)內訪問量最高的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
#日志切割,做定時任務,每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、添加計劃任務:

*/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)計信息, 這個對普通應用足夠了,16 萬每秒的 UV,已經(jīng)超級厲害了。

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

如何估算 limit_req_zone rate:

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

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

總結

以上所述是小編給大家介紹的nginx限制IP惡意調用短信接口處理方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 關于nginx proxy_set部分常見配置

    關于nginx proxy_set部分常見配置

    這篇文章主要介紹了關于nginx proxy_set部分常見配置,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Nginx的一些常用配置匯總

    Nginx的一些常用配置匯總

    nginx配置說簡單也簡單,說復雜也復雜,入門簡單,精通難,下面這篇文章主要給大家介紹了關于Nginx的一些常用配置,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 如何配置nginx成功代理websocket

    如何配置nginx成功代理websocket

    配置Nginx作為WebSocket代理是一種常見的設置,以便在Nginx服務器上實現(xiàn)WebSocket連接的轉發(fā)和負載均衡,這篇文章主要介紹了配置nginx以成功代理websocket,需要的朋友可以參考下
    2024-02-02
  • 詳解nginx進程鎖的實現(xiàn)

    詳解nginx進程鎖的實現(xiàn)

    nginx是多進程并發(fā)模型的應用,但為了網(wǎng)絡請求的安全性,必須要使用到鎖,那么這個進程鎖如何實現(xiàn)呢
    2021-06-06
  • CentOS 中Nginx的安裝方法

    CentOS 中Nginx的安裝方法

    最近研究LNMP,首先要在linux下配置nginx服務器,廢話少說,下面給大家分享下在CentOS 中Nginx的安裝方法
    2017-08-08
  • Nginx簡要安裝配置方法圖文教程

    Nginx簡要安裝配置方法圖文教程

    這篇文章主要以圖文結合的方式為大家詳細介紹了Nginx簡要安裝配置方法教程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Nginx配置https的實現(xiàn)

    Nginx配置https的實現(xiàn)

    本文主要介紹了Nginx配置https的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • nginx支持codeigniter的pathinfo模式url重寫配置寫法示例

    nginx支持codeigniter的pathinfo模式url重寫配置寫法示例

    這篇文章主要介紹了nginx支持codeigniter的pathinfo模式url重寫配置寫法示例,pathinfo模式是一種開發(fā)框架都愛用的路由模式,需要的朋友可以參考下
    2014-07-07
  • 詳解Nginx反向代理WebSocket響應403的解決辦法

    詳解Nginx反向代理WebSocket響應403的解決辦法

    本篇文章主要介紹了詳解Nginx反向代理WebSocket響應403的解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Python的Bottle框架基本知識總結

    Python的Bottle框架基本知識總結

    這篇文章主要介紹了Python的Bottle框架基本知識總結,本文翻譯自Bottle官方開發(fā)文檔,需要的朋友可以參考下
    2015-05-05

最新評論