Archiv nach Kategorien: Open Source

SSH im Browser? Mit FireSSH im Firefix kein Problem

FireSSH im Firefox

Eine Sache hat mich schon immer interessiert. Gibt es sinnvolle Alternativen zu Putty als SSH Client? Ich habe gesucht und eine ziemlich coole entdeckt. Ein Addon für den Firefox macht den Browser zum SSH Client! Dieses nennt sich FireSSH und ist für die aktuelle Version des Firefox verfügbar. Das ganze ist in JavaScript entwickelt worden und macht euren Firefox zu einem echten Terminal. Der Entwickler hat das AddOn unter der Mozilla Public License als Open Source veröffentlicht.

Eine Sitzung öffnet sich dabei in einem neuen Tab bzw. Fenster. Ich startet eine Session in dem ihr in die Adressleiste des Browsers zum Beispiel folgendes eingebt:

ssh://servername(bzw. IP-Adresse):Port(Default 22)

FireSSH Anmelde Dialog

Ziemlich einfach und eine schnelle Möglichkeit mal schnell was am eigenen Server zu prüfen. Um allerdings stundenlang im Termin zu arbeiten und Konfigurationen vorzunehmen, dazu würde ich FireSSH nicht einsetzen. Außerdem finde ich noch nicht wirklich einen Vorteil bei diesem Addon. Denn ein Putty kann auf Windows viel vielseitiger eingesetzt werden. Die Putty.exe ist schnell heruntergeladen und gestartet, auch ohne Admin-Rechte auf dem entsprechenden PC. Bei einem Linux Desktop stellt sich diese Frage eh nicht. Außerdem habe ich festgestellt, dass FireSSH, sobald gestartet, immer die Größe des Firefox verändert. Den Grund habe ich allerdings noch nicht herrausgefunden.

FireSSH ist ein nettes Addon für den Firefox. Es ist beeindruckend was bereits alles mit dem Browser möglich ist. Vielleicht sind in einigen Jahren nur noch wenige Native Desktop-Applikationen notwendig, weil es alle Funktionalitäten bereits im Browser gibt. Aber wer weiß das schon…

VirtualHosts beim Apache Webserver einrichten

Kürzlich berichtete ich, wie man bei einem Debian Linux Server einen Apache mit PHP und MySQL Datenbank aufsetzen kann. Ich erwähnte am Ende außerdem, dass teilweise weitere Konfigurationen notwendig bzw. empfehlenswert sind. In diesem Artikel will ich also die Konfiguration von Virtual Hosts (kurz VHOST) im Apache erklären. Welche Vorteile und Möglichkeiten Virtual Hosts haben und wie man sie sauber konfigurieren kann zeige ich hier.

Was sind Virtual Hosts?

Durch Virtual Hosts wird es auf einem Webserver möglich mehrere Web-Anwendungen unter einer IP-Adresse zu betreiben. Das hat den entscheidenden Vorteil auf einem Webserver mehrere Webseiten zu betreiben. Jede dieser Webseiten kann so ein eigener Document Root zugewiesen werden. Die Webseiten können seperat konfiguriert werden, beispielsweise können eigene Logfiles pro VirtualHost geschrieben werden oder eigene eigene rewrite-Rules festgelegt werden. Auf diese Weise können Webseiten komplett getrennt auf ein und demselben Server laufen. Das erleichtert die Fehlersuche und lässt gesonderte Konfigurationen zu.

Wie werden Virtual Hosts eingerichtet?

Bitte beachtet, dass dieser Artikel eine Ergänzung zum Artikel “Linux Webserver einrichten” beziehe. Dieser Text stellt eine Ergänzung zu diesem dar.

Um beim Apache Webserver VirtualHosts einzurichten ist nicht viel Arbeit notwendig. Ich versuche die Konfiguration möglichst so zu beschreiben, dass diese bei Bedarf “nachgemacht” werden kann. Virtual Hosts werden grundsätzlich in der Konfiguration des Webservers festgelegt. Unter Debian ist die Konfiguration unter /etc/apache2/ abgelegt. In dem File apache2.conf sind die Konfigurationen zu finden. Ziemlich weit am Ende der Datei steht in etwa so was:

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

Das bedeutet, dass die Konfiguration der Virtual Hosts in dem Unterverzeichnis sites-enable abgelegt wurde. Alle Dateien die sich in diesem Verzeichnis befinden werden vom Apache eingelesen. Es ist empfehlenswert die eigenen VirtualHosts ebenfalls in diesem Verzeichnis abzulegen und zwar jeden VirtualHost in eine eigene Datei.

Für die Dateinamen habe ich mir in diesem Fall ein spezielles Format ausgedacht. Zum einen nummeriere ich sämtliche VirtualHosts der Reihe nach durch. Zum anderen soll der Name der Domain auch im Dateinamen enthalten sein. Zum Beispiel:

