Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
manuals:apache-reverse-proxy-manual [2016/09/20 11:25] paulg4hmanuals:apache-reverse-proxy-manual [2018/01/09 00:13] (aktuell) – [Letsencrypt --> Kostenloses https Zertifikat] admin
Zeile 11: Zeile 11:
  
 ===== Voraussetzungen ===== ===== Voraussetzungen =====
-  * Linux Rechner in diesem Fall ein Raspberry PI mit Rasbian welcher auf dem aktuellen Stand vom März 2014 ist und 24/7 Online ist.+  * Linux Rechner mit Raspbian / Debian und 24/7 Online ist.
   * Mit einer Statischen IP Adresse oder einer Reservierung in ihrem DHCP Server (meist der Router / Firewall) immer unter der gleichen IP Adresse erreichbar ist.   * Mit einer Statischen IP Adresse oder einer Reservierung in ihrem DHCP Server (meist der Router / Firewall) immer unter der gleichen IP Adresse erreichbar ist.
   * Einen Router / Firewall mit einer fixen IP Adresse oder einem Dynamischen DNS Dienst (DynDNS der Bekannteste ist inzwischen kostenlos nicht mehr nutzbar aber es gibt je nach Router / Firewall auch noch andere immer noch Kostenlose Anbieter) und einer Port Weiterleitung vom Port 443 (https) auf die Interne Adresse des Linux Rechners.   * Einen Router / Firewall mit einer fixen IP Adresse oder einem Dynamischen DNS Dienst (DynDNS der Bekannteste ist inzwischen kostenlos nicht mehr nutzbar aber es gibt je nach Router / Firewall auch noch andere immer noch Kostenlose Anbieter) und einer Port Weiterleitung vom Port 443 (https) auf die Interne Adresse des Linux Rechners.
Zeile 23: Zeile 23:
 Diese ist abhängig vom Kennwort das Sie wie hier in dieser Anleitung Beschrieben für den Zugriff vergeben! Diese ist abhängig vom Kennwort das Sie wie hier in dieser Anleitung Beschrieben für den Zugriff vergeben!
  
-===== Vorbereitung =====+Zur Erhöhung der Sicherheit sei noch das fail2ban Paket unter Linux empfohlen welches auch in dieser Anleitung erklärt wird und eine "brute-force" attacke auf die Dienste verhindert!
  
-==== System Aktualisieren und Pakete Installieren ====+===== Vorbereitung Raspbian / Debian 9 ===== 
 + 
 +==== Installation ==== 
 + 
 +=== System Aktualisieren ===
 Zuerst bitte das System auf den neuesten stand bringen mit: Zuerst bitte das System auf den neuesten stand bringen mit:
-  sudo aptitude update && aptitude upgrade -y+  sudo aptitude update && aptitude dist-upgrade -y 
 + 
 +=== Pakete Installieren ===  
 Dann müssen folgende Pakete Installiert werden: Dann müssen folgende Pakete Installiert werden:
-  sudo aptitude install apache2 apache2-utils libapache2-mod-proxy-html vim apache2-utils -y+  sudo aptitude install apache2 apache2-utils libapache2-mod-rpaf vim apache2-utils -y
  
