YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Mijn site beveiliging

Marko Heijnen CODEKITCHEN

Mijn Site BeveiligingWordPress Meetup Enschede

Page 2: Mijn site beveiliging

The moment my site got hacked

Page 3: Mijn site beveiliging
Page 4: Mijn site beveiliging

Stay in this bubble

Page 5: Mijn site beveiliging

Alles begint met je server setup

Page 6: Mijn site beveiliging

Opbouw van mijn site

Page 7: Mijn site beveiliging

Loadbalancer Memcached

Elasticsearch

MariaDB

Server setup

Micro services

Webserver 1

Webserver 2

Thumbor

Public Private

CDN

Verkeer

Page 8: Mijn site beveiliging

WordPress setup• Network install

• Running Trunk

• Folder structure: • /bash • /nginx • /www

• /content • /wp

Page 9: Mijn site beveiliging

wp-config.php fun

Page 10: Mijn site beveiliging

1 map hogerUit de www folder

Page 11: Mijn site beveiliging

WP-Config• Security Keys

• $table_prefix

• WP_CONTENT_DIR / WP_CONTENT_URL

• UPLOADS

Page 12: Mijn site beveiliging

WP-Config• Disable Plugin/Theme Editor

define( 'DISALLOW_FILE_EDIT', true );

• Disable Plugin/Theme Update en Installatie define( 'DISALLOW_FILE_MODS', true );

• Block externe URL Requests define( 'WP_HTTP_BLOCK_EXTERNAL', true ); define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );

Page 13: Mijn site beveiliging

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

Page 14: Mijn site beveiliging

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

Page 15: Mijn site beveiliging

Login

Page 16: Mijn site beveiliging

Hardening login• Moeilijk en lange wachtwoord

• IP block voor super admin account (login via VPN)

• Binnenkort verplicht 2fa voor admins

• Binnenkort fail2ban integratie

Page 17: Mijn site beveiliging

• 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

Page 18: Mijn site beveiliging

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

Page 19: Mijn site beveiliging

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

Page 20: Mijn site beveiliging

Firewall

Page 21: Mijn site beveiliging

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

Page 22: Mijn site beveiliging

Application Firewall

Page 23: Mijn site beveiliging

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

Page 24: Mijn site beveiliging

Detection Layer

Page 25: Mijn site beveiliging

Apticron• Cronjob checks als er server update zijn

• Stuurt een mail wanneer er updates zijn

• Totale lijst of alleen nieuwe updates

Page 26: Mijn site beveiliging

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

Page 27: Mijn site beveiliging

Use WordPress to manage WordPress

Page 28: Mijn site beveiliging

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

Page 29: Mijn site beveiliging

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)

Page 30: Mijn site beveiliging

Lijst met alle servers

Page 31: Mijn site beveiliging

Lijst met alle sites

Page 32: Mijn site beveiliging

Overview van je site

Page 33: Mijn site beveiliging

Security checks voor je site

Page 34: Mijn site beveiliging

Checksums voor plugins/themes

Page 35: Mijn site beveiliging

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/

Page 36: Mijn site beveiliging

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

Page 37: Mijn site beveiliging

WP Central API• http://wpcentral.io/api/checksums/theme/

twentyfifteen/1.2

• [{"code":"wpcentral_server_error","message":"Generating checksums”}]

• [{"file":"header.php","checksum":"c0919b5f4b6e4f3a58b858b2305e9146"},{},{},{},{},{},{},{},{},{},{},{},{},{}]

Page 38: Mijn site beveiliging

WP-CLI

Page 39: Mijn site beveiliging
Page 40: Mijn site beveiliging

Coming Soon

Page 41: Mijn site beveiliging

Coming Soon• API endpoint word officieel gereleased

• HTTPS (TLS)

• Mogelijk GPG

• Open Source Vulnerability database (met hoge IP rate check)

Page 42: Mijn site beveiliging

Ideeën zijn meerdan welkom

Page 43: Mijn site beveiliging

Log aggregation

Page 44: Mijn site beveiliging

Log aggregation• Logstash

• Fluentd

• OSSEC

Page 45: Mijn site beveiliging

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/

Page 46: Mijn site beveiliging

Het gebruik van WordPress plugins

Page 47: Mijn site beveiliging

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

Page 48: Mijn site beveiliging

Verdere ideeën

Page 49: Mijn site beveiliging

Verdere ideeën• Notificaties (microservice)

• Bij elke succesvolle admin login

• Bij elke file aanpassing

• Plugin activatie/deactivatie

Page 50: Mijn site beveiliging

Conclusie

Page 51: Mijn site beveiliging

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

Page 52: Mijn site beveiliging

Marko Heijnen• Founder of CodeKitchen

• Lead developer of GlotPress

• Core contributor for WordPress

• Organizer for WordCamp Belgrade

Page 53: Mijn site beveiliging

Marko [email protected]

@markoheijnen

Page 54: Mijn site beveiliging

Bedankt voor je aandacht

Vragen?

@markoheijnen markoheijnen.com

codekitchen.eu


Related Documents