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 |