Welkom terug bij “Verkeer op de reverse proxy”, de dagelijkse rondleiding langs alles wat de afgelopen 24 uur tegen onze nginx aan is gelopen. Vandaag een editie met een opvallende hoofdrolspeler: de statuscode 503. Maar er was meer — Googlebot kwam langs, curl bleef trouw kloppen, en een handvol scriptkiddies probeerde wéér of /.env deze keer toevallig openstond. Spoiler: nee.
Hoeveel verkeer was er eigenlijk?
In de laatste 24 uur verwerkte de proxy 9.957 logregels, waarvan er 9.644 netjes als access-log te parsen waren. Samen goed voor ~49,0 MiB aan verstuurde data (51.373.109 bytes, voor de fijnproevers). Die verzoeken kwamen van 961 unieke IP-adressen — een gezonde mix van echte bezoekers, vriendelijke crawlers en, eerlijk is eerlijk, een hoop ongenode gasten.
Het verkeer kwam niet gelijkmatig binnen. Het was urenlang rustig kabbelen, tot het rond 12:00 UTC losbarstte met 2.789 verzoeken in één uur — veruit de drukste piek van de dag. Ook 15:00 (1.056), 17:00 (835) en 20:00 (877) deden flink mee. De nachtelijke uren bleven keurig laag, op een vreemd opflakkertje om 02:00 (327) na.
Mens versus bot
Tijd voor de existentiële vraag: was dit menselijk verkeer? Deels. Van alle verzoeken waren er 2.963 als bot geклassificeerd en 6.681 als overig/mens. Dat “mens” mag je met een korreltje zout nemen, want in de top van de user-agents staat veel geautomatiseerds.
- 2.452 verzoeken kwamen zonder user-agent binnen (gewoon
-) — zelden een teken van een nieuwsgierige mens. - Googlebot was met 2.089 verzoeken de ijverigste bezoeker van de dag.
- curl/8.7.1 klokte 679 verzoeken — een script, geen surfer.
- Verder kwam het hele crawler-gilde langs: Bytespider (252), meta-externalagent (194), Applebot (152) en ClaudeBot (75).
Kortom: de échte mensen tussen Chrome- en Safari-agents waren in de minderheid. Het web is tegenwoordig vooral robots die elkaar gedag zeggen.
Opvallende statuscodes: de 503-tsunami
Hier wordt het interessant. Verreweg de meeste antwoorden vielen in de 5xx-klasse: 5.956 stuks, waarvan maar liefst 5.954 keer een 503 (Service Unavailable). Dat is meer dan de helft van álle verkeer. Ter vergelijking:
- 5xx: 5.956 (waarvan 5.954× 503)
- 4xx: 2.121 (1.179× 400, 907× 404, 32× 403)
- 2xx: 1.010 (1.007× een nette 200)
- 3xx: 557 (430× 301, 117× 304)
Een berg 503’s betekent doorgaans dat een upstream-dienst niet thuis gaf of dat er een rate-limit/circuit-breaker aansloeg. Dat het pad / alleen al 113 keer een 5xx opleverde, en zelfs /robots.txt en /favicon.ico 503’s zagen, wijst erop dat de backend tijdens de piekuren simpelweg even niet beschikbaar was. De 1.179 keer 400 (Bad Request) heeft een andere oorzaak — daarover zo meer bij onze ongenode gasten.
De drukste paden
Wat zochten al die bezoekers? De homepage / won met 194 verzoeken, gevolgd door een mysterieuze - (148, meestal verzoeken zonder geldig pad) en /robots.txt (52). Daarna volgt de bekende WordPress-machinerie van het morenews-thema: stylesheets, fonts, jQuery en de gebruikelijke /wp-cron.php (38).
Eén buitenbeentje springt eruit: /SDK/webLanguage met 46 verzoeken — en allemaal beantwoord met een 503. Dat is geen pad van deze site, maar een bekende probe richting routers en netwerkapparatuur (onder andere Sangfor-appliances). Daarover gesproken…
De verdachte gasten: scriptkiddies en scanners
En dan het leukste deel van de dag: de pogingen van mensen (en bots) die hier niets te zoeken hebben. De lijst met verdachte paden leest als een greatest-hits van geautomatiseerde kwetsbaarheidsscanners:
/.env(18×) — de klassieker. Men hoopt op een achtergelaten configuratiebestand vol database-wachtwoorden en API-sleutels. Niets gevonden, jongens./SDK/webLanguage(46×) — probe naar kwetsbare netwerkapparatuur, niet naar een blog.- Willekeurige PHP-shells zoals
/file.php,/admin.php,/info.php,/about.php,/chosen.php,/222.php,/classwithtostring.phpen het veelzeggende/this_is_a_new_hello_world.php(16×) — automatische pogingen om een eerder geüploade backdoor terug te vinden. “Even kijken of mijn webshell nog ergens staat.” /wp-content/plugins/hellopress/wp_filemanager.php(16×) — gericht op een bekende kwetsbare WordPress-filemanager. Een evergreen onder de aanvallers./wp-content/admin.phpen/wp-cron.php— de standaard WordPress-aftastronde.
De meeste van deze pogingen liepen netjes tegen een 404 of 403 aan, en sommige tegen — je raadt het al — een 503. Geen van allen kwam ergens.
Wie waren de aanstichters?
Eén IP voerde de boventoon: 91.92.33.248 met 2.100 verzoeken in totaal, waarvan 740 als verdacht aangemerkt. Dat is geen toevallige bezoeker maar een toegewijde scanner. Daarachter volgden 20.9.28.111 (426 verdachte verzoeken), 20.63.68.41 (292) en 172.71.164.13 (278). Opvallend: veel verkeer kwam binnen op mijn kale home-IP als Host-header (3.428 keer) in plaats van een nette domeinnaam — een typisch teken van bots die hele IP-ranges afstruinen zonder te weten welke site er draait.
Conclusie van de dag
De rode draad van 25 juni 2026: het was een dag waarop de backend het tijdens de piekuren even liet afweten — die bijna 6.000 503’s liegen er niet om — terwijl op de voorgrond het gebruikelijke leger crawlers en scanners zijn rondjes deed. De echte mensen waren in de minderheid, de scriptkiddies bleven met lege handen staan, en Googlebot werkte onverstoorbaar door. Morgen kijken we weer of de 503’s zijn gaan liggen — en of /this_is_a_new_hello_world.php nog steeds niet bestaat. (Spoiler: dat blijft zo.)