aptosid LAMP-Stack
Das Akronym LAMP bezieht sich auf eine Reihe freier Software, die gemeinsam genutzt wird, um dynamische Websites oder Server zu betreiben:
Linux: Betriebssystem
Apache: Web-Server
MySQL: Datenbank-Management bzw. Datenbank-Server
Perl, PHP und/oder Python: Skriptsprachen
Zur Beachtung: Der Desktop-PC, mit dem täglich gearbeitet wird, soll nicht als Server dienen. Als Server soll ein eigener PC verwendet werden, der ansonsten keine weiteren Aufgaben erfüllt.
Verwendungsmöglichkeiten als Server:
a) ein lokaler Testserver für Webdesigner ohne Internetverbindung (siehe dieses Kapitel)
b) ein privater (Daten-)Server mit Internetverbindung
c) ein privater Webserver mit umfassender Internetverbindung
d) ein kommerzieller Webserver (nicht behandelt in diesem Handbuch)
Minimale Voraussetzungen
Mindestens 256MB RAM. Weniger RAM wird Probleme bereiten, da ein Server mit MySQL viel RAM benötigt, um ansprechend zu laufen. Ohne ausreichenden Speicher gibt MySQL folgende Fehlermeldung aus: "cannot connect to mysql.sock".
Die zu installierenden Pakete sind:
apache2 apache2-utils apache2-mpm-prefork php5 php5-common mysql-server mysql-common libapache2-mod-php5 php5-mysql phpmyadmin
ACHTUNG!
apt-get remove --purge splashy
Splashy kann nicht mit mysql!
Die Konfigurationsdatei für Apache befindet sich hier: /etc/apache2/apache2.conf, und das Web-Verzeichnis ist hier: /var/www
Um zu prüfen, ob php installiert ist und korrekt läuft, wird eine Datei test.php in /var/www mit der Funktion phpinfo() auf die Art erstellt, wie es hier angegeben ist:
mcedit /var/www/test.php # test.php <? phpinfo(); ?>
Danach wird der Browser dorthin gelinkt:
http://localhost/test.php oder http://yourip:80/test.php
Dies zeigt alle php-Konfigurationen und Grundeinstellungen.
Die Einstellungen können nun angepasst werden bzw. virtuelle Domains können mit Hilfe der Apache-Konfiguration eingerichtet werden.
Um die Installation zu testen, wird Folgendes in die URL-Zeile des Browsers eingegeben:
http://youripaddress/apache2-default/
Wenn die Installation erfolgreich und korrekt erfolgt ist, sieht man eine Begrüßungsnachricht.
Das Rootverzeichnis für apache2 ist /var/www. Dies muss folgendermaßen angepasst werden:
mkdir /home/myself/www ln -s /home/myself/www /var/www
Danach kann die Website innerhalb des $HOME als normaler User editiert werden.
FTP-Clients
Empfohlen ist SSH (Informationen im Handbuch unter SSH). aptosid liefert mit Konqueror einen FTP-Client mit, welcher auch ermöglicht, Dateien hochzuladen.
Aktivieren von Sicherheitsprotokollen für Webserver
Firewalls
Ohne Firewall gibt es absolut keine Sicherheit für Server. Empfohlene Vorgehensweise ist, ALLES zu blockieren, solange es nicht benötigt ist, und nach Gebrauch wieder zu blockieren.
21 (ftp) 22 (SSH) 25 110 (email) 443 (SSL-http or https) 993 (imap ssl) 995 (pop3 ssl) 80 (http) und auch jeder andere verwendete Port!
Grundsätzlicher Schutz von Server-Dateien
Ein Aspekt von Apache, der gelegentlich missverstanden wird, ist der in der Grundeinstellung festgelegte Zugang. Das bedeutet, solange die Konfiguration nicht verändert ist, kann der Server Clients bedienen, wenn der Server seinen Weg zu einer Datei mittels nomaler URL-Mapping-Regeln finden kann.
Zum Beispiel:
1. # cd /; ln -s / public_html 2. Zugang hat man mit: http://localhost/~root/
Dies erlaubt Clients, das ganze Dateisystem zu durchsuchen! Um dies zu verhindern, muss Folgendes zur Server-Konfiguration gefügt werden:
<Directory /> Order Deny,Allow Deny from all </Directory>
Dies verbietet grundsätzlich Zugang zu Bereichen des Dateisystems. Dementsprechend müssen <Directory>-Blöcke der Konfiguration beigefügt sein, welche Zugriff ausschließlich zu erlaubten Bereichen gestatten. Zum Beispiel:
<Directory /usr/users/*/public_html> Order Deny,Allow Allow from all </Directory> <Directory /usr/local/httpd> Order Deny,Allow Allow from all </Directory>
Besondere Aufmerksamkeit muss dem Zusammenspiel der Anweisungen <Location> und <Directory> geschenkt werden. Zum Beispiel: eine Anweisung <Directory /> kann den Zugang unterbinden, eine Anweisung <Location /> kann dieses Verbot jedoch überschreiben und somit umgehen.
Auch sollte man Experimente mit der Anweisung UserDir vermeiden; eine Konfiguration "./" hätte für root denselben Effekt, wie er im ersten Beispiel gezeigt wurde. Für die Version Apache 1.3 oder höher empfehlen wir nachdrücklichst, folgende Zeile in der Konfigurationsdatei einzufügen:
UserDir disabled root
SSL
Ausführen des Skripts “apache2-ssl-certificate”
# apache2-ssl-certificate
Folgender Dialog wird gestartet, um alle benötigten Informationen eintragen zu können:
Creating self-signed certificate replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt. If you want your certificate to expire after x days call this programm with -days x ----- Generating a 1024 bit RSA private key -------- writing new private key to '/etc/apache2/ssl/apache.pem' -------- You are about to be asked to enter information that will be incorporated into your certificate request. ----------- What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value, ---------- If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company; recommended) []: Organizational Unit Name (eg, section) []: server name (eg. ssl.domain.tld; required!!!) []: Email Address []:
Ausführen des Skripts “a2enmod ssl”:
# a2enmod ssl
Dieses generiert automatisch einen symbolischen Link zwischen mods-available und mods-enabled.
Danach legt man eine Kopie von '/etc/apache2/sites-available/default' im Ordner /etc/apache2/sites-available/ an und benennt sie 'ssl':
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Schließlich erstellt man einen symbolischen Link zu dieser neuen Konfigurationsdatei, um sie zu nutzen:
# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ (oder) #a2ensite ssl
Wenn Einstellungen der Basiskonfiguration in /etc/apache2/apache2.conf und die Grundeinstellung der Document-Route in /etc/apache2/sites-available/default geändert sind, muss der Apache-Server neu gestartet werden.
Der Apache-Server wird mit folgendem Befehl neu gestartet:
#service apache2 restart
Nun wird die Port-Adresse /etc/apache2/ports.conf angepasst. In der Grundeinstellung wird auf Port 80 gelauscht, und da mit SSL installiert wird, muss dies auf Port 443 geändert werden.
Listen 443
In der Konfigurationsdatei /etc/apache2/sites-available/ssl (oder wie immer die ssl-Konfigurationsdatei benannt wurde) wird Port 80 auf 443 geändert.
Im Anschluss werden zwei Zeilen in /etc/apache2/apache2.conf eingefügt:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
In die Datei des SSLCertificateFile /etc/apache2/ssl/apache.pem wird der Ort der Zertifikatsdateien und der Zertifikatsschlüssel eingegeben. Zum Beispiel:
SSLCertificateFile /etc/apache2/ssl/online.test.net.crt SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key
Um ServerSignature auf off (aus) zu setzen, werden in /etc/apache2/apache2.conf zwei Zeilen eingefügt:
ServerSignature Off ServerTokens ProductOnly
Wenn andere Typen von Index-Dateien gewünscht sind, muss folgende Zeile in der Datei /etc/apache2/apache2.conf angepasst werden:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml
Neustart des Apache-Servers
service apache2 restart
Nun soll die Sandbox eines Testservers eingerichtet sein. Dieser Testserver soll NICHT mit dem Internet verbunden werden. Zu diesem Zweck soll ausschließlich ein PC verwendet werden, der als Server dienen soll!
Quellen:
http://www.mysql-apache-php.com
http://httpd.apache.org/docs/1.3/misc/security_tips.html
http://www.debianhelp.co.uk/webserver.htm