Online zie je veel tips om je WordPress site te beveiligen. Vaak raden ze hiervoor een WordPress plugin aan. Dit is vaak niet de juiste oplossing en tijdens deze presentatie laat ik zien hoe ik het zelf doe. Dit gaat van hoe je site optimaal beveiligd tot hoe je jouw site in de gaten kan houden.
13. Hardening WordPress
• PHP kan de bestanden niet aanpassen
• OPCache word niet ververst tenzij je PHP reload
• WordPress Network install
(Hernoeming van upload directory)
• Veel functionaliteit is zelf geschreven
14. Eigen functionaliteit
• Een eigen per site mu-plugins folder
(/mu-plugins/blog/markoheijnen/plugin-name)
• plugins folder heeft alleen WordPress.org plugins
• Overzicht van plugins is nu opgeschoond
16. Hardening login
• Moeilijk en lange wachtwoord
• IP block voor super admin account (login via VPN)
• Binnenkort verplicht 2fa voor admins
• Binnenkort fail2ban integratie
17. • Fail2ban scant log files zoals /var/log/apache/
error_log en bant IPs die malicious tekens vertonen
• Zoals te vaak foutief ingelogd
• Fail2ban update dan de firewall rules om de IPs
voor een bepaalde tijd te blokkeren
Fail2ban
18. Integratie met WordPress
• WordPress logt de foutieve pogingen via
bijvoorbeeld syslog()
• Voegt nieuwe filter toe aan Fail2ban
• Hierbij leg je uit hoe de log item opgebouwd is
• Voorbeeld: wp-fail2ban
19. Multiserver setup
• In plaats van log file worden acties in een database
opgeslagen
• Op de Fail2ban server draait een cronjob die
nieuwe geblokte IPs toevoegt
• fail2ban-client om IPs te blokken
• Of dit word een microservice die het beheerd
21. UFW
• ufw default deny incoming
• ufw default deny outgoing
• ufw allow out http(s)
• ufw allow out DNS
• ufw allow from {your.home.ip}
• ufw allow out on eth1 to {internal.ip} port 3142
23. Application Firewall
• Actieve preventie van vulnerabilities zoals cross-
site scripting (XSS) en SQL injection
• Sucuri of CloudFlare als een service
• NinjaFirewall als een plugin
• Zelf hou ik het voorlopig op modSecurity
• Momenteel bekijk ik de rule sets van owasp.org
25. Apticron
• Cronjob checks als er server update zijn
• Stuurt een mail wanneer er updates zijn
• Totale lijst of alleen nieuwe updates
26. Apt-dater and Apt-dater-host
• Terminal-based remote package update manager
• Een tool om meerdere servers te managen
• Groeperen van servers
• Install en update packages
28. Server Features
• Geeft alle Linux packages updates weer
• Geeft alle PECL updates weer
• Toont aan als je WP-CLI updates heeft
• Het updaten van WP-CLI
• Opnieuw opstarten van een service
29. WordPress Features
• Geeft alle WordPress updates weer
• Mogelijkheid om een update te doen (todo)
• Checksum scans
• Upload directory scans
• Backups (todo)
• Send WP CLI command (todo)
35. WP Central
• Begon als een platform voor statistieken
• Daarna met een API voor contributors
• Nu het opvragen van checksums voor plugins en
themes
• http://wpcentral.io/api/
36. Node.js server
• Een microserver voor het genereren en opvragen
van de checksums
• Indien het nog niet bestaat word het in de queue
geplaatst en ontvangt de gebruiker een melding
• Tussen WordPress en de node.js applicatie zit
nginx die mogelijk crashes afvangt
37. WP Central API
• http://wpcentral.io/api/checksums/theme/
twentyfifteen/1.2
• [{"code":"wpcentral_server_error","message":"Gener
ating checksums”}]
• [{"file":"header.php","checksum":"c0919b5f4b6e4f3a
58b858b2305e9146"},{},{},{},{},{},{},{},{},{},{},{},{},{}]
45. OSSEC
• Een Open Source Host-based Intrusion Detection
System
• Performs log analysis, file integrity checking, policy
monitoring, rootkit detection, real-time alerting and
active response
• Works with a manager and agents
• https://hackertarget.com/defending-wordpress-
ossec/
47. WordPress plugins
• Persoonlijk geen voorstander om het als
bescherming te hebben
• Als iemand in je site komt heeft de persoon de
mogelijkheid om het uit te schakelen
• Gebruik het als een hulp voor server technologie
• Zoals bij Fail2ban
• Een plugin is je laatste middel voor bescherming
51. Conclusie
• Wanneer je een VPS neemt dien je ook een
gedeelte van de veiligheid op je te nemen
• Host doen over het algemeen diverse dingen al
voor je zoals het blokken van zwakheden in
populaire plugins
• Je hoeft niet door te draaien zoals ik maar check
regelmatig je site en je log files. Zelfs al is het
handmatig
52. Marko Heijnen
• Founder of CodeKitchen
• Lead developer of GlotPress
• Core contributor for
WordPress
• Organizer for WordCamp
Belgrade