分享收藏的安全配置。
No。1 加载 黑名单 的文件
...
http {
...
#### include blacklist config file ####
include blacklist.conf;
# your domains
include domain1.tld.conf;
include domain2.tld.conf;
include domain3.tld.conf;
...
}
blacklist.conf
IP 黑名单
geo $bad_IP {
127.0.0.1 0; # loopback
192.168.1.0/24 0; # local
101.101.101.101 1; # single bad ip address
101.101.101.0/18 1; # ip range in CIDR form
}
阻止全部,但是让一些 IP 通过
geo $admin {
default 1; # block all
123.123.123.123 0; # unblock my ip
}
Method
HTTP 主要分为 GET, POST, UPDATE, DELETE …
我们可以通过配置封锁一些无聊的电脑扫描
# 允许 HEAD, GET
map $request_method $get_method_only {
default 1;
GET 0;
HEAD 0;
}
geoip
类似 IP 一样,不过是通过读取 IP 地区资料。使用2位国家字母。默认没安装。
map $geoip_country_code $bad_referer {
default 0;
US 1; ## block US
}
限制请求 rate limit
例如限制 POST 发送资料到伺服器。
map $request_method $limit {
default "";
POST $binary_remote_addr;
}
limit_req_zone $limit zone=twotwo:10m rate=1r/s;
User-agent
还用 IE 6?古董应该升级一下机器或者游览器了。同样方法可以过滤扫描机器人。
map $http_user_agent $ancient_ua {
default 0; ## allow all
"~MSIE\ [0-6]{1}\." 1; ## old IE
"~Java" 1; ## Java scanning my sh*t ??
"~Transmission" 1; ## BT?
}
伺服器配置
server {
listen 80;
server_name ...;
root ...;
## ip-based
if ( $bad_IP ) {
return 444; # close connection immediately
}
## method
if ( $get_method_only ) { return 444; }
## geoip
if ( $bad_referer ) { return 444; }
## limit post
limit_req zone=twotwo burst=5;
## bad user-agent 提醒用户升级游览器
if( $ancient_ua ) {
return 301 http://domain.tld/upgrade.html;
}
location / {
...
}
}