-==== Apache Module aktivieren ====+=== Apache Module aktivieren === 
 +Dann müssen folgende Module im Apache aktiviert werden: 
 +  sudo a2enmod ssl headers rewrite proxy proxy_http 
 + 
 +==== Einrichtung ==== 
 + 
 +==== Letsencrypt --> Kostenloses https Zertifikat==== 
 + 
 +=== Apache Paket Installieren === 
 +  sudo aptitude install python-letsencrypt-apache 
 + 
 +=== Apache default SSL config === 
 + 
 +Eine Gültige ssl config mit dem DNS namen (ServerName in apache config) unter welchem der Reverse Proxy aus dem Internet erreichbar ist anlegen (mit dem Standard Snakeoil SSL Zertifikat reicht!) 
 +  sudo vi /etc/apache2/sites-available/<dns name>.<endung>.conf 
 + 
 +mit folgendem Inhalt anlegen: 
 +<code> 
 +<IfModule mod_ssl.c> 
 +        <VirtualHost _default_:443> 
 +                ServerAdmin webmaster@localhost 
 +                ServerName <dns name>.<endung> 
 + 
 +                DocumentRoot /var/www/html 
 + 
 +                ErrorLog ${APACHE_LOG_DIR}/error.log 
 +                CustomLog ${APACHE_LOG_DIR}/access.log combined 
 + 
 +                SSLEngine on 
 + 
 +                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem 
 +                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 
 + 
 +        </VirtualHost> 
 +</IfModule> 
 +</code> 
 +  
 +Diese Seite aktivieren mit: 
 +  a2enside <dns name>.<endung>.conf 
 +  
 +Apache neu starten mit: 
 +  systemctl restart apache2.service 
 + 
 +=== Port Forwarding im Router === 
 + 
 +auf die FIXE IP des Raspberry TCP Port 443 Einrichten (je nach Modell Unterschiedlich --> Google it!) 
 + 
 +=== Zertifikat installieren === 
 +Folgenden Befehl Interaktiv ausführen 
 +  letsencrypt 
 +und die Domäne auswählen für die das Zertifikat erstellt werden soll. 
 + 
 +Nach der eingabe einer Mail Adresse unter der sie Benachrichtigt werden können falls es Fragen wengen dem Zertifikat gibt wird dies erstellt und die Abfrage ob sie auch http auf https umleiten wollen können sie beantworten wie sie möchten. 
 + 
 +=== Cronjob zum Automatischen Aktualisieren === 
 +Jeden Sonntat um 1 Uhr Morgens wird Versucht das Zertifikat zu erneuern was aber erst nach 4 Wochen gemacht wird. 
 +<code> 
 +  * 1 * * 1 /usr/bin/letsencrypt -q renew 
 +</code> 
 + 
 +Nach dem neustarten vom Apache sollte wenn sie den DNS Namen aufrufen das gültige Zertifikat vom Browser angezeigt werden. 
 + 
 +==== HTTPS Basic Authentication einrichten ==== 
 +=== Ordner für Zertifikate erstellen === 
 +  sudo mkdir /etc/apache2/ssl 
 + 
 +=== Benutzer erstellen === 
 +Jetzt erstellen wir eine Kennwort Datei 
 +  sudo htpasswd -c /etc/apache2/ssl/httpsusers admin 
 +Wobei der Benutzername angepasst werden kann und dann zweimal das Kennwort für den Benutzer bestätigt werden muss. 
 +Wenn ein weiterer Benutzer erstellt werden soll muss der Befehl so aussehen 
 +  sudo htpasswd /etc/apache2/ssl/httpsusers Benutzername 
 + 
 +=== Authentifizierung im Apache einbinden === 
 + 
 +Nun kann die /etc/apache2/sites-available/<dns name>.<endung>.conf Erweitert werden um: 
 +<code> 
 + <Location /> 
 +      AuthType basic 
 +      AuthName "home" 
 +      AuthUserFile  /etc/apache2/ssl/httpsusers 
 +      Require valid-user 
 +  </Location> 
 +  <Directory /var/www/html/> 
 +      Options Indexes FollowSymLinks MultiViews 
 +      AllowOverride All 
 +      Require all granted 
 +  </Directory> 
 +</code> 
 +Als nächstes empfehle ich fail2ban zu Installieren und aktivieren (siehe unten) 
 + 
 +Nun können die Blöcke von unten mit den Konfigurationen für die Dienste an die Datei /etc/apache2/sites-available/<dns name>.<endung>.conf angefügt werden 
 + 
 +===== ALT Vorbereitung Raspbian / Debian 7 und 8 ===== 
 + 
 +=== System Aktualisieren und Pakete Installieren === 
 + 
 +=== System Aktualisieren === 
 +Zuerst bitte das System auf den neuesten stand bringen mit: 
 +  sudo aptitude update && aptitude dist-upgrade -y 
 + 
 +=== Pakete Installieren ===   
 +Dann müssen folgende Pakete Installiert werden: 
 +  sudo aptitude install apache2 apache2-utils libapache2-mod-proxy-html vim -y 
 + 
 +=== Apache Module aktivieren ===
 Dann müssen folgende Module im Apache aktiviert werden: Dann müssen folgende Module im Apache aktiviert werden:
   sudo a2enmod ssl rewrite proxy proxy_http    sudo a2enmod ssl rewrite proxy proxy_http 
  
 ==== SSL (https) Zufriff für den Apache Einrichten ==== ==== SSL (https) Zufriff für den Apache Einrichten ====
