Cover Image

Gjenopprette logging av besøkendes ekte IP-adresser ved bruk av Cloudflare Proxy

 Tue 2022-03-15    Web

Når trafikk til nettstedet routes gjennom Cloudflares nettverk, fungerer Cloudflare som en reverse proxy. Dette gjør at Cloudflare kan redusere tiden det tar for å laste inn en nettside ved å finne mer effektive veier å route trafikken på, cache statisk innhold (bilder, scripts, CSS, etc). Som et resultat av dette vil din egen webserver logge Cloudflares IP-adresser i webloggene.

Hvis man for eksempel installerer en webapplikasjon som er avhengig av IP-adressen til den opprinnelige besøkende, så logges en Cloudflare-IP-adresse som standard. IP-adressen til den opprinnelige besøkende vises i en ekstra header kalt CF-Connecting-IP.

Illustrasjonen under (fra Cloudflare) viser hvordan IP-adresser håndteres med og uten Cloudflare:

Gitt at man bruker Apache som webserver, så finnes det en webservermodul for å komme seg rundt dette problemet: mod_remoteip.

For å installere mod_remoteip på Debian/Ubuntu-servere, gjør som følger:

  1. Aktiver mod_remoteip ved å kjøre følgende kommando:
    % sudo a2enmod remoteip
  2. Oppdater webconfigen til å inkludere RemoteIPHeader CF-Connecting-IP, f.eks i /etc/apache2/sites-available/000-default.conf:
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName remoteip.example.com
    RemoteIPHeader CF-Connecting-IP
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
  3. Oppdater LogFormat-config i apache.conf, og erstatt %h med %a i /etc/apache2/apache2.conf. For eksempel, hvis nåværende LogFormat vises som følger:
    LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    så oppdaterer du det til
    LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    
  4. Angi hvilke IP-adresser som er ansett som "trusted" i en egen configfil (for ryddighetens skyld). Opprett /etc/apache2/conf-available/remoteip.conf og legg inn alle IP-adressene til Cloudflare:
    RemoteIPHeader CF-Connecting-IP
    RemoteIPTrustedProxy 173.245.48.0/20
    RemoteIPTrustedProxy 103.21.244.0/22
    RemoteIPTrustedProxy 103.22.200.0/22
    RemoteIPTrustedProxy 103.31.4.0/22
    RemoteIPTrustedProxy 141.101.64.0/18
    RemoteIPTrustedProxy 108.162.192.0/18
    RemoteIPTrustedProxy 190.93.240.0/20
    RemoteIPTrustedProxy 188.114.96.0/20
    RemoteIPTrustedProxy 197.234.240.0/22
    RemoteIPTrustedProxy 198.41.128.0/17
    RemoteIPTrustedProxy 162.158.0.0/15
    RemoteIPTrustedProxy 104.16.0.0/12
    RemoteIPTrustedProxy 172.64.0.0/13
    RemoteIPTrustedProxy 131.0.72.0/22
    RemoteIPTrustedProxy 2400:cb00::/32
    RemoteIPTrustedProxy 2606:4700::/32
    RemoteIPTrustedProxy 2803:f800::/32
    RemoteIPTrustedProxy 2405:b500::/32
    RemoteIPTrustedProxy 2405:8100::/32
    RemoteIPTrustedProxy 2a06:98c0::/29
    RemoteIPTrustedProxy 2c0f:f248::/32
  5. Aktiver configen vi nettopp laget:
    % sudo a2enconf remoteip
    Enabling conf remoteip.
    
    To activate the new configuration, you need to run:
    service apache2 reload
  6. Test Apache-config:
    % sudo apache2ctl configtest
    Syntax OK
  7. Restart Apache:
    % sudo systemctl restart apache2