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

mySQL Passwort ändern

Wie man einen mySQL Server unter Ubuntu Linux installiert habe ich ja schon beschrieben. Der erste Schritt, den man nach der Installation machen sollte ist das ändern des Passwortes. Denn sonst kann man ohne Passwort auf den mySQL Server zugreifen. Wenn auch nur vom localhost.
Mit den folgenden Befehlen kann man das root Passwort ändern.
mysql -u root -p
Enter password:
mysql> set password=password("neues passwort");
Wenn man sich nun wieder bei mySQL einloggt, muss man das neue Passwort eingeben.

Zeilenumbrüche aus Variabeln entfernen

Manchmal ist es wichtig, dass eine Variable nur eine Zeile hat. Zum Beispiel beim versenden von E-Mails über PHP kann es so möglich sein CC oder BCC Empfänger einzuschmuggeln. Verhinden kann man das ganz einfach mit dem folgenden Codeschnippsel:
<?
$trim
=array("name","subject","mail");
foreach(
$trim AS $value)
{
    
$_POST[$value]=preg_replace("/\n.*$/mi","",$_POST[$value]);
}
?>

Damit werden Zeilenumbrüche ein den Variabeln $_POST['name'], $_POST['subject'] und $_POST['mail'] entfernt.

Sichere Passwörter

http://images.t-error.ch/blog/64/image.gifIn den heutigen Zeit ist ein sicheres Passwort sehr wichtig. Bei manchen Computersystemen wird verlangt, dass man das Passwort jeden Monat ändert. Aber was ist ein sicheres Passwort und wie kreiere ich eines?

Ich habe einige Punkte zusammengestellt, die für ein sicheres Passwort wichtig sind.
  • das Passwort muss mindestes 8 Zeichen lang sein
  • es müssen Groß- und Kleinbuchstaben, Ziffern sowie Sonderzeichen vorkommen
  • Leerzeichen sind nicht zulässig
  • es sollte keine Tastaturfolge wie z.B. "qwerty" oder "asdfgh" sein
  • es sollte kein Wort einer bekannten Sprache sein
  • das Passwort sollte man schnell eingeben können, damit es niemand beim Eintippen mitlesen kann
  • das Passwort sollte für andere Benutzer sinnlos sein

Wie kommt man nun auf so ein Passwort? Wildes rumhacken auf der Tastatur führt wohl kaum zum erfolg.
Hier habe ich eine Möglichkeit um ein sicheres Passwort zu kreieren.

Schritt 1
Zuerst bracht man zwei bis drei Wörter, ob sie einen zusammenhang haben ist nicht wichtig. Die Wörter sollten zusammen mindestens 8 Zeichen haben.
nothing to loose


Schritt 2
Nun werden Buchstaben durch ähnliche Zahlen ersetzt. Ein o kann man durch 0 ersetzen, ein i durch eine 1 usw.
n0th1ng t0 l00se


Schritt 3
Wenn nötig kann man nun noch mehrere Zahlen hinzufügen oder doppelte abändern. Schlussendlich sollte man mindestens 2 verschiedene Zahlen haben
n0th9ng t5 l82se


Schritt 4
Nun kann man die Leerzeichen durch Sonderzeichen ersetzen. Zu beachten ist, dass gewisse Systeme Probleme mit einigen Zeichen haben. Mit , . - _ ( ) usw. fährt man aber immer gut.
Das Passwort sollte mindestes ein Sonderzeichen enthalten.
n0th9ng,t5_l82se


Schritt 5
Zum Schluss kommt noch die Gross-/Kleinschreibung. Es ist darauf zu achten, dass mindestes 2 Zeichen gross geschrieben werden. Optimal ist eine verteilung von je 50%.
n0tH9Ng,t5_L82sE


Schritt 6
Der letzte und wohl schwierigste Teil. Das auswenig lernen des Passwortes. Denn das beste Passwort nützt nichts, wenn es auf auf ein Post It geschrieben wird, das am Bildschirm klebt.


Hier noch ein weiteres beispiel:
Homer Simpson
H0mer S1mps0n
H0m4r S1mps6n
H0m4r,S1mps6n
H0m4R,S1mPs6N