Dienstag, 4. März 2014

14 Weitere Aktivitäten

Folgende weiteren Aktivitäten habe ich in Planung und werde nach und nach darüber schreiben:

  • System Monitoring
    Vorstellung verschiedener Tools zur Überwachung des Raspy
  • Cloud
    grundsätzliche Überlegungen und Installationen zur Nutzung einer eigenen Cloud
  • Backup
    Betrachtung verschiedener Backup - Strategien und Umsetzung
  • Dateiberechtigungen
    Grundsätzliche Schritte und Infos zum Thema Dateiberechtigung
  • SSH und Sicherheit
    div. zur Absicherung des Raspy und des SSH - Zuganges
  • User Verwaltung
    einiges zur User Verwaltung
  • Optimierung
    es gibt einige Stellschrauben, um den Raspy zu optimieren.
  • Mail
    Umsetzung des Mail - Versandes, um Ereignisse auf dem Raspy zu überwachen
  • Druckserver
    Einsatz des Raspy als Druckserver
  • Webmin
    ein mächtiges Werkzeug zur Administration. Installation und Besonderheiten

Donnerstag, 20. Februar 2014

13 Netzwerk - Diagnose

Beim Einsatz des Raspy in einem kleinen Netzwerk, macht es Sinn, sich etwas mit dem Thema Netzwerk - Diagnose zu befassen.

Dazu ein paar sehr hilfreiche Links:

Netzwerk-Diagnose-Teil-1
Thema:
  • Netzwerk - Diagnose - Tools
Netzwerk-Diagnose-Teil-2
Thema:
  • Pakete analysieren
  • Port Scanner
Netzwerk-Diagnose-Teil-3
Thema:
  • NetCat
Netzwerk-Diagnose-Teil-4
Thema:
  • Performance testen
  • Traffic anzeigen

Ein etwas umfangreicheres Tool zur Netzwerküberwachung ist Nagios.
Dazu ein Link, der die Funktionalität für den Raspy beschreibt: Netzwerküberwachung mit Nagios

Des Weiteren gibt es eine umfangreiche Anleitung zum Thema Netzwerk Management Server mit dem Raspy:
Netzwerk Management Server mit RaspberryPi

Werde dies Thema erweitern, wenn mir weitere Infos und Links unterkommen. Ansonsten selbst ist der Mann / Frau und einfach ausprobieren!
 

12 SFTP installieren und einrichten

Für viele Aufgaben wird ein FTP - Server benutzt, der sich recht schnell auf dem Raspy einrichten lässt. Das FTP - Protokoll als solches ist ein unsicheres Werkzeug, gerade dann, wenn man eigenen Server (hier der Raspy zu Hause) benutzt. FTP bietet Hackern sehr oft ein Hintertürchen, des weiteren werden die Daten (auch die Anmelde - Daten) im Klartext übertragen.
Von daher verwende ich eine hoffentlich sichere Methode, in dem ich einen SFTP - Server benutze.
Auf dem Windows - Rechner kann als FTP - Programm Filezilla verwendet werden. Unter Server Manager legt man dort eine Verbindung zum Raspy an mit folgenden Einstellungen:
Protokoll:            SFTP SSH File Transfer Protocol
Verbindungsart:  Normal

Nun zur eigentlichen Ausführung.
Der openssh - Server ist Voraussetzung:

sudo apt-get install openssh-server

Nun muss SSH angepasst werden.

sudo nano /etc/ssh/sshd_config

Dort die Zeilen wie folgt ändern:
Subsystem sftp /usr/lib/openssh/sftp-server
ändern in
#Subsystem sftp /usr/lib/openssh/sftp-Server











Zusätzlich noch darunter die Zeile
Subsystem sftp internal-sftp

einfügen.
Zum Abschluss noch einen passenden User anlegen.

sudo adduser dummy

Der User kann beliebig benannt werden. Nun muss noch der User angepasst werden, damit er SFTP statt SSH benutzt:

sudo usermod -s /bin/false dummy

Zum Schluss SSH neu starten:

sudo /etc/init.d/ssh restart

Nun sollte eine sichere Verbindung für das SFTP - Protokoll funktionieren.

11 Datenbanken mit SQLite

