Назад | Перейти на главную страницу

Регистрация X-Forwarded-For IP в журналах аудита Shibboleth

Это продолжение моего предыдущего вопроса о захвате X-Forwarded-For IP-адрес через несколько прокси. Теперь я хочу записать IP-адрес клиента в журналы приложения (IdP Shibboleth).

Следующее:

Client > Load Balancer > Apache httpd server > Tomcat server (running Shibboleth's IdP)

Переменная с IP-адресом клиента в балансировщике нагрузки: ClientIP который я могу записать в журналы веб-сервера, используя LogFormat "%{ClientIP}i ... " and similarly in Tomcat's access logs using these inserver.xml`:

<Valve className="org.apache.catalina.valves.RemoteIpValve" 
remoteIpHeader="ClientIP" 
protocolHeaderHttpsValue="https" />

<Valve className="org.apache.catalina.valves.AccessLogValve" 
directory="logs" 
prefix="localhost_access_log." 
suffix=".txt"
pattern="%{ClientIP}i %h %l %u %t %r %>s %b %{Referer}i %{User-Agent}i" resolveHosts="false"/>

Теперь я хочу зафиксировать этот IP-адрес в журналах аудита IdP Shibboleth. Это обсуждение говорит об использовании mod_rpaf для Apache, но не вдавался в подробности. Надеюсь обойтись без установки дополнительных модулей.

Похоже, мне здесь не хватает пары (маленьких?) Деталей. Любые идеи? Большое спасибо!

Покопавшись в LogBack's документация по регистрации IP-адресов клиентов и соответствующий код для сервлета MDCInsertingServletFilter, оказывается, вы должны использовать X-Forwarder-For заголовок.

Мы заменили ClientIP с участием X-Forwarder-For в балансировщике нагрузки обновлено httpd.confс LogFormat войти X-Forwarder-For, затем обновил Shibboleth's logging.xml файл для журналов аудита следующим образом:

<appender name="IDP_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <File>/app/shibboleth-idp/logs/idp-audit.log</File>

  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <FileNamePattern>/app/shibboleth-idp/logs/idp-audit-%d{yyyy-MM-dd}.log</FileNamePattern>
  </rollingPolicy>
  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <charset>UTF-8</charset>
  <Pattern>%msg|%X{req.xForwardedFor}|%n</Pattern>
  </encoder>
</appender>

Мы также внесли аналогичные изменения в idp-процесс., и не необходимо обновить журнал Tomcat.

Надеюсь, это поможет другим.

Изменить 1: ведение журнала Tomcat

Оказывается, через некоторое время X-Forwarded-For IP-адрес перестал отображаться в журналах IdP Шиба. В итоге мы добавили RemoteIpValve в tomcat и перезапуск. Похоже, это все-таки нужно:

  <Valve className="org.apache.catalina.valves.RemoteIpValve"
   remoteIpHeader="X-Forwarded-For"
   trustedProxies="--IPs here--"
   protocolHeaderHttpsValue="https" />