Your SlideShare is downloading. ×
High Security PHP Applications
International PHP Conference 2008 - Spring Edition
Who is talking

 David Soria Parra
 PHP-Entwickler bei der Mayflower GmbH
 Developer of PHProjekt 6
 PHP Source Committer
Agenda
Wo Security passiert
Distributed Denial of Service
Server Hardening
Apache Verbesserung
MySQL Hardening
PHP Hardeni...
Architektur einer Web-
Applikation
     PHP-Application

Apache MySQL       PHP

          Linux

        Network
Netzwerkattacken: DDoS

Verteilte Denial of Service Attacken
  einige hundert bis mehrere Millionen kompromittierte
  Rech...
Distributed Denial of Service
 Wird vorrangig kriminell genutzt
   Erpressung (in-ist-drin.de 7/2007, many more)
   Politi...
DDoS Schutz
Sie alleine können sich nicht schützen
  Ihr Firewall hilft nicht, wenn ihr Uplink kleiner als 25
  GB/s ist.
...
Schutz für das lokale Netz
 Eine Firewall muss sein
 Nur was sein muss, alles andere aus:
   FTP, SSH, SUN-RPC, DNS, SMTP,...
Linux absichern
nicht benötigte Dienste deaktivieren
nicht benötigte Software deinstallieren
aktuell bleiben
Kernel härten...
GRSecurity
Patchset gegen 2.4.x un 2.6.x Kernel
Beinhaltet PaX
    ASLR, Page NX
Role Based Linux Control (RBAC)
         ...
SELinux
Security Enhanced Linux
von der NSA entwickelt
technisch sehr sicher
            Linux
kompliziertes Rechtesystem
...
AppArmor
Wurde als „SubDomain“ von Immunix entwickelt
... die von Novell gekauft wurden
Teil von Novell/SuSE Linux
Open So...
AppArmor
Einfacher Ansatz für Mandantory Access Control
  Filerechte und POSIX capabilities
  basiert auf Filenamen
Einfac...
Warum ich AppArmor mag
Ihr PHP-Script soll in config.inc.php schreiben
  By default verbieten es beide
SELinux:
  Label für...
Harte Indianer
 Alle nicht benötigten Module deaktivieren
 mod_parmguard

Apache von applikationsspezifischen Filtern für
 ...
mod_security
 von Breach-Security gekauft, heute Dual-Lizensiert
 Filter fürs Grobe
Apache
    Code Executions, Inclusions...
MySQL Sicherheit
MySQL in SELinux/AppArmor laufen lassen
Netzwerk deaktivieren: skip-networking
         MySQL
Filezugriff...
PHP Security
Sichere PHP Konfiguration:
  Ausschalten: allow_url_fopen, allow_url_include,
                      PHP
  disp...
PHP Security


safe_mode hilft nicht PHP

open_basedir pro VHOST
php_admin_flags, php_flags in VHOST declaration
Suhosin Engine Patches

Globale Schutzmechanismen für Low-Level-Bugs
                   PHP
  Memory Manager Hardening (Ca...
Suhosin Extension

Schutz für unbekannten Bugs
                    PHP
Granular verbotene Methoden nach vhosts
Schutz gege...
Suhosin Logging

Viele Ausgabekanäle
                       PHP script, File
  syslog, Shell Script, PHP
Mehrere Loglevel
...
Coding Guidelines
E_ALL/E_STRICT safe coding
keine globalen Variablen nutzen
                       PHP
verbotene Funktion...
Input / Output Flow in PHP
Input check:
  Validierung in Abhängigkeit von dem erwarteten
  Inhalt             PHP
  Invali...
Parameter Binding in PHP
<?php
$pdo = new PDO(DSN);
                PHP
$stm = $pdo->prepare(
     ‘SELECT * FROM foo LIMI...
Input / Output Flow in PHP

  Traue keinem Inhalt
                    PHP
    $_SESSION
   Environment Variable ($_ENV)
  ...
PHP-IDS

Besser als nichts
Irgendwie konnte manPHP
                     es immer umgehen
Keine Ausrede für mangelhafte Val...
Fragen?


      soria_parra@mayflower.de
Upcoming SlideShare
Loading in...5
×

High Security PHP Applications

6,958

Published on

Published in: Technology

Transcript of "High Security PHP Applications"

  1. 1. High Security PHP Applications International PHP Conference 2008 - Spring Edition
  2. 2. Who is talking David Soria Parra PHP-Entwickler bei der Mayflower GmbH Developer of PHProjekt 6 PHP Source Committer
  3. 3. Agenda Wo Security passiert Distributed Denial of Service Server Hardening Apache Verbesserung MySQL Hardening PHP Hardening Applikation sichern
  4. 4. Architektur einer Web- Applikation PHP-Application Apache MySQL PHP Linux Network
  5. 5. Netzwerkattacken: DDoS Verteilte Denial of Service Attacken einige hundert bis mehrere Millionen kompromittierte Rechner (BotNet) Schicken udp, icmp, tcp Packete, reflektiertes DNS typ0-udp-dos Network bis zu 25 GB/s (empirisch)
  6. 6. Distributed Denial of Service Wird vorrangig kriminell genutzt Erpressung (in-ist-drin.de 7/2007, many more) Politisch (Estland 5/2007, mehr als 1.000.000 Computer im Botnet) Kriminell (Anti-419, Anti-Dialer-Sites) War eigentlich mal ein Spass für Scriptkiddies im IRC Network
  7. 7. DDoS Schutz Sie alleine können sich nicht schützen Ihr Firewall hilft nicht, wenn ihr Uplink kleiner als 25 GB/s ist. Ihr Provider kann, „DDos Managed Security Services“ Der Traffic für die angegriffene Seite wird verworfen (/ dev/null) oder zu einem reinigenden Router geschickt Network Blackholing ist im Weihnachtsgeschäft suboptimal, eine Cleaning Router Infrastruktur ist teuer.
  8. 8. Schutz für das lokale Netz Eine Firewall muss sein Nur was sein muss, alles andere aus: FTP, SSH, SUN-RPC, DNS, SMTP, IMAP, POP Ein Service, den sie wirklich brauchen IP-Filterung, eigenes Management-Netz Network besser: ein VPN nutzen
  9. 9. Linux absichern nicht benötigte Dienste deaktivieren nicht benötigte Software deinstallieren aktuell bleiben Kernel härten Linux ungebrauchte Module deaktivieren Kernel-Module global deaktivieren Mandantory Access Control wie SELinux oder AppArmor nutzen
  10. 10. GRSecurity Patchset gegen 2.4.x un 2.6.x Kernel Beinhaltet PaX ASLR, Page NX Role Based Linux Control (RBAC) Access Chroot hardening, Signal logging, etc. Hardened Gentoo, Hardened Linux from Scratch
  11. 11. SELinux Security Enhanced Linux von der NSA entwickelt technisch sehr sicher Linux kompliziertes Rechtesystem Teil vom Mainline Kernel 2.6, Redhat, Fedora, OpenSUSE, Debian
  12. 12. AppArmor Wurde als „SubDomain“ von Immunix entwickelt ... die von Novell gekauft wurden Teil von Novell/SuSE Linux Open Source, unterstützt auch viele andere Linux Distributionen SELinux für Doofe Wir benutzen es gerne
  13. 13. AppArmor Einfacher Ansatz für Mandantory Access Control Filerechte und POSIX capabilities basiert auf Filenamen Einfacher Workflow Linux die Software wird während der Nutzung profiled das Profil wird als Sammlung erlaubter Zugriffe genutzt
  14. 14. Warum ich AppArmor mag Ihr PHP-Script soll in config.inc.php schreiben By default verbieten es beide SELinux: Label für /var/www/html is http_sys_content_t -> Linux Schreibzugriffe erlauben für /var/www/html AppArmor: /var/www/html/config.inc.php w
  15. 15. Harte Indianer Alle nicht benötigten Module deaktivieren mod_parmguard Apache von applikationsspezifischen Filtern für Setzen Parameter mod_security freier, kleine Web Application Firewall filtert nach Whitelist mt regulären Ausdrücken Standardregelsets (gotroot.com)
  16. 16. mod_security von Breach-Security gekauft, heute Dual-Lizensiert Filter fürs Grobe Apache Code Executions, Inclusions, SQL-Injections, XSS mod_security 2.0 Statefull Session support
  17. 17. MySQL Sicherheit MySQL in SELinux/AppArmor laufen lassen Netzwerk deaktivieren: skip-networking MySQL Filezugriff deaktivieren: set-variable = local-infile=0 Unnötige Dinge entfernen: test datenbank default users, default rights Nur wirklich benötigte Rechte vergeben
  18. 18. PHP Security Sichere PHP Konfiguration: Ausschalten: allow_url_fopen, allow_url_include, PHP display_errors, expose_php, file_support, file_uploads, force_redirect, magic_quotes_gpc, register_globals, use_trans_id Anschalten: memory_limit, post_max_size, session.save_path, upload_max_filesize, upload_tmp_dir
  19. 19. PHP Security safe_mode hilft nicht PHP open_basedir pro VHOST php_admin_flags, php_flags in VHOST declaration
  20. 20. Suhosin Engine Patches Globale Schutzmechanismen für Low-Level-Bugs PHP Memory Manager Hardening (Canary/Safe-Unlink) Hashtable Destructor Protection Protection gegen Format String Vulnerabilities Realpath() Härtung
  21. 21. Suhosin Extension Schutz für unbekannten Bugs PHP Granular verbotene Methoden nach vhosts Schutz gegen Remote Inclusion Transparente Session/Cookie Encryption Variable und Upload Filtering
  22. 22. Suhosin Logging Viele Ausgabekanäle PHP script, File syslog, Shell Script, PHP Mehrere Loglevel Log Message mit Datei, Zeile und Angreifer-IP Simulationsmodus zum testen und tunen
  23. 23. Coding Guidelines E_ALL/E_STRICT safe coding keine globalen Variablen nutzen PHP verbotene Funktionen definierte Nutzung von Konstanten Parameter Binding Datenbank-API Libraries für CSRF Schutz, Eingabevalidation, -filterung, -escaping, Datenbankzugriffe
  24. 24. Input / Output Flow in PHP Input check: Validierung in Abhängigkeit von dem erwarteten Inhalt PHP Invalider Input entweder sanitizen oder löschen Output Escaping: Es gibt 5 Escape-Methoden für HTML, 2 für SQL, 2 für Shellausführung. Es git keine Default Escaping
  25. 25. Parameter Binding in PHP <?php $pdo = new PDO(DSN); PHP $stm = $pdo->prepare( ‘SELECT * FROM foo LIMIT :id‘); $stm->bindValue(‘:id‘, 1); $stm->execute(); Bind Parameters in Bezeichnern und Syntaxelementen geht nicht.
  26. 26. Input / Output Flow in PHP Traue keinem Inhalt PHP $_SESSION Environment Variable ($_ENV) auch keiner $_SERVER Variable (HTTP_USER_AGENT, REMOTE_ADDR, etc)
  27. 27. PHP-IDS Besser als nichts Irgendwie konnte manPHP es immer umgehen Keine Ausrede für mangelhafte Validierung, Filterung und Escaping Kann man zum automatische Abmeldung eines Benutzers verwenden
  28. 28. Fragen? soria_parra@mayflower.de

×