Top Banner
Marko Heijnen CODEKITCHEN Mijn Site Beveiliging WordPress Meetup Enschede
54

Mijn site beveiliging

Apr 12, 2017

Download

Technology

Marko Heijnen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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