Datenbanken sind zum Sammeln von Daten gedacht. Geläufige Anwendungsfälle für Datenbanken in Verbindung mit Webseiten sind folgende:
  • Registrierung auf einer Webseite: wenn Besuchern einer Webseite die Möglichkeit gegeben werden soll, sich zu registrieren und einzuloggen, müssen die Login Daten irgendwo gespeichert werden, vorrangig in einer Datenbank.
  • CMS (Content Management System): eine Webseite, die ein CMS beinhaltet, hat häufig sehr viele Textinhalte. Dies kann man in einer Datenbank ablegen. Das hat den Vorteil, dass der Inhalt vom Design der Webseite getrennt gespeichert wird. dadurch muss bei einem Redesign der Webseite nur das Design geändert werden, der Text bleibt unberührt.
  • Inhalte generell: bei einer Fragen - Seite wird sich im Laufe der Zeit viele Fragen und Antworten ansammeln. Dies können in einer Datenbank gesammelt werden. 
Der bekannteste Vertreter für Datenbank - Software in Verbindung mit Webseiten ist MySQL. In Verbindung mit den begrenzten Ressourcen des Raspy ist dies aber zu mächtig. Von daher bieten sich kleinere Datenbanksysteme an. Ich habe hier SQlite eingesetzt.
Die Installation läuft wie folgt:

sudo apt-get update
sudo apt-get install sqlite3
sudo apt-get install php5-sqlite    (wird für den Webserver lighttpd benötigt)
sudo apt-get install php5-cgi        (soweit bei der Installation von lighttpd noch nicht mit installiert)

Damit ist die Installation auch schon abgeschlossen.
Nun braucht man noch ein Admin - Tool, dass über den Browser arbeitet. Bekannt ist hier für MySQL das Tool phpMyAdmin. Da ich mich aber erst in das Thema Datenbanken und Webseiten einarbeiten will, habe ich etwas einfacheres gefunden - phpliteadmin.
Heruntergeladen kann es hier werden:
https://code.google.com/p/phpliteadmin/downloads/list
Der große Vorteil ist bei diesem Tool, dass es nur aus einer php - Datei besteht: phpliteadmin.php.
Der Nachteil ist, dass man nur ein Passwort festlegen kann, man kann also nicht mehrere Benutzer anlegen, die auf unterschiedliche Datenbanken zugreifen können.
Die heruntergeladene Datei ist eine ZIP - Datei. Diese entpacken und mittels eines FTP - Programmes (siehe nächster Post) an einen entsprechenden Speicherort  kopieren (z.B. /var/phpliteadmin/). Vorher sollte man in der PHP - Datei die Zeile
$password = 'admin';
ändern. Passwort beliebig.
Des Weiteren macht es Sinn, die Zeile
$language = 'en';
auf
$language = 'de';
zu ändern.





Dazu muss die deutsche Sprachdatei von hier
http://code.google.com/p/phpliteadmin/wiki/Localization 
heruntergeladen werden. Auch dies ist eine ZIP - Datei. Entpacken und in das gleiche Verzeichnis wie phpliteadmin.php kopieren und schon ist alles auf Deutsch. Sollte beim ersten Aufruf von phpliteadmin eine Fehlermeldung erfolgen, den Raspy einmal neu starten:

sudo reboot

Zu Thema Datenbanken und Webseiten später mehr.

10 Werbserver installieren

Zum ausprobieren von Webseiten mit PHP oder SQL und ohne angemieteten Webspace, habe ich einen Webserver auf dem Raspy aufgesetzt.
Es gibt verschiedene Webserver, die eingesetzt werden könnten:
Nach einigen Versuchen und Recherchen im Netz habe ich mich für lighttpd entschieden, da dieser Server am schonendsten mit den knappen Ressourcen des Raspy umgeht.
Beginnen sollte man mit dem anlegen der Verzeichnisse für die Webseiten:

sudo mkdir /var/www

Des weiteren wird eine spezielle Gruppe www-data benötigt:

sudo addgroup www-data

Danach wird der Benutzer www-data, der Mitglied in dieser Gruppe sein soll, angelegt:

sudo adduser --ingroup www-data www-data

Dann wird der Benutzer zum Eigentümer des Verzeichnisses /var/www gemacht:

sudo chown -R www-data:www-data /var/www

Jetzt wird noch der Benutzer pi dieser Gruppe hinzugefügt, um nicht jedes Mal den Benutzer ändern zu müssen, wenn manuell eine Datei auf dem Webserver bearbeitet werden soll:

sudo adduser pi www-data

