tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

Varnish ja botit

Sisällys

sdfsdfs

sdfsdf

Jos sinulla on käytössä Varnish, niin Fail2banin takia saatetaan tarvita pari pientä säätöä. Fail2ban lukee logeista IP-osoitteet, mutta backendille – esimerkiksi Apache2 – kaikki yhteydet tulevat IP:stä 127.0.0.1:8080 eli localhostin portista 8080 (tai minkä portin sitten olet asentanutkaan. Kävijän IP-osoite liikkuu Apachelle, jos olet sen erikseen sallinut, koska se siivotaan. Muutoinhan Varnish rakentaisi cachea myös per IP-osoite. Jos IP-osoite otetaan talteen, niin se näkyy ”väärässä” paikassa logeja, koska Varnish ei esitä sitä ensimmäisenä, vaan tietueen viimeisenä.

Joten varmista, että sinulla on lohkossa vcl_recv tämä:

sub vcl_recv {
   set req.http.X-Forwarded-For = client.ip;

Tuon lisäksi täytyy muokata hieman Apachen logeja, jotta tieto saataisiin sellaiseen muotoon, että Fail2ban kykenee sen lukemaan. Muuta virtual hostin log-kohta tällaiseksi:


LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{User-agent}i\"" varnishcombined
CustomLog ${APACHE_LOG_DIR}/access.log varnishcombined

Käynnistä Apache2 uudestaan (ja Varnish vivulla reload, jos teit muutoksia default.vcl tiedostoon):

systemctl restart apache2

Tarkista vielä, että kävijöiden IP-osoitteet saadaan kerättyä. Komennon suorittaminen vie aikansa, riippuen login koosta.

cd /tmp
fail2ban-regex /var/log/varnish/access.log /etc/fail2ban/filter.d/wordpress.conf > wordpress.log

Avaa tiedosto wordpress.log ja varmista, että listauksesta löytyy järkevässä kontekstissä vaihtuvia IP-osoitteita.

vsthrottle

Vsthrottle on Varnishin VMOD eli eräällä tavalla laajennus, joka mahdollistaa rajoituksia määrän mukaan. Normaalistihan Varnishissa rajoitetaan esimerkiksi urlin mukaan, mutta vsthrottle mahdollistaa virheilmoituksen, kun yhtä äkkiä vaikka /wp-login.php alkaa saamaan osumia liian useasti. Fail2ban sulkisi IP-osoitteen määrätyksi ajaksi, mutta vsthrottle sulkee urlin hetkeksi. Seuraus määrätään siis sen mukaan, kuinka usein joku avaintieto tekee saman pyynnön.

Se asentuu ilman lähdekoodivääntöjä, joita KVG tarjoaa, suoraan:

apt install varnish-modules

Vsthrottle on periaatteessa helppo käyttää. Asetetaan