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
Letzte ÜberarbeitungBeide Seiten der Revision
schule:raspberry_pi_als_server [2017-04-19 08:39] – Externe Bearbeitung 127.0.0.1schule:raspberry_pi_als_server [2019-12-21 13:48] – owncloud link enternt. marco.bakera
Zeile 18: Zeile 18:
 ==== Webserver im Netz finden ==== ==== Webserver im Netz finden ====
  
-Um heraus zu finden, welche Webserver auf Port 80 im Netz 192.168.42.0/24 laufen, kann [[man>nmap]] genutzt werden.+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   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. 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 ==== ==== 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? 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 ===== ===== dokuwiki installieren =====
 {{ ::dokuwikilogo.png?nolink|}} {{ ::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. 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 [[man>wget]] benutzen oder euch mit einer Remotedesktopverbindung auf den Pi verbinden und dort einen Browser starten.+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   wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
Zeile 36: Zeile 38:
 ==== Zugriffsrechte anpassen ==== ==== 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 [[man>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.+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   sudo chown -R pi:www-data /var/www/dokuwiki
  
-Nun erhält die Gruppe mit [[man>chmod]] jeweils Schreibrechte auf die Dateien.+Nun erhält die Gruppe mit [[debman>chmod]] jeweils Schreibrechte auf die Dateien.
      
   chmod -R g+w /var/www/dokuwiki   chmod -R g+w /var/www/dokuwiki
Zeile 57: Zeile 59:
 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]]. 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 [[man>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.+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. 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.
Zeile 90: Zeile 92:
 </html> </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 [[man>grep]]-Befehls kann in einer Datei gesucht werden.+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?   - Wo legt der apache-Webserver die Logdateien ab?
Zeile 103: Zeile 105:
 ===== Einrichten einer eigenen Domain ===== ===== Einrichten einer eigenen Domain =====
 {{ :schule:dns-raum.png?nolink|}} {{ :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 [[man>curl]]-Aufruf die neue IP-Adresse mitteilen. Damit dies regelmäßig erfolgt, legt man am besten einen [[wpde>cronjob]] dafür an. +Ü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".   - 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".
Zeile 136: Zeile 138:
 ==== Tor hidden service ==== ==== 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]].+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 ''.onion''-Domain generiert. Dies klappt auch hinter einem Router ohne Port-Weiterleitungen. 
 + 
 +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.((Das Tor-Browser Bundle verwendet einen abweichenden Standard-Port 9150 statt 9050 für den Proxy. Dieser kann in den Netzwerk-Einstellungen des Browsers geändert werden. Oder die unten angegebenen Ports müssen angepasst werden.)) 
 + 
 +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 ===== ===== Backupskript programmieren =====
 <html> <html>
Zeile 176: Zeile 200:
   - Prüfe, ob die Einbindung auch nach einem Neustart des Pi funktioniert.   - 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. \\ \\    - 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.+  - Eine weitere Möglichkeit besteht darin, das Backup bei einem Cloud-Dienst wie z.B. //dropbox// oder //owncloud// hochzuladen. Die folgende //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.(( Falls du irgendwo nicht weiterkommst, kannst du den Hinweis in der Fußnote nutzen. Hier ist eine Session abgelegt, die das Einbinden verdeutlicht.((
Zeile 260: Zeile 284:
 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. 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.+Für die folgenden Aufgaben benötigt ihr die //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.   - 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.
schule/raspberry_pi_als_server.txt · Zuletzt geändert: 2024-01-25 17:38 von pintman