Grundvoraussetzung
Als Grundvoraussetzung sollte natürlich ein Rechner vorhanden sein. (Es wäre u.a. auch möglich, das ganze in eine VM zu installieren.) Da ich nicht vorhabe, irgendeine GUI / Windowmanager zu installieren, muss es nicht die „Überdrüberkiste“ sein. Sollte der Server im Produktiveinsatz sein, ist es grundsätzlich anzuraten, wirklich nur die notwendigsten Dienste zu installieren. Auf ein GUI (KDE / GNOME etc.) sollte man verzichten. Je mehr auf dem PC, der der Server werden soll, installiert wird und an Diensten läuft, desto größer ist die potentielle Angriffsfläche!
Eine Internetanbindung ist für dieses Vorhaben auch notwendig, da ich als Installationsmedium den Debian Netinstaller nehme.
Debian Lenny herunterladen und Installation starten
Zuerst laden wir uns den Debian Netinstaller herunter: Lenny (=Stable)
Danach wählen wir I386 und laden die Datei debian-506-i386-netinst.iso herunter.
Gut! Nun wird per CD/DVD Brennprogramm diese ISO Datei auf eine CD gebrannt und mittels dieser CD gebootet. Sollte man in einer VM arbeiten (zb Virtualbox), so bindet man die Isodatei (siehe Screenshot -> Virtualbox) über Massenspeicher ein und gibt als Laufwerk die ISO-Datei an.
Ich gehe hier jetzt nicht weiter auf die Installation von Debian Lenny per Netinstaller ein, da dies meiner Meinung nach kein großer Aufwand ist.
Für WICHTIG halte ich allerdings, nur das Grundsystem bei der Softwareauswahl zu wählen, denn alles andre installieren wir per Hand nach.
Nach Ende der Grundinstallation
Da nun relativ viel Arbeit per Konsole bzw. Texteditor ansteht, empfehle ich die Installation des Editors eurer Wahl. Ich wähle hier immer vim.
- apt-get install vim
- RETURN
So, Apache werden wir auch noch benötigen, + phpmyadmin. In einem Rutsch erfolgt die Installation mit:
- apt-get install phpmyadmin
- RETURN
Durch die Installation des Paketes phpmyadmin werden sämtliche andere Pakete, die wir benötigen nachgezogen.
Erfolg prüfen
Webserver sollte laufen. Um dies zu checken, haben wir mehrere Möglichkeiten. Die erste wäre ein Verbindungsversuch von einem anderen Rechner auf die IP unseres Debianserver. Im Falle, dass wir in einer VM arbeiten, funktioniert das meiner Erfahrung nach nur mit einem bridged Network, bei dem das Gastsystem (Debianserver) eine IP im gleichen Netz des Hostsystemes erhält.
Nun, der Aufruf im Webserver sollte jedenfalls folgendes zu Tage fördern:
Eine weitere Testmöglichkeit wäre telnet, direkt von der Konsole des Linuxserver (schaut dann so aus):
Scheint also zu funktionieren. Was ist mit phpmyadmin? Funktioniert das auch?
- Webbrowser: Aufruf über die IP Adresse gefolgt von /phpmyadmin:
- Login mit Root ohne Passwort und … Klatsch -> Fehlermeldung: #2002 – Der Server antwortet nicht. (evtl. ist auch der Socket des lokalen MySQL-Servers socket nicht korrekt konfiguriert)
Aha, da hat es was mit Mysql. Also versuchen wir mal den Mysqldienst zu starten:
- /etc/init.d/mysqld start
- RETURN
Führt direkt zum nächsten Fehler, nämlich Datei oder Verzeichnis nicht gefunden. Na, da wird wohl der MySqlserver nicht installiert sein. Checken wir das mal:
Über den Befehl apt-cache policy mysql-server, kann man prüfen, ob das Paket installiert ist. Wie man im Screenshot (oberhalb) sieht, Installiert: KEINE. Deshalb funktioniert also der Mysqlserver nicht und phpmyadmin bekommt keine Verbindung zum Dienst.
Wir installieren mysql-server:
- apt-get install mysql-server
- RETURN
Nach dem Download ist dann noch das Passwort des root-User zu setzen. Hierbei sollte in möglichst starkes Kennwort gewählt werden. Weiters zu beachten ist, dass zb bei Installation eines CMS nie der Rootuser für die laufende Datenbankverbindung verwendet werden soll! Root darf bekanntlich alles! Für normale Datenbankabfragen etc. ist ein Extrauser, der nur auf seine eigene Datenbank zugreifen darf, anzulegen und niemals auf Root zurückzugreifen.
Nach dem Installieren des mysql-server Paketes, sollte nun ein Login in phpmyadmin, mit User root und dem gewählten Passwort möglich sein. Man kann vorher noch sicherstellen, ob der Dienst des Mysqlserver läuft. Am besten macht man das mit einem:
- netstat -a | grep mysql
- RETURN
Läuft der Dienst, sollte die Ausgabe so aussehen:
Datenbank mit phpmyadmin anlegen
Wir loggen uns als root-User in phpmyadmin ein und legen die Datenbank (mit beliebigem Namen und Zeichensatz utf8_general_ci an):
Dadurch erhalten wir zuerst einmal eine leere Datenbank ohne Tabellen bzw. irgendwelche Felder (die ja normalerweise in den Tabelle stehen würden).
User anlegen und der Datenbank zuweisen
Zurück auf die Startseite von phpmyadmin (Haussymbol links oben).
Danach Klick auf Rechte -> Im nächsten Fenster dann Neuen Benutzer hinzufügen und folgendes eingeben (natürlich kann Username und Passwort frei gewählt werden). Als Host Lokal:
Abermals Klick auf Reiter Rechte, um den User (joomlausr) zur Datebank (joomla) zuzuweisen. Hierfür klickt man in der Zeile des User joomlausr auf das Symbol ganz rechts:
Im erscheinenden Fenster kann man die globalen Rechte des User joomlausr einstellen. DAS WOLLEN WIR ABER NICHT. Wir wollen dem User nur datenbankspezifische Rechte zuweisen. Weiter unten wählen wir deshalb im Dropdownmenü unsere Datenbank aus: joomla:
Danach können wir die Datenbankspezifischen Rechte anpassen / einstellen:
- Bei Rubrik DATEN vorerst ALLE Haken setzen
- Bei Rubrik STRUKTUR vorerst ALLE Haken setzen
So, mit Klick auf OK (rechts) ist auch das erledigt.
Joomla Download
Mit Hilfe von wget holen wir uns die Joomladatei in deutscher Sprache von www.joomla.de
- wget http://www.joomla.de/images/eigene-dateien/joomla/Joomla_1.5.21-Stable-Full_Package_German.zip
- RETURN
- ACHTUNG: Der Download erfolgt in das Verzeichnis, in dem man gerade „steht“.
- Am besten, man wechselt gleich in das entsprechende Verzeichnis im Document Root des Apache (Standard /var/www) und führt den Befehl dann aus.
Die Datei kommt als ZIP, wir benötigen also unzip UND müssen die Datei „entzippen“:
- apt-get install unzip
- RETURN
- unzip Joomla_1.5.21-Stable-Full_Package_German.zip (Tip: Mit der TAB Taste kann man in der Linuxkonsole Eingaben vervollständigen und muss somit nicht den ganzen Namen eintippen)
- RETURN
- Braucht man die ZIP nicht mehr, kann man sie löschen: rm *.zip
- RETURN
Joomla Installation starten
Browser öffnen und die IP/URL in die Adresszeile eingeben. Hat man Joomla im Rootverzeichnis des Webserver installiert, startet die Installation sofort und die Sprache ist auszuwählen. Befinden sich die Joomlainstallationsdateien in einem Unterverzeichnis und nicht direkt im Rootverzeichnis des Webserver, dann muss man die gesamte Adresse, bis hin zum Verzeichnis in dem die Joomladateien liegen, in der Adresszeile des Browser angeben. Aufgerufen wird jedenfalls (normalerweise automatisch) „install.php“.
Deutsch ist die richtige Sprache, deshalb -> Klick auf weiter oben rechts. Es folgt eine Auflistung bzw. die Prüfung des Systems auf Kompatibilität. In unserem Fall sollte nun eigentlich „angemeckert“ werden, dass die Datei configuration.php nicht beschreibbar ist bzw. dass die Anzeige von Fehlermeldungen aktiv ist.
An sich kein Problem. Wir erstellen schnell mal ne leere configuration.php in der Konsole:
- touch /var/www/configuration.php
- RETURN
- chmod 755 /var/www/configuration.php
- RETURN
- chown www-data /var/www/configuration.php
- RETURN
Zurück im Webbrowser klicken wir oben rechts auf „Prüfung wiederholen“ und siehe da, die configuration.php ist beschreibbar.
WICHTIG: Die Rechte der configuration.php sollten auf 444 (nur lesen für alle Besitzer/Gruppen/Andre) stehen, sobald die Konfiguration / Installation von Joomla abgeschlossen ist.
- Weiter gehts -> Klick auf Weiter
- Lizenzvereinbarung lesen -> Klick auf Weiter
- Datenbankverbindung, jetzt wirds nochmal spannend. Wir tragen hier jetzt die Daten des User / der Datenbank ein, die wir weiter oben im Artikel für Joomla erstellt haben. NICHT DER ROOTBENUTZER! Im Tutorial war das als User: joomlausr, als Datenbank: joomla, Host ist localhost und klicken auf Weiter. Siehe da, es klappt.
- Der nächste Punkt (FTP Upload) bleibt auf NEIN -> Weiter
- Nun wirds schon etwas entspannter, denn wir müssen nun festlegen, wie unsere Website heißt, eine Emailadresse hinterlegen bzw. ein Passwort für den Admin setzen. Bei einer Neuinstallation würde ich sehr dazu raten, die Beispieldateien zu installieren. (Dies ist standardmäßig bereits so vorbelegt). Ist alles ausgefüllt klicken wir wieder auf Weiter und sehen (hoffentlich 🙂 ):
Es kann nicht fortgefahren werden, solang das Verzeichnis installation nicht gelöscht wird! (Dieses ist ein Sicherheitsmerkmal von Joomla!.)
Also rein in die Konsole:
- cd /var/www (oder eben der Pfad in dem die Joomlainstallation bei euch liegt)
- RETURN
- rm -r installation/
- RETURN
So, Datei gelöscht. Klickt man jetzt im oben gezeigten Fenster (auf der letzten Seite auf Webiste -> oben rechts) sollte eigentlich die Joomlawebsite – unsere Joomlainstallation- erscheinen.
Über
- http://localhost/administrator (oder eben eurer Websiteaddi gefolgt von /administrator/) gelangt man zum Adminlogin.
- Als User ist admin, als Passwort das für den Admin gesetzte Passwort zu verwenden.
- Wir sollten dann ins Backend gelangen
Bingo, funktioniert ebenfalls!
Sicherheit, abschließende Tätigkeiten
Ändern der Berechtigungen für die configuration.php (444 -> lesen für alle, mehr nicht):
- cd /var/www/
- RETURN
- chmod 444 configuration.php
- RETURN
Verzeichnisberechtigungen
Dateien sollten immer auf 644 und Ordner immer auf 755 stehen.
safemode
Der safemode (eine PHP Konfigurationseinstellung, die in der php.ini steht) sollte bei Joomla 1.5 auf on geschaltet werden können. Die php.ini findet man unter Debian Lenny im Verzeichnis:
Wer nachschauen will/muss, kann diese Datei in einem Editor öffnen und durchforsten.
register_globals
Ebenso in der php.ini zu finden ist register_globals, das auf jeden Fall auf off stehen muss!
Absichern des /administrator Zuganges
Als sehr sicher gilt der Einsatz einer sogenannten .htaccess Datei, die – zusätzlich zum normalen Login von Joomla – noch ein Passwort abfragt, bevor die Joomla-Loginseite erscheint. Für den Einsatz der .htaccess Datei ist auch noch eine Datei mit den Benutzerdaten, der berechtigten User+Passwort nötig. Diese Datei wird oft .htpasswd genannt und sollte nicht in einem zugänglichen Bereich der Website gespeichert werden.
Beim erstellen der .htpasswd Datei ist darauf zu achten, dass das Passwort (zumindest unter Linux) NICHT im Klartext eingegeben werden kann, sondern die Datei und der Inhalt über das Befehlszeilenprogramm htpasswd erstellt wird.
- htpasswd -c .htpasswd operator
- RETURN
Erstellt die Datei .htpasswd mit User operater und fragt danach nach dem Passwort für den User. Der Inhalt der Datei sieht dann so aus:
Die dazugehörige .htaccess kann so aussehen:
- AuthType Basic
- AuthName „Service „Servicebereich“
- AuthUserFile /var/.htpasswd (Pfad zur .htpasswd -> absolut!)
- require valid-user
Wichtig ist, dass die Directory Directive des Apache angepasst wird. Genaugenommen handelt es sich um die Option AllowOverride, die standardmäßig auf None steht und auf All umgestellt werden muß:
- <Directory /var/www/>
- Options Indexes FollowSymLinks MulitViews
- AllowOverride All (Standard = None, dann funktioniert .htaccess nicht!)
- Order deny, allow
- allow from all
- </Directory>
Den Apachen nach der Änderung mittels /etc/init.d/apache2 restart neu starten.
In jedem Verzeichnis in dem nun die .htaccess Datei liegt, wird vor Zugriffsgewährung Benutzername und Passwort abgefragt.
Weitere Sicherheitsmaßnahmen folgen.