001-meine-domain.tld

A-Record Einstellungen bei 1&1

So können die VirtualHosts bei Bedarf schnell gefunden und angepasst werden. Generell bleibt es allerdings jedem selbst überlassen wie und wo man die Konfigurationen für VirtualHosts ablegt. Theoretisch können diese Konfigurationen auch alle in eine Datei geschrieben werden.
Übrigens müssen sämtliche Domains, unter denen der Server bzw. VirtualHost erreichbar sein soll auch auf den Server zeigen. Man kann dazu die IP-Adresse des Servers als A-Record für die Domain festlegen (siehe Screenshot).

Beispiel Virtual Host

Ein Virtual Host ist folgendermaßen aufgebaut:

# meine-domain.tld VHOST Einstellungen

<VirtualHost 192.168.25.84:80>
        ServerAdmin admin@meine-domain.tld

        ServerName www.meine-domain.tld
        ServerAlias meine-domain.tld

        DocumentRoot /var/www/meine-domain.tld/

        <Directory /var/www/meine-domain.tld/>
            Options Indexes FollowSymLinks MultiViews
 AllowOverride FileInfo
 Order allow,deny
            allow from all
        </Directory>

        ErrorDocument 401 /index.php?page=401
        ErrorDocument 403 /index.php?page=403
        ErrorDocument 404 /index.php?page=404
        ErrorDocument 500 /index.php?page=500

        ErrorLog /var/log/apache2/meine-domain.tld_errror.log
        CustomLog /var/log/apache2/meine-domain.tld_access.log common

</VirtualHost>

Das bedeuten die in der Beispielkonfiguration genannten

VirtualHost Tag: Das ist IP und Port des VirtualHosts und sollte in der Regel identisch sein mit den VirtualHosts des Netzwerkinterfaces.

ServerAdmin: Hier kann eine E-Mail-Adresse des Administrators für diesen VirtualHost bzw. Server hinterlegt werden. Dieser wird dann angezeigt, wenn ein Fehler erzeugt wird.

ServerName: Hier wird die Domain des VirtualHost angegeben. Es kann auch der Port angegeben werden: domain.tld:8888

ServerAlias: Hier können alternative Domains, unter denen der Server erreichbar sein soll angegeben werden. Mit Leerzeichen getrennt können auch mehrere Domain-Namen angegeben werden.

DocumentRoot: Der Pfad zum Speicherplatz der Domain sollte sich von anderen VirtualHosts unterscheiden. Der dort enthaltene Code wird beim aufrufen der Domain ausgeführt.

Directory-Tag: Es können noch weitere Einstellungen zum DocumentRoot festgelegt werden.

ErrorDocument: Hier können für diverse HTTP-Status-Fehler-Codes eigene Fehlerseiten definiert werden. Falls man diese Option nicht setzt, werden vom Apache gesetzte Fehlerseiten verwendet. Es sieht in jedem Fall besser aus, wenn jede Webseite seine eigenen Fehlerseiten erhält.

ErrorLog: Mit dieser Option kann ein eigenes Error-Logfile definiert werden. Wenn diese Option nicht gesetzt ist, dann werden Fehler in das Standard-Error-Log vom Apache geschrieben. Dieses wird in der Apache2.conf definiert. Es ist zu empfehlen für jeden VirtualHost ein eigenes ErrorLog zu schreiben. Dies macht die Analyse im Fehlerfall um einiges einfacher.

CustomLog: Ähnlich wie bei ErrorLog, allerdings handelt es sich hier ums AccessLog des VirtualHost. Ein eigenes Access-Log für jeden VirtualHost macht eine Auswertung um einiges einfacher.

Das war es auch schon mit der Grundlegenden Einrichtung von VirtualHosts. Wer sich mit dem Thema näher beschäftigen will, der sollte in jedem Fall mal in der offiziellen Apache Dokumentation vorbeischauen. Dort werden alle Möglichkeiten mit VirtualHosts noch detaillierter beschrieben.

 

Praxis: Linux Web-Server einrichten (LAMP)

Für alle die einen eigenen Webserver mit Linux (kurz LAMP) einrichten wollen, habe ich die Einrichtung meines neuen vServers mal dokumentiert. Dieser Bericht dient als Praxisbericht und kann ruhig zum nachmachen genutzt werden. Wer Fehler bei der Einrichtung findet, der kann dies ruhig anmerken. Ich bin über jede Art von Kritik offen und freue mich über jede Form von Feedback.

