esittely
Cloudflare on upea nopea ja helppo CDN- ja DDoS-suojaus, mutta yksi haittapuoli on, että Web-palvelimen näkemä IP-osoite on Clouflare-välityspalvelimen osoite, ei varsinainen asiakas.
Tämä voi olla suuri tietoturvaongelma, koska Apache-käyttö- ja virhelokit näyttävät vain Cloudflare-välityspalvelimen IP: n eikä todellisen asiakkaan. Lisäksi, jos sinulla on IP-rajoituksia, jotka on määritelty kohdassa .htaccess
tai PHP-skripti, nämä eivät toimi.
Cloudflare lähettää todellisen asiakkaan IP: n CF-Connecting-IP
HTTP-otsikossa, ja voimme välittää tämän PHP: lle tai Apachelle käyttämällä mod_remoteip
.
Huomaa: Cloudflaren oma Apache-mod mod_cloudflare
on nyt tarpeeton ja lopetetaan Apachen omana mod mod_remoteip
suorittaa saman toiminnon.
PHP-skripti
Voit noutaa todellisen asiakas-IP: n helposti PHP: ssä ilman erillisiä määrityksiä.
echo $_SERVER("HTTP_CF_CONNECTING_IP"); // real IP of visitor
echo $_SERVER("HTTP_CF_IPCOUNTRY"); //country of visitor
Jos teet tämän ja vierailevan IP-osoitteen pätevyys on tärkeä, saatat joutua tarkistamaan, että $_SERVER("REMOTE_ADDR")
sisältää todellisen Cloudflare-välityspalvelimen IP-osoitteen, koska kuka tahansa voi väärentää otsikon, jos pystyy muodostamaan yhteyden suoraan palvelimeen. Lisätietoja on kohdassa Luotetut välityspalvelimet.
Apache
Tämä kokoonpano testattiin Ubuntu 18.04: llä, joten prosessin tulisi olla samanlainen kaikissa Debian-pohjaisissa verkkopalvelimissa.
Tämä menetelmä toimii myös virtuaalilaitteissa. Jos sinulla on useita isännöitäviä sivustoja ja jotkut eivät käytä Cloudlfarea, Apache palauttaa oletuksena takaisin etäosoitteeseen (REMOTE_ADDR
).
Ota kaukosäätimen mod
Aktivoi ensin remoteip
mod.
sudo a2enmod remoteip
Käynnistä Apache uudelleen:
sudo systemctl restart apache2
Muokkaa kokoonpanoa ja määritä luotetut välityspalvelimet
Jotta voimme välittää todellisen asiakkaan IP-osoitteen Cloudflarestta Apachelle, meidän on määritettävä RemoteIPHeader
direktiivin as CF-Connecting-IP
että remoteip
kokoonpanotiedosto /etc/apache2/conf-enabled/remoteip.conf
.
Luo remoteip.conf
kokoonpanotiedosto:
sudo nano /etc/apache2/conf-enabled/remoteip.conf
Lisää vain RemoteIPHeader CF-Connecting-IP
ensimmäisellä rivillä ja sitten luettelon luotettavista Cloudflare-välityspalvelimista sen alla (RemoteIPTrustedProxy
). Koska hakkereiden on helppo huijata CF-Connecting-IP
http-otsikossa meidän on varmistettava, että Apache tietää, mihin välityspalvelimiin voit luottaa. Seuraavaksi sisällyttämäni välityspalvelimet ovat oikein kesäkuusta 2019. Cloudflare pitää päivitetyn luettelon näistä välityspalvelimista täällä: Cloudflare IPv4-välityspalvelimet ja Cloudflare IPv6-välityspalvelimet.
/etc/apache2/conf-enabled/remoteip.conf
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
Tallenna ja poistu (paina CTRL
+ X
, Lehdistö Y
ja paina sitten ENTER
)
Jos Apache ei tunnista CF-Connecting-IP
HTTP-otsikossa (esim. jos Cloudflare on kytketty pois päältä tai sitä ei ole määritetty tietylle virtuaalipalvelimelle), se putoaa takaisin etäosoitteeseen (REMOTE_ADDR
).
Jos Apache havaitsee CF-Connecting-IP
mutta se tulee IP: ltä, jota ei ole määritelty RemoteIPTrustedProxy
(esimerkiksi hakkeri, joka yrittää huijata otsikot), Apache palaa takaisin etäosoitteeseen (REMOTE_ADDR
).
Apache-käyttö- ja virhelokit
Jotta oikean asiakkaan IP (CF-Connecting-IP
) näkyä access.log
ja error.log
, meidän on tehtävä pieni muutos kohtaan apache2.conf
.
Muokata apache2.conf
:
sudo nano /etc/apache2/apache2.conf
Lehdistö CTRL
+ W
ja etsiä LogFormat
.
Oletuslokin muodon tulisi näyttää samanlaiselta kuin alla:
/etc/apache2/apache2.conf
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 %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h
Punaisella muuttujalla on tässä Remote IP. Meidän täytyy vain muuttaa tämä %a
, joka on mod_remoteip
moduuli.
/etc/apache2/apache2.conf
LogFormat "%v:%p %a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%a %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Tallenna ja poistu (paina CTRL
+ X
, Lehdistö Y
ja paina sitten ENTER
)
Käynnistä Apache uudelleen:
sudo systemctl restart apache2
Tarkastella käyttölokea nähdäksesi, onko se nyt raportoimassa CF-Connecting-IP
:
sudo tail /var/log/apache2/access.log -n 200
Varmista, että Cloudlfare Proxy IP ei näy käyttölogissa, vaan sen sijaan oman asiakkaasi IP.
Jos Apache ei tunnista CF-Connecting-IP
HTTP-otsikossa (esimerkiksi jos Cloudflare on kytketty pois päältä tai sitä ei ole määritetty tietylle virtuaalipalvelimelle), loki palaa takaisin etäosoitteeseen (REMOTE_ADDR
).
Jos Apache havaitsee CF-Connecting-IP
mutta se tulee IP: ltä, jota ei ole määritelty RemoteIPTrustedProxy
(esimerkiksi hakkeri, joka yrittää huijata otsikot), loki putoaa takaisin etäosoitteeseen (REMOTE_ADDR
).
Kerro minulle kommenteissa, jos tämä auttoi. Seuraa minua Viserrys, Facebook ja YouTube.
loppusanat Kasvatin AdSense-tulojani 68% AI: n avulla. Lue Ezoic-arvioni saadaksesi selville miten.
0 Comments