Apache und PHP Versions-Header entfernen

Apache und PHP sind unter Ubuntu standardmässig etwas gespächig einstellt und teilen dem Browser so immer die Apache und PHP Version mit. Auch die Serversignatur (bei Fehlermeldungen) zeigt die Versionsnummern an. Dies ist aufgrund der Sicherheit nicht empfehlenswert, denn was der Hacker nicht weiss, mach ihn nicht heiss. Die HTTP-Header sehen Standardmässig so aus:
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:23:04 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.5 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.5

Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


In der Datei apache2.conf kann man mit den Optionen ServerTokens und ServerSignature die HTTP-Headers und die Signatur etwas kürzen:
ServerTokens Prod
ServerSignature Off

Die HTTP-Headers vom Apache sehen dann nur noch so aus:
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:43:17 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5.5

Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html


Nun muss nur noch das X-Powered-By von PHP weg und dann ist sind die Headers sauber. Dazu muss man in der Datei php5.ini die Option expose_php anpassen:
expose_php = Off
Und nun sind in den Headers keine Versionsnummern mehr drin.
HTTP/1.1 200 OK
Date: Mon, 04 May 2009 11:45:13 GMT
Server: Apache
Content-Length: 4045
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

Userdirs mit Apache unter Ubuntu

Unter Linux ist es mit dem Apache Webserver möglich jedem Benutzer auf dem Server/Computer einen Platz zu bieten, welche aus dem Internet erreichbar ist. Sofern man aus dem Internet auf den Server zugreifen kann. Der Ordner /home/david/public_html/ wäre dann über die Url http://server/~david/ erreichbar. Natürlich kann man mit einem DNS Server und den richtigen Einstellungen beim Webserver diesen Ordner auch direkt unter einer Domain erreichbar machen.
Dafür, dass man den Ordner public_html über den Webserver erreichen kann, sorgt der Mod Userdir. Standardmässig ist dieser Unter Ubuntu Feisty Fawn zwar dabei aber nicht eingerichtet. Ich finde diese Modul sehr praktisch, also habe ich es noch "installiert".
Dazu öffnet man am besten ein Terminal und wechselt mit dem Befehl su den Benutzer. Nach der Eingabe des Passwortes ist man Root. Die Konfigurationsdateien des Apache Webservers sind im Ordner /etc/apache2 abgelegt. Dort gibt es auch zwei Ordner. Zum einen den Ordner mods-available und den Ordner mods-enabled. Im ersten befinden sich die Module, die verfügbar sind und im zweiten sind die Module, die am laufen sind. Damit die Module nicht doppelt gespeichert werden sind im zweiten Ordern nur symbolische Links zu den Modulen im Ordner mods-available. Im Ordner mit den verfügbaren Modulen finden wir nun auch das Modul Userdir.
root@pluto:/etc/apache2# ls -la mods-available/userdir*
-rw-r--r-- 1 root root 293 2007-01-15 19:10 mods-available/userdir.conf
-rw-r--r-- 1 root root  66 2007-01-15 19:10 mods-available/userdir.load
Zum einen haben wir hier die Konfigurationsdatei userdir.conf und die Moduldatei userdir.load. Jetzt müssen wir je eine symbolische Verknüpfung zu jeder Datei machen. Dazu wechseln wir am besten in den Ordner mods-enabled und erstellen die Verknüpfungen mit dem Befehl ln
root@pluto:/etc/apache2# cd mods-enabled/
root@pluto:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.conf 
root@pluto:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.load

Bevor das Modul nun auch geladen wird, muss man den Webserver noch neustarten
/etc/init.d/apache2 restart

Nun sind die Dateien im Ordner /home/david/public_html/ auch über http://localhost/~david/ erreichbar. Sofern man es natürlich vom Webserver aus probiert.

Installation von Apache, PHP und mySQL unter Ubuntu 6.06

Das Installieren von Programmen in Ubuntu ist nicht wirklich schwierig. Mit den Programm apt kann man ganzen einfach Programme installieren, wenn man weiss wie sie heissen. Und vor allem zu Apache, PHP und mySQL findet man im Internet Dokumentationen bis zum abwinken.
Hier eine kleine Anleitung zur Installation (nicht Konfiguration) von Apache2, PHP5 und mySQL5. Meistens heisst das Packet so wie das Programm, aber es gibt halt auch ausnahmen.
apt-get install apache2
apt-get install php5
apt-get install mysql-server
apt-get install php5-mysql


Die Programmen sind nun installiert. Die Konfigurationsdateien sind an den folgenden Orten abgelegt.
Apache 2: /etc/apache2/apache2.conf
PHP5: /etc/php5/apache2/php.ini
mySQL 5: /etc/mysql/my.ini

Nach der Installation sollte man sicher das Passwort für den mySQL Zugriff ändern, da sonst jeder darauf Zugriff hat.

Ubuntu

http://images.t-error.ch/news/311/ubuntulogo.pngNach meiner langen Linux-Abstinenz wage ich mich nun wieder mal an ein Linux. Seit meiner Leere Lehre bald zwei Jahren hatte ich relativ wenig mit Linux zu tun. Nun gehts aber wieder los. Und zwar gleich mit zwei Projekten.

