NPM and forwarding client IP

Permalänk
Medlem

NPM and forwarding client IP

Hej

Jag försöker lista ut hur jag kan skicka vidare client ip som NPM får till min webmin/virtualmin server.

Ser följande information i loggarna i NPM: [31/Dec/2023:23:15:38 +0000] - 200 200 - GET https tokar86a.top "/tag/icedtallchai/" [Client 66.249.66.82] [Length 10150] [Gzip -] [Sent-to 192.168.1.146] "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.71 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"

Men när jag kollar i apache loggarna så visar den bara ip från min docker host: 192.168.1.118.

Kan jag på något sätt ändra det här?

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Man brukar använda headern x-forwarded-for när man kör reverse proxy

Det är för lite detaljer om din setup, vad du vill åstadkomma och varför för att kunna säga mer än så.

Permalänk
Medlem

Det som jag vill åstadkomma att Apache loggarna visar rätt IP information. Lite osäker på vad för typ av information du är ute efter här men trafiken kommer in via Cloudflare -> OPNsense (Skickar vidare 80/443 trafik) -> Docker/NPM (192.168.1.118) -> webmin/virtualmin (192.168.1.146) -> tokar86a.top

Jag kan se mitt internets ip nummer i Wordpress men apache/php verkar använda sig av information

$_SERVER['REMOTE_ADDR'] 192.168.1.118
$_SERVER['SERVER_PORT'] 443
$_SERVER['SERVER_ADDR'] 192.168.1.146
$_SERVER['SERVER_NAME'] tokar86a.top

Men när jag kollar Wordfence så ser jag följande information

IP Detection Methods of detecting a visitor's IP address.
IPs Value Used
REMOTE_ADDR 192.168.1.118
CF-Connecting-IP 92.35.60.* In use
X-Real-IP 162.158.222.6
X-Forwarded-For 92.35.60.**, 162.158.222.6
Trusted Proxies (not set)
Trusted Proxy Preset (not set)

Så behöver få apache/php att använda CF-Connecting-IP ?

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Vad jag har förstått så behöver man ställa in något med mod_remoteip och ändra i logformat. Men har inte luskat ut än exakt hur för att få det att fungera.

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Du har ju X-Forwarded-For och X-Real-IP, du bör kunna modifiera loggformatet så den printar X-Real-IP eller X-Forwarded-For, se: https://www.loadbalancer.org/blog/apache-and-x-forwarded-for-...

Du kan ju alltid byta till Nginx (bättre oavsett) som inte behöver några mod_-grejer för att ändra loggformat.

Permalänk
Medlem
Skrivet av dlq84:

Du har ju X-Forwarded-For och X-Real-IP, du bör kunna modifiera loggformatet så den printar X-Real-IP eller X-Forwarded-For, se: https://www.loadbalancer.org/blog/apache-and-x-forwarded-for-...

Du kan ju alltid byta till Nginx (bättre oavsett) som inte behöver några mod_-grejer för att ändra loggformat.

Jag har ställt in följande:
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Som ger följande: 192.168.1.118 - - [01/Jan/2024:18:29:16 +0100] "POST /wp-content/plugins/wp-piwik/proxy/matomo.php?ping=1&idsite=1&rec=1&r=627441&h=18&m=29&s=16&url=https://tokar86a.top/&urlref=https://tokar86a.top/&_id=7a256cdd3daac5e8&_idn=1&send_image=0&_refts=0&pdf=1&qt=0&realp=0&wma=0&fla=0&java=0&ag=0&cookie=1&res=390x844&pf_net=0&pf_srv=819&pf_tfr=0&pf_dm1=57&pf_dm2=208&pf_onl=1&pv_id=HlMBvT&uadata={} HTTP/1.1" 204 - "https://tokar86a.top/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1" 84.216.156.140, 84.216.156.140

Så det ser ut som den skriver ut clientens ip i slutet nu. Men vill ha den i början med för att det ska se mer rätt ut.

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Har lyckas att få det så här nu. Men frågan är varför den ger dubbel information. Sen verkar inte crowdsec gilla det här för den ger mig mängder med varningar om http-dos-invalid-http-versions.