-Ordner für Zertifikate erstellen 
-  sudo mkdir /etc/apache2/ssl 
  
 <WRAP center round important 100%> <WRAP center round important 100%>
Zeile 70: Zeile 179:
 Die ssl Seite in Apache Aktivieren Die ssl Seite in Apache Aktivieren
   sudo a2ensite default-ssl   sudo a2ensite default-ssl
-Dann in der Datei **/etc/apache2/sites/enabled/default-ssl** folgende Anpassungen machen: +Dann in der Datei **/etc/apache2/sites/enabled/default-ssl.conf** folgende Anpassungen machen: 
-  sudo vi /etc/apache2/sites-enabled/default-ssl+  sudo vi /etc/apache2/sites-enabled/default-ssl.conf
 und dort im Tag **<VirtualHost _default_:443>** folgende Zeilen hinzufügen: und dort im Tag **<VirtualHost _default_:443>** folgende Zeilen hinzufügen:
   SSLCertificateFile    /etc/apache2/ssl/server.crt   SSLCertificateFile    /etc/apache2/ssl/server.crt
Zeile 90: Zeile 199:
  
 ==== HTTPS Basic Authentication einrichten ==== ==== HTTPS Basic Authentication einrichten ====
 +=== Ordner für Zertifikate erstellen ===
 +  sudo mkdir /etc/apache2/ssl
 +
 === Benutzer erstellen === === Benutzer erstellen ===
 Jetzt erstellen wir eine Kennwort Datei Jetzt erstellen wir eine Kennwort Datei
Zeile 100: Zeile 212:
  
 Nun muss diese Datei noch in den Apache für den Aufruf des Webroot eingebunden werden dazu editieren wir wieder die Datei Nun muss diese Datei noch in den Apache für den Aufruf des Webroot eingebunden werden dazu editieren wir wieder die Datei
-  sudo vi /etc/apache2/sites-enabled/default-ssl+  sudo vi /etc/apache2/sites-enabled/default-ssl.conf
 und fügen im **<VirtualHost _default_:443>** Tag den Block **<Location />** wie folgt ein: und fügen im **<VirtualHost _default_:443>** Tag den Block **<Location />** wie folgt ein:
  
Zeile 132: Zeile 244:
   sudo service apache2 reload   sudo service apache2 reload
 Wenn wir nun die Webseite erneut per https aufrufen werden wir nach Benutzernamen und Kennwort gefragt und sehen die Seite erst nach eingabe von unseren oben erstellten Benutzernamen / Kennwort. Wenn wir nun die Webseite erneut per https aufrufen werden wir nach Benutzernamen und Kennwort gefragt und sehen die Seite erst nach eingabe von unseren oben erstellten Benutzernamen / Kennwort.
-  + 
 +====== Proxy Konfigurations Blöcke ====== 
 ===== Proxy für Homematic CCU ===== ===== Proxy für Homematic CCU =====
 Dazu editieren wir wieder die datei  Dazu editieren wir wieder die datei 
-  sudo vi /etc/apache2/sites-enabled/default-ssl+  sudo vi /etc/apache2/sites-enabled/default-ssl.conf
 und fügen am ende des **<VirtualHost _default_:443>** Tag den folgenden angepassten Block ein: und fügen am ende des **<VirtualHost _default_:443>** Tag den folgenden angepassten Block ein:
  
Zeile 459: Zeile 573:
 ===== Beispiel für die Apache SSL Konfigurationsdatei ===== ===== Beispiel für die Apache SSL Konfigurationsdatei =====
 Solltet ihr Probleme haben so vergleicht den Inhalt der Datei mit der Untenstehenden oder Übernehmt diese mit der Apassung des DNS Namens (<eigener-dns-Name> 5x) und der IP eurer CCU (<internet-ip-der-ccu> 1x) mit: Solltet ihr Probleme haben so vergleicht den Inhalt der Datei mit der Untenstehenden oder Übernehmt diese mit der Apassung des DNS Namens (<eigener-dns-Name> 5x) und der IP eurer CCU (<internet-ip-der-ccu> 1x) mit:
