Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:raspberry_pi_als_server

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:raspberry_pi_als_server [2017-08-10 12:44] – [Tor hidden service] marco.bakeraschule:raspberry_pi_als_server [2024-01-25 17:38] (aktuell) – mv pintman
Zeile 1: Zeile 1:
-====== Raspberry Pi als Server ====== +Verschoben nach [[edu:Raspberry Pi als Server]].
- +
-{{:schule:dokuwiki_auf_raspberrypi.png?direct|}} +
- +
-Als Hardwaregrundlage benötigt ihr einen [[Raspberry Pi]]. Dieser wird mit einer SD-Karte für das Betriebssystem, einem USB-Kabel für den Strom und einem Ethernetkabel für das Internet ausgestattet. Als Betriebssystem kommt Raspian zum Einsatz. +
- +
-**Warnung!** Ihr werdet für die nächsten Aufgaben vermutlich an vielen Stellen im Internet recherchieren. Kopiert keine Texte einfach so von einer Webseite in ein Konsolenfenster. Dadurch kann Schadcode in den Zwischenspeicher gelangen, den man so nicht sieht. Ein [[http://thejh.net/misc/website-terminal-copy-paste|Beispiel]] verdeutlicht die Gefahr. +
-===== Webserver und PHP installieren ===== +
- +
-Als Software benötigen wir einen [[wpde>Apache HTTP Server]], der die Webseiten ausliefert und [[wpde>PHP]] für die Generierung dynamischer Webseiten.  +
- +
-  - Installiere den Webser apache: Folge hierfür der [[https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md|Anleitung zur Installation eines Webservers (apache) auf dem Pi]]. Eine weitere Anleitung findest du in //Raspberry Pi - Das umfassende Handbuch//, Kap. 24.1-24.2. +
-  - Der Server lässt sich mit einem Befehl neu starten. Wie lautet er? +
-  - Der Server legt seine Konfiguration in ''/etc/apache2'' ab. Erläutere die Bedeutung der folgenden Verzeichnisse, die sich unter ''/etc/apache2'' befinden: ''conf-available, conf-enabled, mods-available, mods-enabled, sites-available, sites-enable''. Schau dazu in den Erklärungen in der Datei ''apache2.conf'' und der Paketdokumentation unter ''/usr/share/doc/apache2'' nach+
- +
-Du kannst auch probieren, einen [[Webserver programmieren|eigenen Webserver zu programmieren]]. So schwierig ist es gar nicht. +
- +
-==== Webserver im Netz finden ==== +
- +
-Um heraus zu finden, welche Webserver auf Port 80 im Netz 192.168.42.0/24 laufen, kann [[debman>nmap]] genutzt werden. +
- +
-  nmap --open -p 80 192.168.42.0/24 +
- +
-Auch mit scapy und [[Python]] können Netze auf unterschiedliche Arten untersucht werden. Der Artikel [[http://resources.infosecinstitute.com/port-scanning-using-scapy/|Port Scanning using Scapy]] erläutert das Vorgehen mit unterschiedlichen Ansätzen wie TCP-connect, TCP-stealth, XMAS-scan, FIN-scan, NULL-scan und weiteren. +
-==== nginx: ein alternativer Webserver ==== +
- +
-Neben apache gibt es noch viele weitere Webserver. [[http://www.nginx.org|nginx]] ist ein Beispiel für einen weiteren Webserver. Kannst du den apache stoppen und die Arbeit von einem ''nginx'' übernehmen lassen? +
-===== dokuwiki installieren ===== +
-{{ ::dokuwikilogo.png?nolink|}} +
-Sobald der Webserver und PHP installiert sind, kann dokuwiki installiert werden. Hierbei handelt es sich um eine Wiki-Software. Der Prozess ist in der [[https://www.dokuwiki.org/de:install|Installationsanleitung für dokuwiki]] beschrieben. +
- +
-Für den Download könnt ihr [[debman>wget]] benutzen oder euch mit einer Remotedesktopverbindung auf den Pi verbinden und dort einen Browser starten. +
- +
-  wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz +
- +
-==== Zugriffsrechte anpassen ==== +
- +
-Damit der Webserver auf die Dateien zugreifen kann, müssen die Dateien für den Benutzer ''www-data'' zugreifbar sein. Ich gehe hier von einer Installation im Verzeichnis ''/var/www/dokuwiki'' aus. Mit [[debman>chown]] wird der Benutzer für alle Dateien auf ''pi'' und die Gruppe auf ''www-data'' geändert. Der Parameter ''-R'' wendet dies rekursiv auch auf Unterverzeichnisse an. +
- +
-  sudo chown -R pi:www-data /var/www/dokuwiki +
- +
-Nun erhält die Gruppe mit [[debman>chmod]] jeweils Schreibrechte auf die Dateien. +
-   +
-  chmod -R g+w /var/www/dokuwiki +
-   +
-==== Installation über den Paketmanager (optional) ==== +
- +
-Dokuwiki kann auch über den Paketmanager mit ''apt-get install'' installiert werden. Bei dieser Variante werden neue Versionen stets automatisch über den Paketmanager installiert. In diesem Falle ist die Konfiguration jedoch etwas komplizierter und man sollte die Hinweise in ''/usr/share/doc/dokuwiki'' beachten.  +
- +
-Die Konfigurationsdateien landen in ''/etc/dokuwiki''. Die Einstellungen für den Apache lassen standardmäßig nur Zugriffe von ''localhost'' zu. Dies kann durch eine Anpassung in den Einstellungen mit ''Allow from all'' erweitert werden, so dass der Zugriff auch von anderen Seiten möglich ist. +
-===== Perfomanceoptimierung (optional) ===== +
- +
-Mit dem apc-Modul ([[wpde>Alternative PHP Cache]]) können bereits geladene Seiten gecached werden. Dies beschleunigt deren Auslieferung und kann die Zugriffe auf einem Pi deutlich beschleunigen. +
- +
-===== Sicherheit durch TLS-Zertifikate ===== +
- +
-Damit ein verschlüsselter Zugriff auf den Pi auch über HTTPS erfolgen kann, wird ein SSL- bzw. TLS-Zertifikat benötigt, das auf dem Pi installiert werden muss -- TLS steht für [[wpde>Transport Layer Security]]. Die Geschichte "[[http://forum.world.st/Die-Philosophie-der-quot-sicheren-quot-SSL-Verbindung-Oder-Wenn-der-Postbote-zweimal-klingelt-td4679077.html|Wenn der Postbote zweimal klingtelt]]" erklärt das Verfahren des Schlüsselaustausches  anschaulich. Das Elektronik Kompendium enthält [[http://www.elektronik-kompendium.de/sites/net/0902281.htm|technische Details des Protokolls]]. +
- +
-Sehr einfach lässt sich die eigene Webseite mit selbst-signierten Zertifikaten absichern. In diesem Fall beschwert sich der Browser jedoch beim Aufrufen der Webseite, da er den Aussteller des Zertifikates nicht kennt. Die Verbindung ist trotzdem verschlüsselt. Das Verfahren wird in der Paketdokumentation von apache beschrieben. Sie liegt in der Datei ''/usr/share/doc/apache2/README.Debian.gz''. Es ist eine mit [[debman>gzip]] komprimierte Textdatei, die mit ''zless'' gelesen werden kann. Lies dort den Abschnitt zu SSL. Eine weitere Anleitung findest du in //Raspberry Pi - Das umfassende Handbuch//, Kap. 24.3. +
- +
-Die [[http://www.heise.de/security/artikel/SSL-fuer-lau-880221.html|Anleitung von heise security]] beschreibt das Verfahren für vertrauenswürdige Zertifikate, die von der Firma [[https://www.startssl.com/|StartSSL]] ausgestellt werden. Diese sind dem Browser bekannt und es kommt zu keinen Warnungen im Browser. +
- +
-Wenn alles korrekt eingerichtet wurde, kannst du den Pi anschließend über ''<nowiki>https://meine.eigene.ip.adresse/</nowiki>'' erreichen. +
- +
-**Aufgaben** +
-  - Wozu wird TLS/SSL benötigt? +
-  - Was ist der Unterschied zwischen SSL und TLS? +
-  - Was ist ein selbst-signiertes Zertifikat? +
-  - Sichere deinen Server mit einem selbst-signierten Zertifikat (einfach) oder einem Zertifikat, das von StartSSL ausgestellt wurde (schwierig, du brauchst eine eigene Domain). +
-  - Mit welchem Befehl lassen sich Webserver mit einer HTTPS-Unterstützung im lokalen Netz finden? +
- +
-===== Was ist HTTP und wie funktioniert es? ===== +
-<html> +
-<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/z0OHumT6P10?rel=0" frameborder="0" allowfullscreen></iframe> +
-<br/> +
-</html> +
-Video bei [[https://archive.org/details/HTTPRequestUndResponse|archive.org]] +
- +
-  - Erstelle eine Präsentation zum Thema Hypertext Transfer Protocol (kurz [[wpde>HTTP]]), die folgende Begriffe erläutert: REQUEST, REQUEST METHOD, GET, POST, PUT, DELETE, HEADER, RESPONSE, RESPONSE CODE +
-  - Führe eine Beispielsitzung durch, z.B mit einem Browser oder einem telnet-client wie putty((Trage die IP-Adresse des Webservers ein, wähle Port 80, den "Connection Type" ''telnet'', wähle bei "Close Windows on Exit" die Option "Never" und in den Telnet-Optionen "Telnet Negotiation Mode" auf "passive".)), die einen Request und Response zeigt und stelle das Ergebnis in einem Screenshots dar. \\ Das obige Video zeigt einen Ausschnitt einer solchen Beispielsitzung ohne die Headerinformationen. \\ Unter Windows muss der [[https://support.microsoft.com/de-de/kb/978779|telnet-Client aktiviert]] werden: "Systemsteuerung" -> "Programme" -> "Windows-Funktionen aktivieren oder deaktivieren ". Dort kann ein Haken bei "Telnet-Client" gesetzt werden. Danach steht er in der Windows-Konsole zur Verfügung. +
-  - Visualisiere das Verfahren durch eine eigene Zeichnung. +
-  - Nützliche Links: [[http://openbook.rheinwerk-verlag.de/it_handbuch/13_001.html#dodtp1760af95-8b4e-4c61-899c-80192be41c86|Kap 13.1 im IT-Handbuch für Fachinformatiker]], [[http://www.ietf.org/rfc/rfc2616.txt|RFC 2616 zum HTTP-Standard (Version 1.1)]], [[https://tools.ietf.org/html/rfc7540|RFC 7540 zum HTTP-Standard (Version 2)]] +
-  - Ergänze deine Präsentation um einen eigenen Linktipp. +
- +
- +
-===== Analyse der Server-Logdateien ===== +
- +
-<html> +
-<iframe width="690" height="540" src="https://www.youtube-nocookie.com/embed/I2quuE0lIpE?rel=0" frameborder="0" allowfullscreen></iframe> +
-</html> +
- +
-Bei Problemen hilft häufig ein Blick in die Logdateien eines Dienstes. Wir wollen für unseren Webserver exemplarisch dessen Logdateien untersuchen. Hierfür hilft das Programm ''tail'', welches das Ende einer Datei anzeigt. Mit ''less'' oder einem Editor wie ''nano'' oder ''vim'' lassen sich Textdateien ebenso anzeigen. Mit Hilfe des [[debman>grep]]-Befehls kann in einer Datei gesucht werden. +
- +
-  - Wo legt der apache-Webserver die Logdateien ab? +
-  - Welche Arten von Logdateien gibt es beim apache? +
-  - Führe den Befehl ''tail -f /var/log/apache2/access.log'' aus und rufe dann eine Seite mit einem Webbrowser auf. Interpretiere die Ausgabe und beschreibe den Aufbau einer Zeile((Häufig wird das [[wp>Common Log Format]] im apache für die Darstellung verwendet.)). \\ Was macht der Befehl ''tail''? \\ Welche Bedeutung hat die Option ''-f''? +
-  - Baue nun einen kleinen Fehler bei deinem Mitschüler ein. Öffne dazu die Datei ''doku.php'' im Verzeichnis des dokuwiki mit einem Texteditor und füge die Zahl ''123'' in eine leere Zeile ein. Rufe nun die Seite mit einem Browser auf. Versucht gemeinsam den Fehler in der Logdatei am Ende zu finden. //Tipp:// Schaut in der Logdatei, die Fehlermeldungen enthält. +
-  - Schaut euch den Inhalt der anderen Logdateien in ''/var/log'' an und stellt Vermutungen über deren Herkunft an. Erstellt eine Tabelle mit den Spalten "Name der Logdatei" und "Inhalt" für 3 selbst gewählte Logdateien.  +
-  - Du kannst auch selbst in das "system log" schreiben. Dazu gibt es den Befehl ''logger''. Schau dir die zugehörige man-Page an und erstelle einen Logeintrag. In welcher Datei landet dein Eintrag? +
- +
- +
- +
-===== Einrichten einer eigenen Domain ===== +
-{{ :schule:dns-raum.png?nolink|}} +
-Über den Dienst [[https://afraid.org|afraid.org]] kann man sich kostenlos eine Webadresse zulegen, die fortan auf die IP-Adresse des heimischen Routers, an dem der Pi angeschlossen ist, verweisen soll. Da man zu Hause gewöhnlich alle 24 Stunden eine neue IP-Adresse zugewiesen bekommt, muss man dem DNS-Server von afraid.org über einen [[debman>curl]]-Aufruf die neue IP-Adresse mitteilen. Damit dies regelmäßig erfolgt, legt man am besten einen [[wpde>cronjob]] dafür an.  +
- +
-  - Was ist das [[wpde>Domain Name System]] (DNS)? Beschreibe kurz und in eigenen Worten, wie DNS funktioniert. Nutze dazu das Diagramm im Abschnitt "Auflösung eines DNS-Requests"+
-  - Versuche, eine Anfrage an einen DNS-Server mit dem Tool ''dig''((Sollte das Programm nicht installiert sein, so kannst du es über das Paket ''dnsutils'' installieren.)) auf der Linux-Kommandozeile nachzuvollziehen:\\ ''<nowiki>dig +trace -t A www.tbs1.de</nowiki>'' +
-  - Melde dich bei dem Dienst ''afraid.org'' an und suche dir eine Domain aus. +
-  - Was sind ein "A-Record", ein "AAAA-Record" und ein "MX-Record" im DNS?((Tipp: Schaue bei Wikipedia unter [[wpde>Resource Record]].)) +
-  - Richte einen Cronjob ein, der in regelmäßigen Abständen den DNS über deine aktuelle IP-Adresse informiert.((Auf der Webseite findest du fertige ''curl''- oder ''wget''-Skripte für diesen Zweck.)) +
-  - Wird der Name korrekt zu der IP-Adresse aufgelöst -- es sollte die Adresse der Schule auftauchen? Nutze den Befehl ''dig'', um es herauszufinden.((Unter Windows gibt es den älteren Befehl ''nslookup'' für diese Zweck.)) +
-  - (optional) Lege in deinem heimischen Router eine Portweiterleitung an, die alle Anfragen auf Port 80 (HTTP) und 443 (HTTPS) an den Pi weiterleitet. Teste im Anschluss, ob der Pi über die Webadresse erreichbar ist. +
-==== Portweiterleitung einrichten ==== +
- +
-Nun muss der Router Anfragen an den Pi auch korrekt an diesen durchstellen. Daher muss eine [[wpde>Portweiterleitung]] in dem Router so konfiguriert werden, dass die Ports 80 für HTTP und 443 für HTTPS an den Pi weitergeleitet werden. Beachte dazu die Bedienungsanleitung deines Routers. +
- +
-  ((Internet)) -- [Router] -- [Pi] +
-                  Portweiterleitungen:   +
-                  80..........80 (http) +
-                  443.........443 (https) +
- +
-//Hinweis:// Eine Liste mit vielen Diensten und den Ports, auf denen sie laufen, findest du in der Datei ''/etc/services''+
-==== Fernzugriff über ssh ==== +
- +
-Um über das Internet auf den Pi zugreifen zu können, muss ein Port im Router auf Port 22 des Pi weitergeleitet werden. Auf Port 22 läuft der ssh-Dienst. Um es Angreifern schwerer zu machen, kann auch ein anderer hoher Port im Router (z.B. Port 50022) auf Port 22 am Pi weitergeleitet werden. +
- +
-  ((Internet)) -- [Router] -- [Pi] +
-                   Portweiterleitungen: +
-                   50022.......22 (ssh) +
-                   80..........80 (http) +
-                   443.........443 (https) +
- +
-Wenn alles korrekt eingerichtet wurde, sind der Webserver und der ssh-Dienst des Pi über über die URL erreichbar. +
- +
-==== Tor hidden service ==== +
- +
-Der Webserver kann auch als [[https://www.torproject.org/docs/tor-hidden-service.html.en|Tor Hidden Service]] zugänglich gemacht werden. Dafür ist keine eigene Domain nötig, sondern es wird automatisch eine Domain generiert. Unter Raspian gibt es das Paket ''tor'', das für diese Zwecke genutzt werden kann. Webseiten können anschließend mit dem [[https://www.torproject.org/projects/torbrowser.html.en|Tor Browser]] geöffnet werden. Generelle Information zu einem Tor Hidden Service stehen auf deutsch im [[https://www.privacy-handbuch.de/handbuch_24f.htm|Privacy Handbuch]]. +
- +
-Ist der hidden service eingerichtet, so muss noch eine Änderung in der ssh-Konfiguration getätigt werden, um auf Dienst zugreifen zu können. Dazu wird folgender Eintrag in ''~/.ssh/config'' ergänzt: +
- +
-<code> +
-Host *.onion +
-  ProxyCommand /bin/nc -xlocalhost:9050 -X5 %h %p +
-</code> +
- +
-So werden alle Adressen, die auf ''.onion'' enden, über einen Proxy mit netcat geleitet und der Pi ist mit ''ssh pi@XXXXXXX.onion'' erreichbar. Damit dies funktioniert, muss Tor als Dienst auch auf dem lokalen Rechner laufen. +
- +
-Wenn man sich die kryptische Adresse nicht merken will, kann sie auch in der ssh-Konfiguration abgelegt werden. +
- +
-<code> +
-Host meinpi +
-  Hostname XXXXXXXXX.onion +
-  User pi +
-  ProxyCommand /bin/nc -xlocalhost:9050 -X5 %h %p +
-</code> +
- +
-Dann ist der Aufruf mit ''ssh pi@meinpi'' deutlich einfacher. +
-===== Backupskript programmieren ===== +
-<html> +
-<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/uV_AAJvmpZc?rel=0" frameborder="0" allowfullscreen></iframe> +
-</html> +
- +
-Die Daten des Servers sollen nun regelmäßig mit Hilfe eines Bash-Skriptes in einem [[wpde>Backup]] gesichert werden.  +
- +
-  - Lies im Skript Kap. 4.1 "Einführung in die Skriptprogrammierung" und beantworte die folgenden Fragen. +
-    - Wie sieht die erste Zeile in einem bash-Skript aus? Welche Bedeutung hat der Begriff "shebang"? +
-    - Welche Rechte benötigt ein bash-Skript, damit es korrekt funktioniert? +
-    - Was ist der Unterschied zwischen einfachen ('<html>&nbsp;</html>') und doppelten ("<html>&nbsp;</html>") Anführungszeichen im Umgang mit  Variablen in Skripten? +
-    - Was steht in der Variablen ''$*''? +
-    - Welche Ein- und Ausgabekanäle gibt es und was machen sie? +
-    - Wie kann die Ausgabe eines Kommandos umgelenkt werden? +
-    - Was ist eine "Pipe"? Gib eine mögliche Beispielanwendung an. +
-    - Erstelle ein Skript ''~/bin/datum.sh'', das bei der Ausführung das aktuelle Datum und die Uhrzeit ausgibt. Rufe es auf und prüfe die Ausgabe. +
-    - Erstelle ein Skript ''~/bin/tmp-sicherung.sh'', welches das Verzeichnis ''/tmp'' mit Hilfe des Befehls ''tar'' in ein komprimiertes Archiv im Homevezeichnis (''~/tmp.tar.gz'') ablegt. \\ //Zusatz:// Passe das Skript so an, dass das aktuelle Datum im Dateinamen enthalten ist: z. B. ''~/2016-03-01-tmp.tar.gz'' +
-  - Lies Kapitel 7.2 über Datensicherungen im Skript und beantworte die folgenden Fragen. +
-    - Welche Sicherungsarten gibt es? +
-    - Warum ist ein Backup sinnvoll? Wogegen schützt es? +
-  - Welche Daten bzw. Verzeichnisse sollen in die Sicherung des Servers aufgenommen werden? Erstelle eine Liste. +
-  - Erstelle ein Skript ''~/bin/sicherung.sh'', das die wichtigen Daten in einer Vollsicherung sichert.((Falls du die Befehle für das Erstellen von ''tar''-Archiven nicht mehr kennst, hilft ein Blick in Kap. 7.1 des Skriptes.)) +
-  - Führe das Skript aus und prüfe, ob alle wichtigen Daten in dem Archiv gelandet sind.  +
-  - Entpacke das Archiv wieder und prüfe stichprobenartig, ob sich die Dateien gegenüber den Originalen verändert haben.((Das Programm ''diff'' kann hierbei weiterhelfen.)) +
-  - Erstelle einen Cronjob, der das Skript regelmäßig ausführt. Für welchen Zeitraum hast du dich entschieden und wie hast du ihn als Cronjob umgesetzt? +
- +
-===== Backups auf einem externen Medium sichern ===== +
- +
-Derzeit landen die Backups noch auf dem [[Raspberry Pi]]. Nun wollen wir dafür sorgen, dass sie auch auf einem externen Medium gesichert werden. Dies können eine externe Festplatte, ein USB-Stick, eine Netzwerk-Freigabe sein oder auch Cloud-Dienst sein. +
- +
-  - Warum ist es sinnvoll das Backup nicht auf dem Pi zu sichern, sondern auf einem externen Medium? +
-  - Lies Kap. 5.2.2 im Skript. Was macht der Befehl [[https://wiki.ubuntuusers.de/mount/|mount]]? Erkläre die Ausgabe von ''mount -l''+
-  - Richte eine Netzwerkfreigabe unter Windows ein. Der Windows-Benutzer muss dafür durch ein Passwort gesichert sein.  +
-  - Teste die Freigabe von einem anderen Rechner aus, indem du im Explorer die Adresse ''\\IP-ADRESSE\NAME_DER_FREIGABE'' aufrufst. \\ \\ Den Artikel [[https://wiki.ubuntuusers.de/Samba_Client_cifs/|Samba Client cifs]] werden wir für die folgenden Aufgaben brauchen. Am besten öffnest du ihn in einem separaten Fenster. +
-  - Erstelle einen Mountpoint (Einhängepunkt). An dieser Stelle wird die Netzwerkfreigabe später eingehängt. Wenn dir dies nicht gelinkt kannst du ''/mnt'' als Mountpoint nutzen.  +
-  - Nutze den ''mount''-Befehl, um die Netzwerkfreigabe in dem Mountpoint einzubinden.((Der Befehle muss ungefähr so lauten \\ ''<nowiki>mount.cifs //IP-ADRESSE/freigabe /mein/mount/punkt -o username=USERNAME,password=PASSWORT</nowiki>'')) +
-  - Trage den Mountpoint in die Datei ''[[https://wiki.ubuntuusers.de/fstab/|/etc/fstab]]'' ein. Wozu ist diese Datei da? Wie kann verhindert werden, dass sensible Zugangsdaten in der für alle lesbaren Datei ''fstab'' abgelegt werden? Probiere es aus. +
-  - Prüfe, ob die Einbindung auch nach einem Neustart des Pi funktioniert. +
-  - Passe dein Backupskript so an, dass die Backups fortan auf der eingebundenen Freigabe landen. \\ \\  +
-  - Eine weitere Möglichkeit besteht darin, das Backup bei einem Cloud-Dienst wie z.B. //dropbox// oder //owncloud// hochzuladen. Die folgende [[https://tbs1.de/owncloud/public.php?service=files&t=f3907d0a2b4037a255ce420c3a6c779f|Anleitung]] beschreibt dieses Verfahren für dropbox. In dem [[https://doc.owncloud.org/server/7.0/user_manual/files/files.html|Handbuch für Owncloud]] wird das Verfahren für owncloud beschrieben, wobei hier WebDAV als Protokoll zum Einsatz kommt. +
- +
-Falls du irgendwo nicht weiterkommst, kannst du den Hinweis in der Fußnote nutzen. Hier ist eine Session abgelegt, die das Einbinden verdeutlicht.(( +
-Die folgende Sitzung geht von einem Rechner mit dem Namen ''IE11WIN7'', einem Nutzer ''IEUser'' und dem Passwort ''Passw0rd!'' aus. +
-<code bash> +
-## Freigabe manuell einbinden +
- +
-bakera@ubu:~$ sudo mount.cifs //IE11WIN7/Users/IEUser/Desktop/Freigabe /mnt/ -o user=IEUser +
-Password for IEUser@//IE11WIN7/Users/IEUser/Desktop/Freigabe:  ********* +
- +
-## Dateien in der Freigabe anlegen +
- +
-bakera@ubu:~$ date > /mnt/datum.txt +
-bash: /mnt/datum.txt: Keine Berechtigung +
-bakera@ubu:~$ ls -dl /mnt/ +
-drwxr-xr-x 2 root root 0 Mär  6 08:52 /mnt/ +
- +
-bakera@ubu:~$ sudo touch /mnt/a.txt +
-bakera@ubu:~$ sudo su +
-root@ubu:/home/bakera# date > /mnt/datum.txt +
-root@ubu:/home/bakera# cat /mnt/datum.txt  +
-So 6. Mär 09:03:43 CET 2016 +
-root@ubu:/home/bakera# exit +
- +
-bakera@ubu:~$ sudo umount /mnt  +
- +
-## fstab anpassen +
- +
-bakera@ubu:~$ cd /etc/ +
-bakera@ubu:/etc$ sudo vim fstab  +
-bakera@ubu:/etc$ cat /etc/fstab  +
-# /etc/fstab: static file system information. +
-+
-# Use 'blkid' to print the universally unique identifier for a +
-# device; this may be used with UUID= as a more robust way to name devices +
-# that works even if disks are added and removed. See fstab(5). +
-+
-# <file system> <mount point>   <type>  <options>       <dump>  <pass> +
-# / was on /dev/sda1 during installation +
-UUID=02896ffe-fb0f-4c8e-b396-beaa13bf79f5 /               ext4    errors=remount-ro 0       1 +
-# swap was on /dev/sda5 during installation +
-UUID=1247dedb-72a5-4053-9042-43bdb7617db5 none            swap    sw              0       0 +
-//IE11WIN7/Users/IEUser/Desktop/Freigabe /mnt             cifs rw,user,credentials=/etc/win_freigabe_cred.txt +
- +
-bakera@ubu:/etc$ mount /mnt/ +
-error 2 (No such file or directory) opening credential file /etc/win_freigabe_cred.txt +
- +
-## Datei mit Zugangsdaten (englisch 'credentials') anlegen +
- +
-bakera@ubu:/etc$ sudo vim /etc/win_freigabe_cred.txt +
-bakera@ubu:/etc$ cat /etc/win_freigabe_cred.txt  +
-username=IEUser +
-password=Passw0rd! +
- +
-bakera@ubu:/etc$ ls -l win_freigabe_cred.txt  +
--rw-r--r-- 1 root root 36 Mär  6 09:11 win_freigabe_cred.txt +
-bakera@ubu:/etc$ sudo chmod 600 win_freigabe_cred.txt  +
-bakera@ubu:/etc$ ls -l win_freigabe_cred.txt  +
--rw------- 1 root root 36 Mär  6 09:11 win_freigabe_cred.txt +
-bakera@ubu:/etc$ sudo chown bakera:bakera win_freigabe_cred.txt  +
-bakera@ubu:/etc$ ls -l win_freigabe_cred.txt  +
--rw------- 1 bakera bakera 36 Mär  6 09:11 win_freigabe_cred.txt +
- +
-bakera@ubu:/etc$ mount /mnt/ +
-bakera@ubu:/etc$ ls -l /mnt/ +
-insgesamt 1 +
--rwxr-xr-x 1 bakera bakera  0 Mär  6 09:03 a.txt +
--rwxr-xr-x 1 bakera bakera 29 Mär  6 09:03 datum.txt +
-bakera@ubu:/etc$ ls -ld /mnt/ +
-drwxr-xr-x 2 bakera bakera 0 Mär  6 09:03 /mnt/ +
-</code> +
- +
-)) +
- +
-Weitere Möglichkeiten ergeben sich durch inkrementelle und differentielle Backups. Der Parameter ''-g'' von ''tar'' hilft hierbei weiter. Noch komfortabler geht es  mit den beiden Tools ''rsync'' und ''rsnapshot''. Der Vortrag [[https://www.youtube.com/watch?v=d5fa1cEcgG8|Sicheres Backup, rsync, ssh und LUKS im Team]] von Richard Albrecht aus dem Jahr 2016 stellt die unterschiedlichen Möglichkeiten ausführlich vor. +
- +
- +
- +
- +
- +
-===== Systemüberwachung (Monitoring) ===== +
-{{ :schule:computer_ok.png?nolink|}} +
-Unser Server läuft im Regelfall ohne Probleme und liefert die Webseiten und das Wiki aus. Nun kann es jedoch passieren, dass durch Probleme im Netz, der Software oder der Hardware der Server nicht mehr erreichbar ist. Wenn das passiert, wollen wir schnell davon erfahren, um reagieren zu können -- noch bevor Nutzer dies merken.  Daher soll der Server nun durch einen Monitordienst von einem anderen Rechner überwacht werden. +
- +
-Für die folgenden Aufgaben benötigt ihr die [[https://tbs1.de/owncloud/public.php?service=files&t=c4d171a73cae8eff5c798dedaea5e13c|Anleitung]] (aus //Raspberry Pi - Das umfassende Handbuch//, Kap. 35) zur Einrichtung von Munin und smokeping. +
- +
-  - Lies den verlinkten Artikel und beschreibe in eigenen Worten, was die Dienste [[http://munin-monitoring.org/|Munin]] und [[http://oss.oetiker.ch/smokeping/|SmokePing]] tun. Erläutere den Unterschied zwischen beiden. +
-  - Bearbeitet die folgenden Aufgaben zusammen in einer Gruppe aus 3 oder 4 Personen. \\ \\ **Munin** \\ +
-  - Bestimmt einen Raspberry Pi als Munin-Master und die anderen Pis als Munin-Nodes. +
-  - Richtet das Monitoring mit "Munin" ein.((Falls der Zugriff auf den Apache-Webserver des Masters mit einer Fehlermeldung beendet wird, die auf fehlende Rechte hindeutet, könnte der [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783499|Fehler #783499]] die Ursache sein. Beachte die Hinweise in dem verlinkten Bug und passe die Konfigurationsdatei des Apache entsprechend an. Ferner muss auf dem master auch das Paket ''munin-node'' installiert sein. Die folgenden Befehle führen auf einem frischen Ubuntu 16.04 zur Einrichtung eines munin-masters: +
- +
-Paketquellen aktualisieren und Webserver installieren. +
-  # apt-get update && apt-get install apache2 && service apache2 start +
- +
-Das munin-node-Paket installieren und den Dienst starten. +
-  # apt-get install munin-node && service munin-node start +
-     +
-Testen, ob der node funktioniert. +
-  # apt-get install telnet +
-  # telnet localhost 4949 +
- +
-Nach der Verbindung mit telnet sollte der node auf die Befehle ''version'' oder ''list'' reagieren. Nun kann munin installiert werden. +
- +
-  # apt-get install munin +
-  # service apache2 restart +
- +
-Zugriff von außen zulassen. Dazu 'Require local' durch 'Require all granted' ersetzen   +
- +
-  # nano /etc/munin/apache24.conf  +
-  # service apache2 restart +
- +
-5 Minuten auf den nächsten Lauf des Cronjobs warten oder selbst anstoßen: +
- +
-  # su - munin --shell=/bin/bash munin-cron +
- +
-)) \\ Bei Problemen kann die Seite [[http://munin-monitoring.org/wiki/MuninTroubleshooting|Munin Troubleshooting]] weiterhelfen.\\ \\ **smokeping** \\ +
-  - Legt ein Monitoring mit "SmokePing" auf einem Pi an. ((Wenn es keine Konfigurationsdatei für den apache in ''/etc/apache2/conf-available/smokeping.conf'' gibt, muss diese mit einem symbolischen Link nach ''/etc/smokeping/apache2.conf'' angelegt und mit ''a2enconf'' aktiviert werden:''ln -s /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf'' dann ''a2enconf smokeping''.\\ Die Fehlermeldung ''client denied by server configuration: /usr/lib/cgi-bin/smokeping.cgi'' deutet auf ein fehlendes CGI-Modul im apache hin. Es kann mit ''a2enmod cgi'' aktiviert werden.)) +
-  - Wählt verschiedene Webseiten (unsere Klassenseite, euren eigenen Pi, eine große bekannte Webseite) oder auch IP-Adressen, die ihr mit smokeping überwachen wollt.\\ \\ //(optional)// +
-  - Mit der Android-App [[https://play.google.com/store/apps/details?id=de.eidottermihi.raspicheck|RasPi Check]] lässt sich der Pi auch vom Handy aus überwachen, wenn der SSH-Zugang von Außen erreichbar ist. Probiere die App aus, wenn du ein Android-Handy hast. +
-  - [[https://github.com/afaqurk/linux-dash|Linux Dash]] ist ein weitere einfache Übersicht über den Status des Servers. Probiere es aus. +
- +
- +
schule/raspberry_pi_als_server.1502361891.txt.gz · Zuletzt geändert: 2017-08-10 12:44 von marco.bakera