Um die Änderungen zu übernehmen muss man sich einmal abmelden und wieder anmelden.
Anschließend wird die Schreibberechtigung der Gruppe www-data auf das Datenverzeichnis des Webservers angepasst, sodass nur diese Schreibzugriff hat. 
Zitat: Dies ist eigentlich nur wichtig, wenn der Webserver auch außerhalb der eigenen Entwicklungsumgebung verwendet wird, kann aber zu Testzwecken hilfreich sein, um das Verhalten gegenüber anonymen Besuchern der Webseite zu überprüfen. 

sudo chmod -R 775 /var/www

Nun kann die Installation des Webservers und der dazu passenden PHP-Erweiterungen erfolgen. Zunächst ein Update durchführen:

sudo apt-get update
sudo apt-get install lighttpd php5-cgi

Nach der Installation (dauert etwas), kann geprüft werden, ob der Server funktioniert:
Im Browser die URL http://localhost oder http://ip-adresse des PI eingeben und es sollte folgendes Bild erscheinen:














Jetzt noch PHP einrichten, um den Server für Blogs oder Fotogalerie zu nutzen:

sudo lighty-enable-mod fastcgi
sudo lighty-enable-mod fastcgi-php

Nun muss die Webserver - Konfiguration neu geladen werden:

sudo /etc/init.d/lighttpd force-reload

Um die Funktion von PHP zu testen legt man eine kleine Datei an:

sudo nano /var/www/phpinfo.php

In diese Datei wird folgendes geschrieben:

<?php phpinfo(); ?>

Nach speichern der Datei mit STRG + X und bestätigen mit j, wird die neu erstellte Datei im Webserver aufgerufen:

http://ip-adresse/phpinfo.php

Es sollte im Browser folgendes zu sehen sein:














Zum Schluss noch zwei Änderungen an der php.ini und der lighttpd.conf:

sudo nano /etc/php5/cgi/php.ini

Hier wird die Zeile display_errors von off auf on geändert: Damit werden php - Fehlermeldungen direkt im Browser angezeigt.










Die Datei lighttpd.conf wird wie folgt ergänzt / angepasst:

sudo nano /etc/lighttpd/lighttpd.conf


server.modules = ( 
  "mod_access", 
  "mod_alias",
  "mod_accesslog",
  "mod_compress"
)

server.document-root = "/var/www/"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = (

  "index.php",
  "index.html",
  "index.htm",
  "default.htm",
  "index.lighttpd.html"
)
accesslog.filename = "/var/log/lighttpd/access.log"
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
include_shell "/usr/share/lighttpd/use-ipv6.pl"
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
server.username = "www-data"
server.groupname = "www-data"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html", "application/x-javascript", "text/css")


include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

Noch etwas zur Sicherheit: es ist sinnvoll, den Serverport , auf dem der Webserver lauscht, zu ändern. Standard ist 80. Beispielsweise wäre 4123 denkbar. Die Zeile aus der lighttpd.conf würde so lauten:
server.port                 = 4123
Im Browser muss nun natürlich beim Aufruf der Seite der Port mit angegeben werden (IP-Adresse - Doppelpunkt - Portnummer):
Beispiel: 192.168.1.4:4123
Mit dem Thema Sicherheit, hier https, werde ich mich in einem späteren Post beschäftigen.

09 Samba Server installieren

Samba ist eine freie Software für UNIX-Betriebssysteme, die das SMB (Server-Message-Block-Protokoll) bereitstellt, welches hauptsächlich von Microsoft geprägt wurde. Praktisch bedeutet das, dass man mittels eines Samba - Servers Datei - und Druckdienste von Microsoft Windows emulieren kann. Mit dem Samba - Dateiserver ist es möglich, eine Netzwerkfreigabe im eigenen Netzwerk aufzubauen. Dies ist nützlich, wenn man z.B. Daten auf einem Linux Rechner abgelegt hat und diese allen berechtigten Rechnern im Netzwerk zugänglich machen möchte. Aufgrund des geringen Strombedarfs bietet sich für einen solchen zentralen Server der Raspy natürlich an. Wie man einen Samba - Server auf dem Raspy installiert, Netzwerkfreigaben einrichtet und Benutzer anlegt, beschreibe ich hier.
Schritt 1
Zunächst das System aktualisieren:

sudo apt-get update
sudo apt-get upgrade

Schritt 2
Danach den Samba - Server installieren:

sudo apt-get install samba samba-common-bin

Schritt 3
Nun wird die Config - Datei vom Samba - Server bearbeitet, bei der mittels nano folgende erste Zeile durch Zweitere ersetzt wird. Dies stellt sicher, dass später nur mit einer Authentifizierung auf Dateien zugegriffen werden kann. Speichern kann man im Editor nano mittels STRG + X, Y und Enter.

