Nginx中间件安全基线配置与操作指南-翻译

1、日志配置

安全基线项目名称

Nginx日志审计安全基线要求项

安全基线编号

Nginx-001

安全基线项说明

配置Nginx日志记录和审核

设置操作步骤

(1)编辑 nginx.conf 配置文件

将 error_log 前的“#”去掉,记录错误日志;

将 access_log 前的“#”去掉,记录访问日志。

(2)设置 access_log,修改配置文件如下:

log_format  formatname  '$remote_addr - $remote_user [$time_local] "$request" '

 '$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log formatname;

#formatname 是设置配 置文件格式的名称志

基线符合性判定依据

查看 nginx.conf 配置文件中,error_log、access_log 前的 “#”是否去掉

备注

2、服务管理

2.1、限制IP访问

安全基线项目名称

Nginx IP访问控制安全基线要求项

安全基线编号

Nginx-002

安全基线项说明

对网站或敏感目录的访问IP进行限制

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置参考如下:

location / {

deny 192.168.1.1; #拒绝 IP

allow 192.168.1.0/24; #允许 IP

allow 10.1.1.0/16; #允许 IP 

deny all; #拒绝其他所有 IP

(2)重新启动 nginx 服务

基线符合性判定依据

查看对网站或敏感目录的访问情况是否有 IP 限制。

备注

根据应用场景,设置合适的 IP 地址,检查配置文件 #more /usr/local/nginx/conf/nginx.conf 中的 server 项。

2.2、控制超时时间

安全基线项目名称

Nginx 超时控制管理安全基线要求项

安全基线编号

Nginx-003

安全基线项说明

控制超时时间,提高服务器性能,降低客户端的等待时间

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

client_body_timeout 10; #设置客户端请求主体读取超时时间

client_header_timeout 10; #设置客户端请求头读取超时时间

keepalive_timeout 5 5; #第一个参数指定客户端连接保持活动的超时时间,第二个参数是可选的,它指定了消息头保持活动的有效时间

send_timeout 10; #指定响应客户端的超时时间

(2)重新启动 nginx 服务

基线符合性判定依据

检查配置文件 #more /usr/local/nginx/conf/nginx.conf

备注

根据应用场景的需要选择合适的参数值。

2.3、强制网站使用域名

安全基线项目名称

Nginx强制网站使用域名安全基线要求项

安全基线编号

Nginx-004

安全基线项说明

躲避IP扫描

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if ($host !~* 'abc.com'){

                  return 403;

          }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

abc.com 替换成自己使用的域名

3、访问权限

3.1、错误页面处理

安全基线项目名称

Nginx 错误页面安全基线要求项

安全基线编号

Nginx-005

安全基线项说明

禁止在所有自动产生的错误页面中显示nginx版本号,防止泄露敏感信息

设置操作步骤

(1) 修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为 server_tokens off;

(2) 重新启动 Nginx 服务

基线符合性判定依据

在地址栏输入一个不存在的页面,验证是否已不显示版本号。

备注

3.2、防止目录遍历

安全基线项目名称

Nginx 防止目录遍历安全基线要求项

安全基线编号

Nginx-006

安全基线项说明

防止服务器目录被遍历,威胁用户数据安全

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为 autoindex off;

(2)重新启动 Nginx 服务。

基线符合性判定依据

查看配置文件 nginx.conf 有无相关设置。

备注

3.3、连接超时设置

安全基线项目名称

Nginx 连接超时管理安全基线要求项

安全基线编号

Nginx-007

安全基线项说明

设置连接超时自动断开,防范DDOS攻击

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为

keepalive_timeout 65; (数值根据需要调整)

(2)重新启动 Nginx 服务。

基线符合性判定依据

查看配置文件 nginx.conf 有无超时设置

备注

3.4、限制访问的方法

安全基线项目名称

Nginx 限制访问方法安全基线要求项

安全基线编号

Nginx-008

安全基线项说明

拒绝除post/get/head方法外的其他方法请求

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if($request_method !~ ^(GET|HEAD|POST)$) {

     return404;

       }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.5、过滤非法user-agent

安全基线项目名称

Nginx 限制访问方法安全基线要求项

安全基线编号

Nginx-008

安全基线项说明

拒绝除post/get/head方法外的其他方法请求

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if($request_method !~ ^(GET|HEAD|POST)$) {

     return404;

       }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.6、URL过滤敏感字

安全基线项目名称

Nginx URL过滤敏感字安全基线要求项

安全基线编号

Nginx-010

安全基线项说明

拒绝一些非法访问

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if ($query_string ~* "union.*select.*\(") {

rewrite ^/(.*)$ $host permanent;

}

if ($query_string ~* "concat.*\(") {

 rewrite ^/(.*)$ $host permanent;

}

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.7、过滤特定url

安全基线项目名称

Nginx 过滤特定URL安全基线要求项

安全基线编号

Nginx-011

安全基线项说明

拒绝访问敏感文件

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

 location ~* \.(bak|save|sh|sql|mdb|svn|git|old)$ {

rewrite ^/(.*)$ $host permanent;

}

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.8、隐藏X-Powered-By头

安全基线项目名称

Nginx 隐藏X-Powered-By安全基线要求项

安全基线编号

Nginx-011

安全基线项说明

隐藏Nginx后端服务指定Header的状态,防止暴露后端语言或框架

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下配置proxy_hide_header项;添加或则修改为

proxy_hide_header X-Powered-By; proxy_hide_header Server;

(2)重新启动 Nginx 服务。

基线符合性判定依据

备注

4、自定义缓存

安全基线项目名称

Nginx 自定义缓存安全基线要求项

安全基线编号

Nginx-012

安全基线项说明

设置自定义缓存以限制缓冲区溢出攻击

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       client_body_buffer_size 16K; client_header_buffer_size 1k; client_max_body_size 1m; large_client_header_buffers 4 8k;

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

上述的参数不是最优参数,仅供参考,请根据linux服务器配置修改

5、SSL协议加固

安全基线项目名称

Nginx SSL协议加固安全基线要求项

安全基线编号

Nginx-013

安全基线项说明

配置只允许ssl使用tls1.3或以上协议

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       ssl_protocols TLSv1.2;

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

配置此项请确认nginx支持OpenSSL,运行nginx -V 如果返回中包含built with OpenSSL则表示支持OpenSSL

你可能感兴趣的:(nginx,中间件,安全)