Nginx 如何封鎖惡意 IP

Nginx 如何封鎖惡意 IP

Written by

網站常常會被惡意 IP 訪問,這是很平常的事情,但有的訪問的 IP 太暴力了,加重伺服器的負載;有的刻意的想侵入網站,造成網站的損失。

前幾天一個朋友網站,被入侵掛入廣告連結,雖然已經清除了這些廣告碼及腳本文件,但是這些惡意的 IP 還是一直來做怪,避免網站再一次受災,利用 Nginx 的 deny 配置,把這些惡意的 IP 都封鎖掉。

Nginx 的 ngx_http_access_module 模組可以封鎖配置内的 IP 或 IP 段:

封鎖文件範例:

deny 5.35.5.10;  //封鎖 IP
deny 46.161.0.0/16; //封鎖 IP 段從 46.161.0.1 到 46.161.255.254
deny 79.191.10.0/24; //封鎖 IP 段從 79.191.10.1 到 79.191.10.254

配置禁用 IP 或 IP 段的方法:

首先要建一個要封鎖的 IP 配置文件,文件名稱 blockips.conf (在文件中輸入要封鎖的 IP),然後用 WinSCP 上傳到 /etc/nginx/common 資料夾內。

或用 vim 編輯器加入要封鎖的 IP,如下:

vim /etc/nginx/common/blockips.conf

然後編輯 /etc/nginx/sites-available/example.com

在 server 段加入下面的配置:

include common/blockips.conf;

檢查配置有無錯誤:

nginx -t

重啟 Nginx

service nginx restart

如果是安裝 Webinoly LEMP 方法更簡單:

https://webinoly.com/en/

建一個要封鎖的 IP 配置文件,文件名稱為 blockips-nginx.conf (在文件中輸入要封鎖的 IP),然後利用 SFTP 方式,上傳到你的域名根目錄下。

重啟 Nginx 就可以了。

Webinoly LEMP 最新的改版中,已將這個功能加入了腳本,只要執行下列命令,就可以封鎖 IP:

sudo webinoly -blockip=123.231.12.31

以同樣的方式,我們可以使用該 -unblockip 選項將其從封鎖的地址列表中移除 IP。

因為不是用伺服器的防火牆來阻擋,這些惡意 IP 還是可以瀏覽你的網站,只是會變成 403,一樣會耗損 CPU 效能。

在檢查 log 文件時,這些被封鎖的 IP 所查看網站的任何頁面,都會變成 403。

hosted by kinsta

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance