PHP – aber sicher

PHP Skripts sind schnell gezimmert. Allerdings bleibt da oft die Sicherheit außen vor. Mir geht es da auch nicht anders. Aus dem Grund suche ich immer wieder nach Lösungen, die mir die Sache ein wenig abnehmen. Heute bin ich auf PHPIDS gestoßen. Es fängt alle XSS, SQL Injection, header injection, directory traversal, RFE/LFI, DoS und LDAP Angriffe ab. Die Integration in bestehende PHP Anwendungen läuft über ein paar wenige Zeilen Code. Genau dafür übrigens liebe ich die Interpretersprachen.

PHPIDS muss ich mir unbedingt mal installieren!

Neues LVM anlegen

Alle paar Wochen lege ich ein neues LVM an. Dank meines Kurzzeitgedächtnis muss ich jedes mal das HowTo aufmachen und durchblättern. Daher schreibe ich mir das hier in einem Artikel mal auf. Bei VMs lege ich das LVM in einer Partition an, da ich damit dann das logische Laufwerk der VM gegebenenfalls vergrößern oder verkleinern kann. Bei physikalischen Platten würde ich es direkt auf der Platte anlegen.

  1. Partition vom Typ 8e anlegen.
  2. LVM erzeugen (bei den Punkten entsprechende Werte eintragen):
     
    /usr/sbin/lvm
    pvcreate /dev/sd..
    vgcreate VolGroup0. /dev/sd..
    pvdisplay /dev/sd..
     /usr/sbin/lvcreate -l [Wert "Free PE" aus pvdisplay] VolGroup0- -n LogVol0.
    exit
    
  3. Filesystem anlegen:
    /sbin/mkfs.ext3 /dev/VolGroup0./LogVol0.
    
  4. Mounten, fstab eintragen… alles wie normal

Prevent Dos Attacks

Auf der HAProxy News Seite habe ich eben den kurzen Artikel „HAProxy to counter DoS attacks“ gelesen. Willy Tarreau schreibt dort warum HAProxy gegen Slowloris hilft. Sehr lesenswert! Ein Grund mehr warum HAProxy mein favorisierter Loadbalancer für http(s) ist.

Aber auch ohne HAProxy lässt sich solch ein Angriff beim Apache Webserver abwehren. Dafür kann man mod_qos nehmen. Eine gute kurze Anleitung für Debian findet sich wie so häufig bei howtoforge.com. Das Modul baue ich mir sicher vor dem nächsten Rothsee-Triathlon-Festival auf meinem Server ein 😀

Wehe dem, der slowloris gegen meine private Kiste einsetzt! 😀

sudo und die .bash_history

Ich such immer noch nach einer vernünftigen Lösung für sudo zusammen mit der .bash_history. Ich möchte mir einfach mit sudo Superuserrechte holen aber dennoch alles in meiner persönlichen History speichern.

Starte ich nun die superuser shell mit „sudo -s“ klappt das. „-s“ übernimmt das Environment des aktuellen Users statt des root users. Das nervt bei allen Befehlen die in /sbin oder /usr/sbin stehen. Starte ich sudo mit „sudo su -“ ist es genau umgekehrt.

Jemand eine Idee? Alle Versuche mit HISTFILE (etwa:

sudo HISTFILE=~`whoami`/.bash_history -s

) waren erfolglos 🙁

Update: Ich werde wohl bei sudo -s bleiben und meine ~/.bash_profile um folgendes ergänzen:

PATH=$PATH:/usr/sbin:/sbin:$HOME/bin

Gnome Session dauert keine 10 Sekunden

Brav wie ich bin, spiele ich die aktuellsten Updates ein. So auch gestern. Prompt schmiert mir mein Gnome sofort nach 10 Sekunden ab und loggt mich aus. Zwar kann ich beim zweiten Versuch arbeiten, darf aber den Dialog der mir sagt, dass die letzte Sitzung weniger als 10 Sekunden dauerte und dies auf Installationsprobleme oder zu wenig Speicherplatz deutet, nicht schließen. Ich kann mit dem Dialog die ~/.xsession-errors Datei ansehen. Schließe ich den Dialog schließt sich gnome! Super!

Die Lösung habe ich dann doch noch gefunden. Einfach beide Verzeichnisse: ~/.config/gnome-session und ~/.config/session-state löschen. Fertig!

PHP Notizen

Hab mal wieder eben was mit PHP zu tun gehabt. Daher 2 Notizen:

  1. Fehlermeldungen in PHP einschalten:
    Statt immer den Webserver oder die PHP.ini umzustellen reicht natürlich auch folgender Code im Skript:

    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    
  2. Zeilenumbrüche unabhängig vom Betriebssystem:
    Warum Windows das anders macht als Linux/Unix nervt mich schon immer. Jedenfalls werde ich ab sofort statt „\r\n“ bzw. „\n“ in Zukunft die PHP Konstante PHP_EOL nehmen! Also sowas wie:

    $msg .=  PHP_EOL;
    

Hosen runter … Researcher: Middle East Blackberry Update Spies on Users

Wired berichtet über einen Provider im Nahen Osten, der seine Blackberry Kunden ausspionieren wollte. Es hat schon einen Grund warum Blackberry eine Kanadische Firma ist.

Ich fürchte Blackberry ist da keine Ausnahme. Amazon löscht Bücher. Apple disabled Apps remotely.

Zumindest bleib ich mal Symbian treu. Die Hoffnung ist, dass es durch OpenSource gläsern wird und man etwas besser geschützt ist. Oder kennt jemand einen ähnlichen Fall mit einem Symbian Telefon?

PS: Ich hab das N97 jetzt bestellt 🙂

Mehr Speicher

Ich hab meinen Server endlich mehr Speicher gegeben. Mit den bisherigen 512MB war er doch oft sehr am Limit. Jetzt hat er stolze 4GB. Natürlich habe ich gleich den Speicher gerecht unter den Hauptdaemons (MySQL und Apache) auf dem Server aufgeteilt.

Mysql war einfach. Dort hab ich einfach die Standard my.cnf von Debian durch die my-large.cnf ausgetauscht. Fertig. Mal sehen ob das was bringt.

Nachdem alle meine Anwendungen auf dem Server unter PHP laufen haben ich mich beim Apache primär auf den APC gestürzt. Da habe ich den stolzen 32MB Cache eben vervierfacht. Für den 128MB Cache sind folgende Einträge notwendig:

/etc/sysctl.conf:

kernel.shmall = 134217728
kernel.shmmax = 134217728

Danach Aktivieren mit:

sysctl -p

Und noch APC konfigurieren:
/etc/php5/apache2/conf.d/apc.ini

apc.shm_size=128

Noch Apache neustarten. Fertig.

Mal sehen ob ich mir jetzt das Swappen nicht mehr so oft anhören muss Mein Server steht im Arbeitszimmer neben mir und da kann ich tatsächlich hören, wenn er swapt. 🙂