配置日志功能(脚本安装第6/11步)
CARSI联盟为学校管理员提供了本单位CARSI服务的统计分析功能,其实现基础是CARSI IdP端的日志统计。在IdP端完成日志配置之后,学校管理员可通过CARSI会员自服务系统https://mgmt.carsi.edu.cn 查看本单位IdP服务运行和被访问情况。否则,在CARSI会员自服务系统无法使用此功能。
1.IdP日志分类
idp日志安装在logs目录下,默认路径/opt/shibboleth-idp/logs,主要有四个日志文件:
- idp-process.log:记录了idp启动及运行过程所有的日志,如遇到idp运行故障,查看此日志文件来排查
- idp-warn.log:记录了idp启动及运行过程中日志级别为warn的日志
- idp-consent-audit.log:当配置用户隐私保护后,会记录用户隐私保护内容的日志
- idp-audit.log:审计日志,记录用户访问某个sp的日志
注意:IdP的日志默认保留180天,如需要更改,可以修改/opt/shibboleth-idp/conf/logback.xml中的idp.loghistory:-180,改成其他数字,如idp.loghistory:-360,保留360天的日志
2.IdP日志分析配置
日志生成脚本已经提前下载好放在对应的目录下,只需要添加定时任务,每个小时生成日志文件即可。
#添加定时任务 [root@www ~]# crontab -e 0 */1 * * * sh /usr/share/nginx/html/auditlog/auditlog.sh >/dev/null 2>&1
3.nginx日志保留时间配置
nginx日志默认保留10天,为了满足审计要求,可以将nginx日志集中到日志采集设备中(按照采集设备要求进行配置)保留180天,nginx日志所在位置/var/log/nginx/,主要包括2个日志文件
- access.log:nginx访问日志
- error.log:nginx错误信息记录日志
修改nginx默认日志保留时间,rotate 10和daily,表示日志每天记录一个,保留最近10天,可以改成rotate 180,保留最近180天的日志
[root@www ~]# vi /etc/logrotate.d/nginx /var/log/nginx/*log { create 0664 nginx root daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript }
4.测试IdP日志上报接口
在IdP上线后(请务必先确认IdP是否是已上线状态),CARSI联盟的服务器(即上文配置的Allow from的服务器,115.27.243.6)会每小时定时获取贵校的IdP日志,使用的接口即为上文提到的:https://xxx.xxx.edu.cn/auditlog/auditlog-xxxx-xx-xx-xx.log。如发现在自服务系统中无统计数据展示,请按照以下步骤排查问题:
- 确认/usr/share/nginx/html/auditlog/ 路径下是否有每小时生成的日志文件,并且其中有内容、格式正确
确认一下nginx的access日志(/var/log/nginx路径下,access_log),查看是否每小时有对/auditlog/auditlog-xxxx-xx-xx-xx.log接口的请求
[root@www nginx]# cat access.log | grep auditlog 115.27.243.6 - - [05/Mar/2020:09:11:27 +0800] "GET /auditlog/auditlog-2020-03-05-08.log HTTP/1.1" 200 -
如上返回码为200,说明联盟的日志收集服务器可以正常获取贵校日志,只要其中有正常的日志内容即可正常收集。
- 如果上述返回码为非200,请继续排查nginx的error日志,(/var/log/nginx路径下,error_log),查看为何该请求失败。通常可能有以下几种情况
- access日志中看到有对auditlog接口的请求,但是返回403错误码。可能是请求的来源IP(第一列)不是115.27.243.6,而是内网的IP地址。此情况说明贵校在IdP服务器之前可能有反向代理或防火墙,导致IP变更为了该反向代理或防火墙的IP。请联系贵校网络部门排查。
- 同上,请求地址不是115.27.243.6,但是是外网地址。此情况可以联系北大CARSI团队,排查是否是网络原因。
- 返回码为404,可能是因为没有配置auditlog,请参考本页wiki配置日志上报功能。
- 如果access日志中没有对auditlog接口的请求,则说明请求被拦截了,请联系贵校网络部门排查。
- 也可以使用如下手段辅助排查:请找一台校外的服务器,使用如下命令确认一下是否可以获得日志文件:
wget -4 --no-check-certificate --timeout=10 --tries=3 https://xxx.xxx.edu.cn/auditlog/auditlog-2020-xx-xx-xx.log 请将xxx.xxx.edu.cn改为学校idp的域名,auditlog-2020-xx-xx-xx.log改为对应的文件名
注意:/usr/libexec/tomcat9/conf/server.xml中默认配置了仅北大115.27.243.6服务器可访问日志接口,测试时可添加对应的校外服务器到Allow from中。
对于学校配置了反向代理导致IP地址变更的解决办法,在反向代理上设置X-Forwarded-For这个header,将用户的真实IP存储在X-Forwarded-For中。并可根据需要设置X-Forwarded-Proto这个header来向下传递真实的请求协议。具体参考wiki:反向代理对接,请勿将代理IP地址加到Allow from中。
版权所有©北京大学计算中心