有小伙伴说有没有Nginx的作业指导书,个人认为这个中间件主要测评点就在安全审计,本文这里就简单聊一下等保2.0 条款中对应Nginx中间件的测评要求。
nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,一般主要功能会有两种,一种作为一个HTTP服务器进行网站的发布处理,另外一种nginx可以作为反向代理进行负载均衡的实现。所以这里填主要功能的时候就要分清。
查看Nginx版本:
如果系统有配置nginx命令的环境变量,直接 nginx -v 即可查看版本信息
若无,我们去nginx主目录下运行cmd,输入nginx -v查看版本
由于该中间件并没有类似于Tomcat一样的管理控制台,所以个人认为以下条款均判不适用。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,身份鉴别由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,身份鉴别由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,身份鉴别由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,身份鉴别由操作系统层面实现。
同理判不适用。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,访问控制由操作系统层面实现。
针对于各类的中间件来说,日志一般会分为两种,一种是 error.log 错误日志,另一种是 access.log 网页访问日志。都开启的情况下,我们就可以判符合(前提日志级别配置正确)。
先来看一下 errlog_log:
error_log:设置服务器运行的相关日志 设置格式 error_log 路径 级别 默认值:error_log logs/error.log error; 配置段:main,http,server,location 关闭error_log:error_log off
日志的级别:
debug:调试级别,记录的信息最多; info:普通级别; notice:可能需要注意的信息; warn:警告消息; error:错误消息; crit:严重错误消息;
access_log:
访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。 access_log:用来配置访问日志的输出格式和输出的路径; 语法: access_log path [format [buffer=size [flush=time]]]; 默认值: access_log logs/access.log combined; 后续版本好像有变更,默认为 main; 配置段: http, server, location, if in location, limit_except 关闭access_log:access_log off path:指定日志的存放位置 format:指定日志的格式。默认使用预定义的combined buffer:用来指定日志写入时的缓存大小。默认是64k gzip:日志写入前先进行压缩。压缩率可指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。 flush:设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。 if:条件判断。如果指定的条件计算为0或空字符,那么当前作用域下的所有的请求日志都会被关闭。
所以我们这里先在 Nginx 主目录下找到conf文件夹
其中会有一个叫 nginx.conf 的文件
查看对应error_log和access_log配置情况,默认情况下都是为注释状态
若为注释状态,nginx 会有一个默认值,如下:
error_log logs/error.log error;
access_log logs/access.log main;
日志文件在nginx主目录下的log目录中
默认情况下都是满足条款要求的,比如查看一下 access.log 日志
另外考虑的点就是日志记录的时间是否准确,中间件时间一般跟随操作系统时钟,如果操作系统时间正确,那么基本也不会有问题。
或者我们可以去配置文件中,配置我们自己想要的日志记录内容。
对应参数:log_format
log_format:用来设置日志格式
nginx的log_format有很多可选的参数用于标示服务器的活动状态,默认为:
‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
如果要记录更详细的信息需要自己修改log_format,具体可设置的参数格式及说明如下:
这条日志是之前实验访问应用留下的,我们可以分析一下。
192.168.21.176 - - [28/Sep/2020:14:34:48 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
参数 | 说明 | 示例 |
---|---|---|
$remote_addr | 客户端地址 | 192.168.21.176 |
$remote_user | 客户端用户名称 | — |
$time_local | 访问时间和时间 | [28/Sep/2020:14:34:48 +0800] |
$request | 请求的URI和HTTP协议 | “GET /favicon.ico HTTP/1.1” |
$http_host | 请求地址,即浏览器中你输入的地址(域名或IP) | www.test.com192.168.0.23 |
$status | HTTP请求状态 | 404 |
$upstream_status | upstream状态 | |
$body_bytes_sent | 服务器发送客户端的相应body字节数 | 555 |
$http_referer | url跳转来源 | -https://www.google.com/ |
$http_user_agent | 用户终端浏览器等信息 | “Mozilla/5.0 (Windows NT……” |
$http_x_forwarded_for | 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置 | |
$ssl_protocol | SSL协议版本 | TLSv1 |
$ssl_cipher | 交换数据中的算法 | Rc4-SHA |
$upstream_addr | 后台upstream的地址,即真正提供服务的主机地址 | 10.36.10.80:80 |
$request_time | 整个请求的总时间 | 0.165 |
$upstream_response_time | 请求过程中,upstream响应时间 | 0.002 |
所以如果想要记录更详细,可以自己进行配置。
1. 确认本机的日志文件权限
确认是否仅管理员组具有日志的管理权限,其他组没有修改权限
如users组无权管理修改
Linux系统下同理,对应的日志文件不高于644
2. 是否对日志文件进行定期备份
这个好像默认自带的方式没有找到,那么就去询问一下运维人员,是否有备份措施对中间件日志进行备份。
一般有的现场看到好像是通过FTP同步,会将日志文件同步一份到备份服务器上。
3. 日志留存时间
查看日志留存时间是否达到6个月以上,满足法律法规要求。
审计进程与中间件主进程关联,无法单独中断审计进程,只要开启即符合。
该测评点在操作系统层面核查,中间件不适用该条款。
该测评点在操作系统层面核查,中间件不适用该条款。
通过登录到服务器本地对Nginx 软件进行管理,该项不适用。
该中间件无独立的管理控制台,无对应的人机或通信接口输入功能,该项不适用。
1.通过漏洞扫描、渗透测试等方式核查中间件系统是否存在高风险漏洞;
2.核查是否及时修补漏洞。
询问客户,查看漏洞扫描报告,如果无漏洞可判符合
不存在高危漏洞,判部分符合
该测评点在操作系统层面核查,中间件不适用该条款。
该测评点在设备层面核查,中间件不适用该条款。
数据完整性对于中间件来说,一般涉及鉴别数据、重要审计数据、重要配置数据这三类
1. 鉴别数据、重要配置数据 无独立的登录管理界面,通过登录到操作系统本地管理该中间件,故鉴别数据、重要配置数据等无单独传输过程。 2. 审计数据 确认审计数据是否有传输,如果审计数据有备份的话就需要考虑这点。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,未涉及鉴别数据的存储。
重要配置数据、重要审计数据需要询问管理人员,是否有对配置文件,日志文件等做定期的哈希完整性校验等。
数据保密性来说对于中间件这里仅涉及鉴别数据,Nginx 不涉及鉴别数据,所以均不适用。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,故鉴别数据无单独传输过程。
无独立的登录管理界面,通过登录到操作系统本地管理该中间件,未涉及鉴别数据的存储。
精彩推荐