Ich gehe hierbei davon aus, dass man ein komplett nacktes Linux hat, lediglich der SSH-Dienst und ein VI oder vergleichbarer Texteditor sollte bereits installiert sein. Die meisten vServer werden von den Hostern in dieser Form geliefert. Punkte die Ihr jedoch nicht für notwendig haltet, können übersprungen werden.

Für den Bericht verwende ich Debian Linux. Die Installation unter Ubuntu ist ähnlich einfach (wie auch unter Kubuntu und Xubuntu). Es ist jedoch möglich auch andere Linux-Varianten zu verwenden. Bitte beachtet jedoch, dass dann nicht alle Schritte identisch abgearbeitet werden können. Der Webserver besteht nach erfolgreicher Installation aus den klassischen Bestandteilen einer LAMP Installation, also Linux, Apache, PHP und MySQL. Am Ende erkläre ich außerdem die Installation von PHPMyAdmin, einem Datenbankverwaltungstool für MySQL.

Benutzer anlegen und root SSH-Login deaktivieren

Da bei den meisten vServern lediglich der root-Account von Linux existiert, sollte als erstes ein normaler User erstellt werden. Mit diesem kann am Server normal gearbeitet werden. Den User kann man nutzen um Logfiles auszuwerten, Applikationsspezifische Konfigurationen vorzunehmen oder um Housekeeping-Aufgaben zu erledigen.
Den root-Account des Linux-Systems sollte man nicht für normale Arbeiten am Linux nutzen. Falls man dies tut, gefährdet man das System zu zerstören. Eine Neuinstallation wäre dann notwendig.

Um den User zu erstellen wird das Kommando useradd verwendet. Mit passwd kann man anschließend das Kennwort für den User anpassen.

useradd -m nico
passwd nico

Anschließend sollte man testen ob man sich von extern mit dem neuen User am Server anmelden kann. Wenn das geklappt hat, dann sollte der root Zugang über SSH gesperrt werden. Es ist vermutlich eine der wahrscheinlichsten Möglichkeiten, weswegen Server durch Eindringlinge gekapert werden.
Um den SSH Zugang für den Root Account zu sperren sind lediglich zwei Schritt notwendig. Zum einen, muss man in der Konfiguration den SSH-Root-Login verbieten, zum anderen den SSH-Dienst von Linux neu laden.
Der Wert PermitRootLogin muss in der Datei /etc/ssh/sshd_config auf “no” gestellt werden. (Siehe Screenshot)

Anschließend muss der SSH-Dienst neu geladen werden.

/etc/init.d/sshd reload

Wenn ihr das gemacht habt, dann kann getestet werden, ob der root Login noch möglich ist. Das sollte dann nicht mehr der Fall sein. Wenn es mal doch notwendig wird den root-User zu verwenden, zum Beispiel bei Installation von Software, dann könnt ihr zum root werden, indem ihr das Kommando su verwendet. Dabei muss dann das Kennwort des root-Users eingegeben werden.


shell> su
Password:

So “werdet” ihr zum root. Mit exit verlasst ihr diesen Modus wieder.

Theoretisch könnte man bei der Absicherung des Systems noch mehr Einstellungen vornehmen. Es können beispielsweise nur bestimmte User für die Anmeldung über SSH freigeschaltet werden. Die Option hierzu lautet AllowUsers und ist ebenfalls in der /etc/ssh/sshd_config vorzunehmen.

Webserver installieren

Den eigentlichen Webserver installieren wir in den folgenden Schritten. Zu aller erst sollten sämtliche Paketlisten aktualisiert werden. Das wird mit folgendem Kommando durchgeführt:

apt-get update

Als nächstes kann bereits der eigentliche Webserver installiert werden. Dieser wird nach der Installation bereits Anfragen aus dem Netzwerk bzw. Internet beantworten können.

apt-get install apache2

Auf die Frage, ob Ihr fortfahren wollt könnt ihr ruhig mit Ja (Do you want to continue [Y/n]? Y) antworten.
Sobald der Apache vollständig installiert ist, kann der neue Webserver bereits aufgerufen werden. Hier wird dann eine Standardseite, mit dem Text “It works!” angezeigt. Siehe Screenshot. Wenn das alles soweit geklappt hat kann die Installation mit der Einrichtung von PHP und MySQL forgesetzt werden. Um PHP vollständig einzurichten sind mehrere Pakete notwendig, wenn diese jedoch installiert sind, dann ist PHP bereits vollständig eingerichtet und kann verwendet werden.

apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi

Anschließend wird das Datenbank Management System MySQL installiert. Dieses wird wieder mit apt-get installiert.

apt-get install mysql-server php5-mysql

