IdP日志功能(手动第6/9步)

        CARSI联盟为学校管理员提供了本单位身份认证服务的统计分析功能,其实现基础是CARSI IdP端的日志统计。在IdP端完成日志配置之后,学校管理员可通过CARSI会员自服务系统https://mgmt.carsi.edu.cn 查看本单位IdP运行和被访问情况。如果不进行相关配置,则在CARSI会员自服务系统无法使用此功能。

  • 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日志分析配置

        注:基于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。如发现在自服务系统中无统计数据展示,请按照以下步骤排查问题:

  1. 确认/var/www/html/auditlog/ 路径下是否有每小时生成的日志文件,并且其中有内容、格式正确
  2. 确认一下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,说明联盟的日志收集服务器可以正常获取贵校日志,只要其中有正常的日志内容即可正常收集。

  3. 如果上述返回码为非200,请继续排查apache的error日志,(/var/log/httpd路径下,error_log及ssl_error_log),查看为何该请求失败。通常可能有以下几种情况
    1. access日志中看到有对auditlog接口的请求,但是返回403错误码。可能是请求的来源IP(第一列)不是115.27.243.6,而是内网的IP地址。此情况说明贵校在IdP服务器之前可能有反向代理或防火墙,导致IP变更为了该反向代理或防火墙的IP。请联系贵校网络部门排查。
    2. 同上,请求地址不是115.27.243.6,但是是外网地址。此情况可以联系北大CARSI团队,排查是否是网络原因。
    3. 返回码为404,可能是因为没有配置auditlog,请参考本页wiki配置日志上报功能。
  4. 如果access日志中没有对auditlog接口的请求,则说明请求被拦截了,请联系贵校网络部门排查。
  5. 也可以使用如下手段辅助排查:请找一台校外的服务器,使用如下命令确认一下是否可以获得日志文件:
    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地址变更的解决办法(由华东师范冯骐老师、河池学院谭可久老师提供):该方案仅供参考,请与贵校网络部门协调处理。

  1. 在反向代理上设置X-Forwarded-For这个header,将用户的真实IP存储在X-Forwarded-For中。并可根据需要设置X-Forwarded-Proto这个header来向下传递真实的请求协议。具体参考wiki:使用反向代理后IdP相关配置调整
  2. 如果反向代理是将请求传递给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>
  3. 如果反向代理是将请求直接传递给IdP的tomcat服务器的话(不再经过IdP服务器上的apache的话),则参考上述wiki(使用反向代理后IdP相关配置调整)进行配置即可       

版权所有©北京大学计算中心