Nginx封禁惡意IP

2021-10-09 18:01:25 字數 1493 閱讀 1390

網路攻擊時有發生,

tcp洪水攻擊、注入攻擊、dos等

比較難防的有ddos等

資料安全,防止對手爬蟲惡意爬取,封禁ip

一般就是封禁ip

linux server的層面封ip:iptables

nginx的層面封ip ,方式多種 (但 req還是會打進來, 讓nginx 返回 403, 占用資源)

拓展-自動化封禁思路

編寫shell指令碼

awk統計access.log,記錄每秒訪問超過60次的ip,然後配合nginx或者iptables進行封禁

crontab定時跑指令碼

接下來後面就是關於實際真實雲主機(基於寶塔面板的環境)編寫的shell指令碼

blacklist.sh

(之前所寫的指令碼存在問題,現在已重新修改)

#!/bin/bash

access_file=/www/wwwlogs/**uke.com.log

info_file=/www/wwwlogs/ddos_check.log

blacklist=/www/server/nginx/conf/blacklist.conf

#從日誌上獲取短時間內的訪問量

awk 『end』 acc

essf

ile∣

sort

−nk2

−r

>

access_file | sort -nk2 -r >

access

f​il

e∣so

rt−n

k2−r

>

info_file

ips=($(awk 『』 $blacklist))

flagblack=false

while read line

doip_add=echo $line |awk ''

access=echo $line |awk ''

if [ $access -ge 10000 ];then

for ip in $ips

doif [ $ip = $ip_add ];then

flagblack=true

break

fidone

if [ $flagblack = false ];then

echo "deny ipa

dd;"

>

>

ip_add ;" >>

ipa​dd

;">

>

blacklist

fifi

done <$info_file

crontab -e 進行編輯定時任務

這裡我使用了linux 的crontab設定每5分鐘執行一次,當然你也可以使用swoole的毫毛定時器進行編寫設定成秒級別的檢測執行,這裡我就沒有使用swoole去編寫了。

5 * * * * /www/server/nginx/blacklist.sh

nginx 檢視訪問 IP 並封禁 IP 詳解

1 查詢伺服器所有訪問者ip方法 awk nginx access.log sort uniq c sort nnginx.access.log 為nginx訪問日誌檔案所在路徑 會到如下結果,前面是ip的訪問次數,後面是ip,很明顯我們需要把訪問次數多的ip並且不是蜘蛛的ip遮蔽掉,如下面結果,若...

nginx 檢視訪問 IP 並封禁 IP 詳解

1 查詢伺服器所有訪問者ip方法 awk nginx access.log sort uniq c sort n nginx.access.log 為nginx訪問日誌檔案所在路徑 會到如下結果,前面是ip的訪問次數,後面是ip,很明顯我們需要把訪問次數多的ip並且不是蜘蛛的ip遮蔽掉,如下面結果,...

ip被封禁,怎麼更改ip位址?

上網ip被封禁,該如何更改ip位址,解決問題?換ip的軟體的幾種方法 第一大類是vpn,vpn中也分全域性 和區域性 全域性 就是把你所有的網路資料都傳送到vpn的那端,然後vpn那端再把資料 到目標伺服器,區域性 多見於socket5 web 只對某個程式或者埠進行資料 全域性 可能會影響你的上網...