sudo nano /etc/samba/smb.conf

# security = user

ersetzen durch

security = user



Schritt 4
Jetzt legt man mit folgendem Kommando ein Samba - Benutzer für den Benutzer pi an. Zu beachten ist, dass der Benutzer, auch als Benutzer auf dem Raspy (zum einloggen in SSH) existieren muss. Es ist ratsam, nicht dasselbe Passwort wie für den SSH - Benutzer zu verwenden.

sudo smbpasswd -a pi

Schritt 5
Nun weist man dem Benutzer und der Gruppe pi Rechte für den Ordner zu, der später freigegeben werden soll. Wenn man die Daten auf einem externen Speichermedium lagert, muss dieses eingebunden sein.

sudo chown -R pi:pi /media/usbstick

Schritt 6
Nun muss die Freigabe in der Config - Datei vom Samba - Server eingerichtet werden. Dazu fügt man folgenden Block am Ende der Datei smb.conf ein. Hierbei müssen TestFreigabe durch einen beliebigen Namen für die Freigabe und /media/usbstick durch den Pfad zum freigegebenen Ordner ersetzt werden. Die Einstellung guest ok = no definiert, dass nur authentifizierte Benutzer auf den Ordner zugreifen dürfen.

sudo nano /etc/samba/smb.conf 

[TestFreigabe]
path = /media/usbstick
writeable = yes
guest ok = no

Schritt 7 (optional)
Falls auf den Windows - Rechnern, die auf den freigegebenen Ordner zugreifen sollen, die sogenannte Workgroup umbenannt wurde (normaler Wert ist WORKGROUP), so muss diese in der smb.conf noch angepasst werden. Dabei muss MEINEGRUPPE durch den Namen der Workgroup ersetzt werden.

sudo nano /etc/samba/smb.conf

workgroup = WORKGROUP

ersetzen durch

workgroup = MEINEGRUPPE

 
Schritt 8
Nun muss der Samba - Server noch neu gestartet werden.

sudo /etc/init.d/samba restart

Damit ist der Samba - Server auf dem Raspy eingerichtet und sollte auf den anderen Rechnern im Netzwerk in den Netzwerkfreigaben erscheinen. In den Netzwerkfreigaben muss man sich noch mit dem Benutzer und dem in Schritt 4 definierten Passwort anmelden. Weitere Freigaben und Benutzer können mittels Schritt 4 bis Schritt 6 jederzeit angelegt werden, wobei man daran denken sollte, den Samba - Server nach den Änderungen neu zu starten (Schritt 8).
 
Um die Einstellungen des Samba - Servers zu überprüfen ist folgende Eingabe erforderlich:
 
testparm
 
Es werden daraufhin alle Einstellungen des Samba - Servers angezeigt.

08 Firmware aktualisieren

"Never touch a running System" - das ist ein Standardsatz von IT´lern.
Dennoch ist es ratsam, ein Firmware - Update durchzuführen, damit alle Komponenten optimal zusammenarbeiten und neue Komponenten wie das Kameramodul einwandfrei funktionieren.
Um das Ganze zu vereinfachen, gibt es ein Script von Hexxeh,damit dies bequem erledigt werden kann.
Der notwendige Befehl für das Firmware - Update lauten wie folgt:

sudo apt-get install rpi-update

Danach das Update - Script ausführen:

sudo rpi-update

Wenn dies fehlerfrei durchläuft mit

sudo reboot

einen Neustart erzwingen.

Sollet es zu Fehlern kommen, ist es darüber hinaus möglich, dass Script direkt von Hexxeh zu laden.

Schritt 1:
Dazu muss zunächst Git installiert werden. ( Git ist ein dezentrales Versionsverwaltungs-System.)

sudo apt-get install git-core

Schritt 2:
Danach das Script mit folgenden Befehlen herunterladen und in das Verzeichnis /usr/local/bin kopieren und ausführbar machen:

sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O rpi-update
sudo cp rpi-update /usr/local/bin
sudo chmod +x /usr/local/bin/rpi-update


Schritt 3:
Nun wieder das Script über den Befehl

sudo rpi-update

ausführen. Wenn soweit fehlerfrei, ein reboot.

sudo reboot

Für eine erneute Aktualisierung der Firmware reicht Schritt 3, bzw. bei Fehler Schritt 2 und 3.
Um zu sehen, welche Firmwareversion installiert ist, muss folgender Befehl benutzt werden:

uname -a