網站常常會被惡意 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 方法更簡單:
建一個要封鎖的 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。
發佈留言