-  sudo vi /etc/apache2/sites-enabled/default-ssl +  sudo vi /etc/apache2/sites-enabled/default-ssl.conf 
-  +<code>  
-    <IfModule mod_ssl.c>+  <IfModule mod_ssl.c>
     <VirtualHost _default_:443>     <VirtualHost _default_:443>
 +        ServerName <subdomain>.<domain>.<endung>
         ServerAdmin webmaster@localhost         ServerAdmin webmaster@localhost
      
Zeile 546: Zeile 661:
     </VirtualHost>     </VirtualHost>
     </IfModule>     </IfModule>
- +</code> 
  
 ====== Homedroid Einstellungen für den Zugriff auf die CCU über diesen Reverse Proxy ====== ====== Homedroid Einstellungen für den Zugriff auf die CCU über diesen Reverse Proxy ======
Zeile 580: Zeile 695:
 ====== Weitere Seiten einbinden ====== ====== Weitere Seiten einbinden ======
 Wenn auch andere Seiten wie die einer Webcam (z.B. Foscam) durch den Reverse Proxy verfügbar gemacht werden können sie das einfacher haben solange das Webinterface nicht zu viele Unterseiten hat so wie bei meiner Foscam Webcam durch änderen der Datei: Wenn auch andere Seiten wie die einer Webcam (z.B. Foscam) durch den Reverse Proxy verfügbar gemacht werden können sie das einfacher haben solange das Webinterface nicht zu viele Unterseiten hat so wie bei meiner Foscam Webcam durch änderen der Datei:
-  sudo vi /etc/apache2/sites-enabled/default-ssl+  sudo vi /etc/apache2/sites-enabled/default-ssl.conf
 und fügen am ende des **<VirtualHost _default_:443>** Tag den folgenden angepassten Block ein: und fügen am ende des **<VirtualHost _default_:443>** Tag den folgenden angepassten Block ein:
   ProxyPass        /cam01/ http://<ip>:<port>/   ProxyPass        /cam01/ http://<ip>:<port>/
Zeile 589: Zeile 704:
 ===== Installation ===== ===== Installation =====
   aptitude install fail2ban   aptitude install fail2ban
-===== Einrichten =====+===== Einrichten Raspbian / Debian 9 ===== 
 +für https apache muss in der Datei 
 +  sudo vi /etc/fail2ban/jail.d/defaults-debian.conf 
 + 
 +Und die Apache Auth Rule aktivieren indem folgende Zeilen dort angefügt werden damit die Datei so aussieht: 
 +<code> 
 +[sshd] 
 +enabled = true 
 + 
 +[apache-auth] 
 +enabled = true 
 + 
 +[apache-noscript] 
 +enabled = true 
 + 
 +[apache-overflows] 
 +enabled = true 
 + 
 +[apache-nohome] 
 +enabled = true 
 + 
 +[apache-botsearch] 
 +enabled = true 
 + 
 +[apache-fakegooglebot] 
 +enabled = true 
 + 
 +[apache-modsecurity] 
 +enabled = true 
 + 
 +[apache-shellshock] 
 +enabled = true 
 +</code> 
 + 
 +Dann den fail2ban Dienst neustarten mit: 
 +  service fail2ban restart 
 + 
 +Nun kann im fail2ban log gesehen werden wenn jemand ge"banned" wurde 
 +  tail -f /var/log/fail2ban.log 
 + 
 +===== Einrichten Raspbian / Debian 7 oder 8 =====
 Dann muss nur noch der apache aktiviert werden und in der log Datei Dann muss nur noch der apache aktiviert werden und in der log Datei
   vi /etc/fail2ban/jail.conf   vi /etc/fail2ban/jail.conf
Zeile 699: Zeile 854:
 ===== Apache2 sites-enabled ===== ===== Apache2 sites-enabled =====
 Die https Konfiguration des webservers in: Die https Konfiguration des webservers in:
-  /etc/apache2/sites-enabled/default-ssl+  /etc/apache2/sites-enabled/default-ssl.conf
 sollte so aussehen: sollte so aussehen:
 <code> <code>
Zeile 781: Zeile 936:
 und den Apache neu zu laden: und den Apache neu zu laden:
   service apache2 reload   service apache2 reload
 +
 +
  
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki