中间件安全基线配置手册
1概述
1.1.目的
本文档规定了中间件服务器应当遵循的安全性设置标准,本文档旨在指导系统管理人员或安全检查人员进行中间件的安全合规性检查和配置。
1.2.适用范围
- 本配置标准的使用者包括:服务器系统管理员、应用管理员。
- 本配置标准适用的范围包括:中间件服务器。
2 Nginx基线配置
2.1 版本说明
使用Nginx官方稳定版本,当前提供下列版本:
- Nginx 1.22.1
- Nginx 1.24.0
2.2 安装目录
/opt/nginx-{version}
2.3 用户创建
操作系统中新建nginx用户,用以启动Nginx Worker。
nginx.conf:
user nginx;
2.4 二进制文件权限
/opt/nginx-{version}/sbin/nginx二进制文件权限为755
2.5 关闭服务器标记
关闭服务器标记,避免显示服务器版本信息。
编辑nginx.conf,在http模块中添加:
server_tokens off;
2.5 设置timeout
设置timeout配置可防御DOS攻击。
编辑nginx.conf,在http模块中添加:
client_body_timeout 10;
client_header_timeout 30;
keepalive_timeout 3030;
send_timeout 10;
2.6 设置NGINX缓冲区
防止缓冲区溢出攻击
编辑nginx.conf,在server模块中添加:
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 21k;
2.7 日志配置
统一使用规定好的日志格式.
编辑nginx.conf,在http模块中添加:
log_format main '$remote_addr - $remote_user [$time_local] "$request" "$http_host" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time" "$request_body"';
2.8 日志切割
切割nginx日志,避免日志文件过大
新建日志切割脚本 如下:
#!/bin/bash
#设置日志文件存放目录
logspath="/usr/local/nginx/logs/"
#设置pid文件
pidpath="/usr/local/nginx/nginx.pid"
#重命名日志文件
mv ${logspath}access.log ${logspath}access$(date -d "yesterday"+"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pidpath}`
配置定时任务每日凌晨执行脚本
2.9 限制访问IP
限制访问IP,仅允许指定ip访问指定资源
编辑nginx.conf,在server模块中添加:
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
2.10 限制仅允许域名访问
限制仅允许域名访问,跳过ip扫描
编辑nginx.conf,在server模块中添加:
server {
listen 80default;
server_name _;
return403;
}
2.11 错误页面重定向
nginx默认错误页面包含服务器版本信息,使用自定义错误页面避免版本信息泄露
新建错误页面,放到静态目录中,编辑nginx.conf,在http模块中添加:
fastcgi_intercept_errors on;
errorpage 401/401.html;
errorpage 402/402.html;
errorpage 403/403.html;
errorpage 404/404.html;
errorpage 405/405.html;
errorpage 500/500.html
2.12 限制并发和速度
限制用户连接数及速度来预防DOS攻击
编辑nginx.conf,在http模块中添加
limit_zone one $binary_remote_addr 60m;
在server模块的location中,需要限制的location中添加如下参数:
limit_conn one 50;
limit_rate 100k;
2.13 安装官方补丁更新
防止攻击者利用nginx漏洞进行攻击,定期更新Nginx版本。
查看当前nginx版本
nginx -v
官网下载最新的安全补丁https://nginx.org/en/download.html
2.14 配置正向代理模块
由于项目需要使用到https正向代理,而nginx官方模块仅支持做http正向代理,ngx_http_proxy_connect_module模块可以实现隧道SSL请求的代理服务器
模块下载地址:http://www.github.com/chobits/ngx_http_proxy_connect_module
编译nginx中添加该模块即可
--add-module=/root/ngx_http_proxy_connect_module
创建配置文件即可使用
server{
resolver 114.114.114.114;
resolver_timeout 30s;
listen 80;
proxy_connect;#启用 CONNECT HTTP方法
proxy_connect_allow 44380;#指定代理CONNECT方法可以连接的端口号或范围的列表
proxy_connect_connect_timeout 20s;#定义客户端与代理服务器建立连接的超时时间
proxy_connect_read_timeout 20s;#定义客户端从代理服务器读取响应的超时时间
proxy_connect_send_timeout 20s;#设置客户端将请求传输到代理服务器的超时时间
location /{
proxy_pass $scheme://$http_host$request_uri;
}
}
2.15 防止目录遍历
(1)修改文件nginx.conf
在 http 模块下添加或则修改为 autoindex off
;
(2)重新启动 Nginx 服务。
2.16 服务监控
为了保证nginx服务正常,采用zabbix 监控nginx_status
模块监控nginx服务
nginx配置nginx_status ip白名单
location /nginx_status {
stub_status;
allow 192.168.0.0/16;
allow 127.0.0.1;
deny all;
}
3 TOMCAT基线配置
编号 | 验收项目 | 检查及加固方法 |
1 | 账号管理及认证授权要求 | 账号安全要求
参考配置操作 修改tomcat/conf/tomcat-users.xml配置文件,修改、添加、删除账号,更改默认账号密码。<user username=”tomcat” password=” Tomcat!234” roles=”admin”> 检测操作 访问http://ip:8080/manager/html管理页面,进行Tomcat服务器管理 ,默认账号密码不能登录。 |
2 | 口令安全要求设置的账号口令必须符合大小写字母,数字,特殊字符、长度8位等复杂度要求。 | |
3 | 授权安全要求在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
Tomcat版本用户角色分为:role1,tomcat,admin,manager四种。 role1:具有读权限; |
|
4 | 日志安全要求 | 日志记录配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,以及远程登录时,用户使用的IP地址。
参考配置操作 编辑server.xml配置文件,在<HOST>标签中增加记录日志功能 |
5 | IP协议安全要求 | 使用https方式访问
应尽量使用https方式访问, 判定条件 使用https方式登陆tomcat服务器页面,登陆成功 |
6 | 设备其他安全要求 | 配置登录超时参考配置操作 编辑tomcat/conf/server.xml配置文件,修改为30秒 <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"、 enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="300" disableUploadTimeout="true" /> 重启tomcat服务 |
7 | 更改tomcat服务器默认端口参考配置操作 (1)修改tomcat/conf/server.xml配置文件,更改默认管理端口到8800 <Connector port="8800" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"、 enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="300" disableUploadTimeout="true" /> (2)重启tomcat服务 |
|
8 | Tomcat错误页面重定向
参考配置操作 配置tomcat/conf/web.xml文件 |
|
9 | 禁止tomcat目录浏览
编辑tomcat/conf/web.xml配置文件, <init-param> |
4 Apache基线配置
1 | 账号安全要求 | 以专门的用户帐号和组运行Apache。 |
2 | 日志安全要求 | 编辑httpd.conf配置文件,设置日志记录文件、记录内容、记录格式。 LogLevel notice ErrorLog logs/error_log LogFormat "%h %l %u %t "%r" %>s %b "%{Accept}i" "%{Referer}i" "%{User-Agent}i"" combined CustomLog logs/access_log combined ErrorLog指令设置错误日志文件名和位置。 |
3 | 禁止Apache访问Web目录之外的任何文件 | 参考配置操作 编辑httpd.conf配置文件, <Directory /> Order Deny,Allow Deny from all </Directory> |
4 | 禁止Apache列表显示文件 | 参考配置操作 (1) 编辑httpd.conf配置文件, <Directory "/web"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> 将Options Indexes FollowSymLinks中的Indexes 去掉,就可以禁止 Apache 显示该目录结构。 重新启动Apache服务 |
5 | 自定义错误信息要求 | 参考配置操作 (1) 修改httpd.conf配置文件: ErrorDocument 400 /custom400.html ErrorDocument 401 /custom401.html ErrorDocument 403 /custom403.html ErrorDocument 404 /custom404.html ErrorDocument 405 /custom405.html ErrorDocument 500 /custom500.html Customxxx.html为要设置的错误页面。 (2)重新启动Apache服务 |
6 | 拒绝服务攻击防范 | 参考配置操作 (1) 编辑httpd.conf配置文件, Timeout 10 KeepAlive On KeepAliveTimeout 15 AcceptFilter http data AcceptFilter https data (2)重新启动Apache服务 |
7 | 隐藏Apache的版本号 | 参考配置操作 修改httpd.conf配置文件: ServerSignature Off ServerTokens Prod |
8 | 关闭TRACE | 参考配置操作 使用命令“vi /etc/httpd/conf/httpd.conf”修改配置文件,添加“TraceEnable Off” 注:适用于Apache 2.0以上版本 |
9 | 禁用CGI | 1、 参考配置操作 (1)使用命令“vi /etc/httpd/conf/httpd.conf”修改配置文件,把cgi-bin目录的配置和模块都注释掉 #LoadModule cgi_module modules/mod_cgi.so #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" #<Directory "/var/www/cgi-bin"> …… |
10 | 监听地址绑定 | 参考配置操作 使用命令“vi /etc/httpd/conf/httpd.conf”修改配置文件,修改 Listen x.x.x.x:80 |
11 | 权限增强 | 参考配置操作: 使用命令“chmod 600 /etc/httpd/conf/httpd.conf”设置配置文件为属主可读写,其他用户无权限 使用命令“chmod 644 /var/log/httpd/*.log”设置日志文件为属主可读写,其他用户只读权限 |
结语:
引:“随着网络安全防护技术的复杂化,网络安全体系的构建仍是国内外的研究热点。归纳来讲,网络安全防护体系的建设不能简单依靠各种安全产品的叠加,而是需要结合不同网络架构及业务应用固有的特性,对多种安全机制进行有机融合,形成一套动态、有效、全面的整体防御体系。网络安全防护建设是一个长期、循序渐进的过程,随着网络技术的不断发展,必然会出现各种新的威胁。因此,信息安全防护建设也应随之不断完善和调整,才能构建一道保护网络信息安全的铜墙铁壁。”
原文始发于微信公众号(三沐数安):免费!常用中间件安全加固基线。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论