IdP日志功能(手动第6/9步)
CARSI联盟为学校管理员提供了本单位身份认证服务的统计分析功能,其实现基础是CARSI IdP端的日志统计。在IdP端完成日志配置之后,学校管理员可通过CARSI会员自服务系统https://mgmt.carsi.edu.cn 查看本单位IdP运行和被访问情况。如果不进行相关配置,则在CARSI会员自服务系统无法使用此功能。
idp日志在安装路径logs文件夹下,默认路径/opt/shibboleth-idp/logs,主要有四个日志文件:
idp-process.log:记录了idp启动及运行过程所有的日志,如遇到idp运行故障,查看此日志文件来排查
idp-warn.log:记录了idp启动及运行过程中日志级别为warn的日志
idp-consent-audit.log:当配置用户隐私保护后,会记录用户隐私保护内容的日志
idp-audit.log:审计日志,记录用户访问某个sp的日志
注:基于ova的安装已配置了日志收集,无需重复配置。如遇到问题,请首先参考本文最后的“测试IdP日志上报接口”的内容,确认一下从外网可访问到日志。
CARSI IdP端日志配置方法。
[root@www ~]# vi /opt/shibboleth-idp/conf/audit.xml #line 18 替换 <entry key="Shibboleth-Audit" value="%T|%b|%I|%SP|%P|%IdP|%bb|%III|%u|%ac|%attr|%n|%i|%a|%s|" /> #取消注释 <bean id="shibboleth.AuditDateTimeFormat" class="java.lang.String" c:_0="YYYY-MM-dd'T'HH:mm:ss.SSSZZ" /> <util:constant id="shibboleth.AuditDefaultTimeZone" static-field="java.lang.Boolean.TRUE" /> [root@www ~]# mkdir /var/www/html/auditlog [root@www ~]# vi /etc/httpd/conf/httpd.conf #line 144 修改 Options FollowSymLinks #line 157 </Directory> 后增加 <Directory "/var/www/html/auditlog"> Order deny,allow Deny from all Allow from 115.27.243.6 </Directory> #新建 [root@www ~]# vi /var/www/html/auditlog/auditlog.sh rm -rf /var/www/html/auditlog/auditlog-`date -d -24hours +%Y-%m-%d-%H`.log grep `date -d -1hours +%Y-%m-%dT%H` /opt/shibboleth-idp/logs/idp-audit.log > /var/www/html/auditlog/auditlog-`date -d -1hours +%Y-%m-%d-%H`.log #添加定时任务 [root@www ~]# crontab -e 0 */1 * * * sh /var/www/html/auditlog/auditlog.sh >/dev/null 2>&1 #重启tomcat和apache [root@www ~]# systemctl restart tomcat [root@www ~]# systemctl restart httpd
备注:关于上文中提到的line 18 替换处的IdP Audit log日志格式,详细信息请参见https://wiki.shibboleth.net/confluence/display/IDP30/AuditLoggingConfiguration
测试IdP日志上报接口
在IdP上线后(请务必先确认IdP是否是已上线状态),CARSI联盟的服务器(即上文配置的Allow from的服务器,115.27.243.6)会每小时定时获取贵校的IdP日志,使用的接口即为上文提到的:https://xxx.xxx.edu.cn/auditlog/auditlog-xxxx-xx-xx-xx.log。如发现在自服务系统中无统计数据展示,请按照以下步骤排查问题:
- 确认/var/www/html/auditlog/ 路径下是否有每小时生成的日志文件,并且其中有内容、格式正确
确认一下apache的access日志(/var/log/httpd路径下,access_log及ssl_access_log),查看是否每小时有对/auditlog/auditlog-xxxx-xx-xx-xx.log接口的请求
[root@www httpd]# cat access_log ssl_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,请继续排查apache的error日志,(/var/log/httpd路径下,error_log及ssl_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改为对应的文件名
注意:/etc/httpd/conf/httpd.conf中默认配置了仅北大115.27.243.6服务器可访问日志接口,测试时可添加对应的校外服务器到Allow from中。
对于学校配置了反向代理导致IP地址变更的解决办法(由华东师范冯骐老师、河池学院谭可久老师提供):该方案仅供参考,请与贵校网络部门协调处理。
- 在反向代理上设置X-Forwarded-For这个header,将用户的真实IP存储在X-Forwarded-For中。并可根据需要设置X-Forwarded-Proto这个header来向下传递真实的请求协议。具体参考wiki:使用反向代理后IdP相关配置调整
如果反向代理是将请求传递给IdP的apache服务器的话,则在/etc/httpd/conf/httpd.conf中相关配置改为如下样式。
<Directory "/var/www/html/auditlog"> SetEnvIf X-Forwarded-For "^(115\.27\.243\.6)" Allow1 Order Deny,Allow Deny from all Allow from env=Allow1 </Directory>
- 如果反向代理是将请求直接传递给IdP的tomcat服务器的话(不再经过IdP服务器上的apache的话),则参考上述wiki(使用反向代理后IdP相关配置调整)进行配置即可
Related pages
版权所有©北京大学计算中心