Botteja on helpointa torjua, kun tietää edes suunnilleen paljonko erilaisia user agenteja serverillä käy ja kuinka usein.
Komento laskee GET pyyntöjen määrä ja laittaa ne määräjärjestykseen user agentin ensimmäisen sanan mukaan. Se kerää esimerkiki kaikki mahdolliset Mozilla/5.0 variaatiot samaan lukuun:
awk -F'"' '/GET/ {print $6}' /var/log/nginx/access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn
Jos haluat saman, mutta kaikilla pyynnöillä ja kokonaismäärät per jokainen erilainen user agent, niin se onnistuu pienellä muutoksella:
awk -F"\"" '{print $6}' /var/log/nginx/access.log | sort | uniq -dc | sort -rn
Kuvakaappaus kertoo miksi bottiliikenne on asia, joka on huomioitava serverin kuormituksessa – tuosta määrästä on suurin osa tunnetuista boteista ja crawlereista estetty, samaten suurin osa maailman haittaliikenteestä on estetty geo-blokkauksella sekä Fail2ban estää osan IP-osoitteista, ja silti pelkästään luvallinen bottiliikenne näyttelee isoa osaa koko liikenteestä.
Osa haitallisista/hyödyttömistä boteista näkyy listalla. Ne on jätetty tyhjän päälle Nginxin tiputettua yhteyden kertomalla niille mitään.
- Jos jätät komennon viimeisen
| sort -nr
määritteen pois, niin järjestys muutetaan user agentien mukaiseksi, ei pyyntöjen yhteismäärän mukaiseksi
Kuten aina, niin saman asian saa tehtyä erilaisella komennolla:
cat /var/log/nginx/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n
Voit katsoa kuinka monta kertaa määrätty user agent on käynyt mistäkin IP-osoitteesta. Esimerkissä katsotaan kaikki user agentit, jotka alkavat merkkijonolla UniversalFeedParser/
awk -F\" '($6 ~ /^UniversalFeedParser/)' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -n
- Sen jälkeen katsoin komennolla
grep 107.178.239.218 /var/log/nginx/access.log | more
mitä user agentin käyttämä osoite on oikeasti tehnyt. Tarkistin vielä löytyykö IP:lle host nimeä komennollahost 107.178.239.218
.
Kuvakaappaus kertoo, että kyseessä on ollut Googlen pilvipalveluista tullut podcastien RSS-lukija, joka on saanut tilakoodin444
eli se on jäänyt Nginxin käyttämään bottiestoon kiinni.
Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin.
Profiili: Jakke Lehtonen
Keskustele foorumilla Meta/KATISKA