Zum einen gibt es im Geschäft einen neuen Server. Er wird hauptsächlich benutzt um Bilder von Hotels und Feriendestinationen zu speichern. Und zusätzlich soll er noch meine Flugliste hosten. Das ganze lässt sich gut mit Linux realisieren. Ein Samba Fileserver für die Bilder und ein Apache mit PHP und mySQL für die Flugliste. Nichts aussergewöhnliches, aber mal wieder etwas spannendes mit Linux.
Als Distribution habe ich die Server Edition von Ubuntu gewählt. Version 6.06 mit LTS. Ich habe den Server nun schon aufgesetzt. Schwierigkeiten hatte ich nur beim erstellen des Raid 1 mit zwei 250 GB Platten. Aber lange hielt mich das auch nicht auf. Nun bin ich am konfigurieren der Kiste und werde hier wohl so ab und zu wieder einige Dinge dazu schreiben.

Zum andern Plane ich auch meinem privaten Notebook auch Linux zu Installieren. Geplant ist auch ein Ubuntu, allerdings in der neueren Version und natürlich die Desktop Edition. Momentan benutze ich zuhause noch Windows XP, es könnte also noch spannend werden bei der Umstellung. Einige Dinge sind mir bekannt, die Probleme bereiten könnten/werden:
  • Garmin Edge Software. Soviel ich weiss gibt es da keine Linux Lösung
  • Dual Screen. Mit Windows XP kein Problem. Mit Linux sollte es ja auch möglich sein, aber wohl nicht nur mit einem Klick.
  • Und dann gibt es sicher noch einige andere Dinge, die sich dann spontan melden werden.

Nun warte ich noch auf eine neue Festplatte, da die 60 GB Platte, die momentan eingebaut ist, einwenig zu klein ist.

Trafficklau mit htaccess verhindern

Das Szenario ist wohl manchen Webdesigner bekannt. Bilder die man auf dem eigenen Webserver hat, werden von anderen Leuten direkt eingebunden. Dies führt zu einem erhöhten Traffic, denn man schlussendlich ja selber bezahlt. Derjenige, der das Bild auf einer anderen Webseite einbindet gibt kaum die Quelle an und zahlt natürlich auch nichts an die höheren Traffickosten. Ich habe bereits früher über einige Möglichkeiten zum verhindern von Trafficklau berichtet. Nun habe ich noch eine andere Möglichkeit. Mittels einer htaccess Datei werden Zugriffe mit bestimmten Referer auf Bilder geblockt. Dies setzt einen Apache Webserver voraus.
# kein zugriff auf bilder fuer die angegebenen referer
<Files ~ "\.(gif|GIF|jpg|JPG|bmp|BMP|jpeg|JPEG|pdf|PDF)$">
    SetEnvIfNoCase Referer bbs bilderklau=yes
    SetEnvIfNoCase Referer ebay bilderklau=yes
    SetEnvIfNoCase Referer foren bilderklau=yes
    SetEnvIfNoCase Referer forum bilderklau=yes
    SetEnvIfNoCase Referer gamez bilderklau=yes
    SetEnvIfNoCase Referer guestbook bilderklau=yes
    SetEnvIfNoCase Referer jappy.de bilderklau=yes
    SetEnvIfNoCase Referer kwick.de bilderklau=yes
    SetEnvIfNoCase Referer live.com bilderklau=yes
    SetEnvIfNoCase Referer mybbforo bilderklau=yes
    SetEnvIfNoCase Referer myspace bilderklau=yes
    SetEnvIfNoCase Referer phpBB bilderklau=yes
    SetEnvIfNoCase Referer viewtopic.php bilderklau=yes

    deny from env=bilderklau
</Files>

Mit imgRed gibt es zudem ein Service im Internet, mit dem man zwar Bilder, aber nicht den Traffic klauen kann. Als Bildadresse gibt man die Adresse mit vorangestellter imgRed Adresse an. Zum Beispiel so:
http://imgred.com/http://plog.t-error.ch/images/35.jpg

Da imgRed das Bild aber Cached, wird dem Besitzer des Webspaces zwar kein Traffic gestohlen, das Bild aber immer noch. Dies lässt sich aber auch mit htaccess ganz einfach verbieten:
# imgRed blocken
order allow,deny
deny from 64.131.64.202
allow from all

Apache vs. Skype

Ich hatte auf meinem Geschäftsnotebook schon seit längerem den Apache installiert. Ich benötigte ihn, um am schon erwähnten Fluglistentool zu arbeiten. Seit einiger Zeit hatte ich aber Probleme damit, das heisst, manchmal startete er einfach nicht auf. Auch manuell kontte ich ihn nicht starten.
In der Windowsereignissanzeige wurde der folgende Fehler angezeigt:
(OS 10048)Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden. : make_sock: could not bind to address 0.0.0.0:80.

Alles klar, der Port 80 wird also schon benutzt? Ab von welchem Programm? Ich habe ja nur den Apache installiert und sonst keinen Webserver.
Ein netstat -ao gab dann das folgende aus:
Proto  Lokale Adresse         Remoteadresse          Status           PID
TCP    TOURZH28:http          TOURZH28.Tourasia.local:0  ABHÖREN         368
....

Ein Programm mit der PID 368 benutzt also den Port 80 schon. Im Taskmanager schnell nachgeschaut und siehe da. Der Übeltäter ist Skype. Ich habe Skype installiert, weil wir es vieleicht im Geschäft einsetzten werden, aber ich habe nicht erwartet, dass Skype den Port 80 benutzt. In den Optionen habe ich unter "Verbindung" relativ schnell die Option gefunden: Den Hacken bei "Port 80 und 443 als Alternative für eingehende Verbindungen verwenden" entfernen.
http://images.t-error.ch/news/218/apache_skype.jpg
Jetzt nur noch Skype und danach den Apache neustarten und alles ist gut.