nginx介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。
nginx加固
1、禁止目录浏览
备份nginx.conf配置文件。
编辑配置文件,HTTP模块添加如下一行内容:
autoindex off;
保存,然后后重启nginx服务。
2、错误页面
备份nginx.conf配置文件。
修改配置,在http{}段加入如下内容,可以防止信息泄露
http {
...
fastcgi_intercept_errors on;
error_page 401 /401.html;
error_page 402 /402.html;
error_page 403 /403.html;
error_page 404 /404.html;
error_page 405 /405.html;
error_page 500 /500.html;
...
}
修改内容:
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
其中401.html、402.html、403.html、404.html、405.html、500.html 为要指定的错误提示页面。
3、限制不必要的HTTP方法
备份nginx.conf配置文件。
编辑配置文件,添加如下内容:
if ($request_method !~ ^(GET|POST)$ ) {
return 444;
}
保存,然后后重启nginx服务。
备注:只允许常用的GET和POST方法(如果是rest风格api可以不用设置)
4、Nginx降权
备份nginx.conf配置文件。
创建一个普通用户useradd www-data -s /sbin/nologin -M
编辑配置文件,添加如下一行内容:
user www-data;
保存,然后后重启nginx服务。
5、隐藏版本信息(不要用低版本nginx)
备份nginx.conf配置文件。
编辑配置文件,添加http模块中如下一行内容:
server_tokens off;
保存,然后后重启nginx服务。
6、日志配置
1、备份nginx.conf 配置文件。
修改配置,按如下设置日志记录文件、记录内容、记录格式,添加标签为main的log_format格式
(http标签内,在所有的server标签内可以调用):
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
2、在server标签内,定义日志路径
access_log logs/host.access.log main
3、保存,然后后重启nginx服务。
7、控制缓冲区溢出攻击
编辑nginx.conf,为所有客户端设置缓冲区的大小限制。
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
8、封杀各种爬虫扫描器user-agent
user-agent 也即浏览器标识,每个正常的web请求都包含用户的浏览器信息,除非经过伪装,恶意扫描工具一般都会在user-agent里留下某些特征字眼,比如scan,nmap等。我们可以用正则匹配这些字眼,从而达到过滤的目的,请根据需要调整。
if($http\_user\_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan") {
return403;
}
if($http\_user\_agent ~* "") {
return403;
}