做過面向公網WEB運維的苦逼們肯定見識過各種惡意掃描、拉取、注入等圖謀不軌行為吧?對於直接對外的WEB服務器,我們可以直接通過 iptables 、 Nginx 的deny指令或者是程序來ban掉這些惡意請求。
iptables 需要root權限配置
下面介紹使用nginx 來配置ip禁用
首選需要我們熟悉nginx 的deny指令
allow
語法: allow address | CIDR | unix: | all;
默認值: —
配置段: http, server, location, limit_except
允許某個ip或者一個ip段訪問.如果指定unix:,那將允許socket的訪問.注意:unix在1.5.1中新加入的功能,如果你的版本比這個低,請不要使用這個方法。
deny
語法: deny address | CIDR | unix: | all;
默認值: —
配置段: http, server, location, limit_except
禁止某個ip或者一個ip段訪問.如果指定unix:,那將禁止socket的訪問.注意:unix在1.5.1中新加入的功能,如果你的版本比這個低,請不要使用這個方法。
allow、deny實例
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
假如我們分析我們的網站被某個固定ip訪問
219.143.33.50
219.143.33.52
219.143.33.54
只需要一下兩部搞定
1:配置需要屏蔽的ip的配置文件
下面說明假定nginx的目錄在/usr/local/nginx/conf
首先要建一個封ip的配置文件blockips.conf,然后vi blockips.conf編輯此文件,在文件中輸入要封的ip。
deny 219.143.33.50;
deny 192.168.1.110;
2:引入 ip配置文件,然后reload nginx
然后保存此文件,並且打開nginx.conf文件,在http配置節內添加下面一行配置:
include blockips.conf;
保存nginx.conf文件,然后測試現在的nginx配置文件是否是合法的:
/usr/local/nginx/sbin/nginx -t
如果配置沒有問題,就會輸出:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful
如果配置有問題就需要檢查下哪兒有語法問題,如果沒有問題,需要執行下面命令,讓nginx重新載入配置文件。
/usr/local/nginx/sbin/nginx -s reload
總結:后續再添加需要封的ip只需要收到的添加ip到 blockips.conf 然后reload nginx 即可
1:
/usr/local/nginx/conf/blockips.conf 添加ip
2:
/usr/local/nginx/sbin/nginx -s reload
以上是我個人總結的收到添加封ip 的簡單方式
后續我會更新 自動掃描日志並添加ip到blockips.conf配置文件的 然后reload nginx 的腳步 敬請期待
文檔摘自以下帖子:
http://www.ttlsa.com/linux/nginx-modules-ngx_http_access_module/
http://outofmemory.cn/code-snippet/3393/nginx-deny-ip-or-deny-network-subnets