Währrend der Installation muss das root-Passwort der MySQL Datenbank festgelegt werden. Bitte beachtet, dass dieses Passwort NICHT das root Passwort des Betriebssystems ist. Da durch den root Zugang totaler Vollzugriff auf die Datenbank gewährt wird, sollte das Passwort möglichst sicher gewählt werden. Des Weiteren ist es empfehlenswert den root-User NICHT für irgendwelche Applikationen auf dem Server zu wählen.

Nach dem letzten Schritt sind grundsätzlich alle notwendigen Pakete installiert. Nun muss nur noch der Apache durchgestartet werden, so dass auch alle Installationen aktiv werden.

/etc/init.d/apache2 restart

Wenn dies installiert wird, dann kann im DocumentRoot (Standard /var/www) des Apache ein PHP File abgelegt werden. Folgenden Inhalt sollte das File haben:

<?php
phpinfo();
?>

Wenn Sie diese Datei im Browser aufrufen, dann sollte die PHP Infoseite angezeigt werden. Nun ist der Webserver voll funktionionsfähig. PHP Anwendungen können nun ausgeführt werden.

Einrichtung von PHPMyAdmin

Um die MySQL Datenbank verwalten zu können sollte neben den bereits installierten Anwendungen noch ein Datenbankverwaltungstool installiert werden.  Hierzu bietet sich in der Regel die Anwendung phpmyadmin an. Dieses kann ebenfalls über die Debian Paketverwaltung installiert werden.

apt-get install phpmyadmin

Währrend der Installation von phpmyadmin muss man den installierten Webserver auswählen. Das ist wichtig, da phpmyadmin direkt konfiguriert wird. So hat man die Möglichkeit, die Datenbanken direkt nach der Installation zu verwalten. Via http://servername/phpmyadmin kann die Anwendung aufgerufen werden. Beim Login muss als Username root und als Passwort das MySQL Root Passwort verwendet werden. Dieses wurde oben bei der MySQL Installation gesetzt.

TIPP: Verwendet im PHPMyAdmin nie den root-Account. Legt euch lieber, nach dem ersten Login, einen seperaten User an. Mit diesem könnt ihr alle Daten lesen, verwalten, löschen und erstellen. Außerdem solltet ihr für jede Anwendung, die auf den MySQL-Server zugreift, einen seperaten User mit eigener Datenbank verwenden.

Die Installation von dem LAMP System ist im Grunde genommen bereits abgeschlossen. Der Server kann nun auf die eigenen Bedürfnisse angepasst werden. Außerdem sollten noch einige Konfigurationen im Apache, PHP und MySQL vorgenommen werden. Insbesondere Sicherheitsrelevante Einstellungen sind hier teilweise noch notwendig. Bitte habt Verständnis, dass ich hier nicht auf alle Tricks und Kniffe eingehen kann. Sobald es geht werde ich allerdings seperate Artikel zu dem Thema veröffentlichen.

Wenn etwas nicht genau so funktioniert, wie in dem Artikel beschrieben, dann gebt mir bitte Feedbackt. Ich will versuchen zu unterstützen.

Piwik Version 1.5 erschienen

Heute ist das aktuelle Major Release, der Open-Source Analyse Software Piwik, in der Version 1.5 veröffentlicht worden. Es sind einige interessante neue Änderungen in dem Update enthalten. Zu den größten Anpassungen zählt sicher die neuen Ecommerce Analyse Funktionen. Bei einem Onlineshop kann man nun Ecommerce Ziele genauer tracken, z.B. auch Artikel die in Warenkörbe gepackt worden sind oder aufrufe von einzelnen Produkten im Onlineshop. Für Betreiber von Onlineshops ist das sicher eine sehr interessante Sache.
Die zweite große Neuerung ist der Einsatz von Javascript und HTML5 Canvas Diagrammen für die Auswertungen der Besucherstatistiken. Die Flashdiagramme wurden komplett ersetzt und werden nun nicht mehr verwendet. Das soll zum einen die Abhängigkeit von Flash lockern und zum anderen die Performance verbessern. Diagramme und Grafiken sollen nun deutlich schneller laden.
Eine weitere Neuerung sind benutzerdefinierte Variablen, mit Hilfe derer sich Benutzer nach eigenen Kriterien tracken lassen. Das ist eine Nette Sache um eigene Reports zu erstellen. Eine neues nettes Feature ist außerdem die Möglichkeit die eigene Piwik-Instanz mit einem eigenen Logo zu versehen. So kann man das eigene Firmenlogo in Piwik einfügen.

Ansonsten wurden wiedermal eine Menge Bugs gefixed, unter anderem auch eine Security Issues der Vorgänger-Version. Insgesamt macht die Version 1.5 von Piwik einen sehr reifen Eindruck. Die Ablösung von Flash war schon lange Überfällig und wurde nun endlich durchgezogen.

Aktuelle Release Notes der Piwik Version 1.5.