54
Marko Heijnen CODEKITCHEN Mijn Site Beveiliging WordPress Meetup Enschede

Mijn site beveiliging

Embed Size (px)

Citation preview

Marko Heijnen CODEKITCHEN

Mijn Site BeveiligingWordPress Meetup Enschede

The moment my site got hacked

Stay in this bubble

Alles begint met je server setup

Opbouw van mijn site

Loadbalancer Memcached

Elasticsearch

MariaDB

Server setup

Micro services

Webserver 1

Webserver 2

Thumbor

Public Private

CDN

Verkeer

WordPress setup• Network install

• Running Trunk

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

• /content • /wp

wp-config.php fun

1 map hogerUit de www folder

WP-Config• Security Keys

• $table_prefix

• WP_CONTENT_DIR / WP_CONTENT_URL

• UPLOADS

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' );

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

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

Login

Hardening login• Moeilijk en lange wachtwoord

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

• Binnenkort verplicht 2fa voor admins

• Binnenkort fail2ban integratie

• 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

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

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

Firewall

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

Application Firewall

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

Detection Layer

Apticron• Cronjob checks als er server update zijn

• Stuurt een mail wanneer er updates zijn

• Totale lijst of alleen nieuwe updates

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

Use WordPress to manage WordPress

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

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)

Lijst met alle servers

Lijst met alle sites

Overview van je site

Security checks voor je site

Checksums voor plugins/themes

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/

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

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

twentyfifteen/1.2

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

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

WP-CLI

Coming Soon

Coming Soon• API endpoint word officieel gereleased

• HTTPS (TLS)

• Mogelijk GPG

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

Ideeën zijn meerdan welkom

Log aggregation

Log aggregation• Logstash

• Fluentd

• OSSEC

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/

Het gebruik van WordPress plugins

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

Verdere ideeën

Verdere ideeën• Notificaties (microservice)

• Bij elke succesvolle admin login

• Bij elke file aanpassing

• Plugin activatie/deactivatie

Conclusie

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

Marko Heijnen• Founder of CodeKitchen

• Lead developer of GlotPress

• Core contributor for WordPress

• Organizer for WordCamp Belgrade

Bedankt voor je aandacht

Vragen?

@markoheijnen markoheijnen.com

codekitchen.eu