90.224.176.180, 90.224.176.180 - - [01/Jan/2024:19:21:04 +0100] "GET /wp-content/themes/generatepress/assets/css/main.min.css?ver=3.3.1 HTTP/1.1" 200 4684 "https://tokar86a.top/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" 90.224.176.180, 90.224.176.180

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Varför kör du NPM (som jag i detta fall antar betyder nginx proxy manager?) och sedan apache under något admin-ui? Kan du inte bara köra wordpress som en container?

Visa signatur

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

@oscar:prutt.party / monotux@freenode

Permalänk
Medlem
Skrivet av tokar86a:

Det som jag vill åstadkomma att Apache loggarna visar rätt IP information. Lite osäker på vad för typ av information du är ute efter här men trafiken kommer in via Cloudflare -> OPNsense (Skickar vidare 80/443 trafik) -> Docker/NPM (192.168.1.118) -> webmin/virtualmin (192.168.1.146) -> tokar86a.top

Jag kan se mitt internets ip nummer i Wordpress men apache/php verkar använda sig av information

$_SERVER['REMOTE_ADDR'] 192.168.1.118
$_SERVER['SERVER_PORT'] 443
$_SERVER['SERVER_ADDR'] 192.168.1.146
$_SERVER['SERVER_NAME'] tokar86a.top

Men när jag kollar Wordfence så ser jag följande information

IP Detection Methods of detecting a visitor's IP address.
IPs Value Used
REMOTE_ADDR 192.168.1.118
CF-Connecting-IP 92.35.60.* In use
X-Real-IP 162.158.222.6
X-Forwarded-For 92.35.60.**, 162.158.222.6
Trusted Proxies (not set)
Trusted Proxy Preset (not set)

Så behöver få apache/php att använda CF-Connecting-IP ?

Detta löser ditt problem
https://www.sweclockers.com/forum/trad/1706842-cloudflare-rea...

Skrivet av monotux:

Varför kör du NPM (som jag i detta fall antar betyder nginx proxy manager?) och sedan apache under något admin-ui? Kan du inte bara köra wordpress som en container?

Yes NPM är Nginx Proxy Manager
Han skulle kunna köra wordpress i en container, men han skulle fortfarande ha problem med IP.

Visa signatur

[ Fractal Design Define S Svart ] [ ASUS ProArt X670E-Creator WIFI ] [ Amd Ryzen 9 7950x3D ]
[ G.Skill Trident 64GB DDR5 6000MHz ] [ Noctua NH-D15 Chromax Black ]
[ Western Digital Black SN850X 1TB Gen4 ] [ Samsung 870 QVO 2TB MZ-77Q2T0BW ]
[ ASUS TUF GeForce RTX 3080 10GB Gaming OC ]
[ Corsair AX860 80 Plus Platinum ] [ Gigabyte 32" M32U IPS 4K 144 Hz HDMI 2.1 ]

Permalänk
Medlem
Skrivet av monotux:

Varför kör du NPM (som jag i detta fall antar betyder nginx proxy manager?) och sedan apache under något admin-ui? Kan du inte bara köra wordpress som en container?

Jag har funnit det smidigare att köra Wordpress på en renodlad server istället för i en container eftersom jag vill ha en del saker aktiverat och när jag kör den i en container så måste jag göra ändringar varje gång jag uppdaterar den.

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/

Permalänk
Medlem

Löste det med Apache tror jag med att sätta följande information i advance -> Costume configuration

real_ip_header CF-Connecting-IP;
add_header X-Frame-Options "SAMEORIGIN";

Sen i Apache lägga till

RemoteIPHeader X-Forwarded-For
# replace IP with the remote server you trust
RemoteIPInternalProxy 192.168.1.118

Nu måste jag bara fixa så att Webmin ser rätt information också.

Visa signatur

Min blogg: https://tokar86a.top - Mest fokuserad på Pokémon Sleep & Pokémon Go l Hårdvara/server`s information: https://tokar86a.top/hardware-information/