In juli 2026 was er een kwetsbaarheid in de Joomla JCE Editor, die een hacker in staat stelde om een jce profiel aan te maken, die daardoor kon inloggen op de website om vervolgens de boel te verknallen.
Het bleek maar weer dat een goede backup maken, belangrijk is want de website bestanden waren kwetsbaar, maar de database gelukkig niet.
Hierdoor was de website snel gerestored en kon de database restore overgeslagen worden en waren de nieuwe artikelen die na de backup gemaakt waren, niet weg!
Vervolgens bleek dat er eigenlijk best veel verkeer richting de websites was. Het merendeel blijkt Google, Microsoft en andere onverlaten die voor hun AI, data verzamelen.
Ik gebruik NGINX als webserver en alle websites schrijven hun informatie naar een en hetzelfde access.log en error.log bestand. Daardoor is het soms moeilijk om te achterhalen welke website uitgevraagt wordt. Meestal proberen ze zaken zoals bekende bestanden, zoals favicon.ico, info.php robots.txt enz.
Alle goede webcrawlers lezen eerst robots.txt en daarin zou moeten staan welke folders ze wel of niet mogen bekijken. Helaas voldoet niet iedereen daar aan, want anders zouden ze de andere bestanden met rust moeten laten, wat dus niet gebeurd!
Gelukkig gaat er een heleboel fout en deze fouten worden weggeschreven in de error.log.
Uit de error.log bleek dat veel verzoeken via poort 80 met http/1.1 gedaan werden. Dus, direct de port 80 forward op mijn router uitgezet en alle, behalve de default website, de server NGINX definities aangepast door de listen 80 en [::]:80 te verwijderen. Hierdoor worden de aanvallers gedwongen via https e.a. te proberen en wordt er waarschijnlijk meer informatie over hen opgeslagen.
Gelukkig heeft Linux een heel goede firewall, genaamd iptables en ip6tables. Via de error.log kwam ik er achter welke ip adressen er gebruikt werden en heb ik al die adress via de commando's;
sudo iptables -A INPUT -p tcp --dport 80 -j DROP # BLock ALL http:/1.1 access on port 80
sudo iptables -A INPUT -p udp --dport 80 -j DROP # BLock ALL http:/1.1 access on port 80
sudo iptables -A INPUT -m iprange --src-range xxx.xxx.xxx.xxx -j DROP
sudo iptables -A INPUT -s xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy -j DROP # Block this ip address permently
geprobeerd tegen te houden. Via het commando sudo iptables -nvL INPUT --line-numbers kreeg ik een overzicht van alle regels en hoe vaak ze gebruikt waren. Zonder de 'n' parameter worden ook de adressen via dns opgezocht, helaas niet allemaal.
Al met al een heel gedoe, maar toch is het verbazingwekkend hoeveel er eigenlijk nog steeds door komt. Een heleboel ip adressen proberen het en daarna niet meer, alsof we netjes bijhouden wat wel en niet lukt. Want na het toevoegen aan iptables blijven toch een heleboel regels, qua aantallen leeg.
Ik heb ook nog iptables-save geinstalleerd, waardoor ik na een reboot niet alle aangebrachte regels kwijt ben.
sudo iptables-save > /home/gebruiker/Documenten/iptablesRule.v5
sudo iptables-restore < /home/gebruiker/Documenten/iptablesRule.v5 werkt, maar volgens mij zou e.a. ook automatisch werken, maar dat zag ik niet gebeuren.
Door de hack bleek dat mijn folder en file permissies waarschijnlijk niet goed stonden, dus;
sudo find /var/www/ -type d -exec chmod 755 {} \;
sudo find /var/www/ -type f -exec chmod 644 {} \; zette al mijn permissies weer goed.
sudo find /var/www/ -name '*.php' -type f -exec chmod 444 {} \; zet alle php bestanden op niet uitvoeren voor iedereen.
Ook heb ik goaccess geinstallerd, want dan krijgt men een redelijk inzicht wat er zoal gebeurd via interpretatie van de access.log.
sudo goaccess /var/log/nginx/access.log -a -o /home/gebruiker/Documenten/GoAccess-report-yyyymmdd.html geeft een redelijk goed overzicht.