- Registriert
- 11. Juni 2010
- Beiträge
- 4.080
- Reaktionspunkte
- 2.847
- Punkte
- 373
Hallo Zusammen,
ich möchte das Thema Client / Server Security in diesem Beitrag aufgreifen und euch erklären, wie Ihr ohne Probleme euch, eure Clients und eure Infrastruktur schützen könnt.
Unabhängig davon wie Ihr euere Systeme am Laufen habt, ob Zuhause oder VServer, ist diese Lösung universal einzusetzen.
Als Beispiel dient folgende Konfiguration, da sie denke ich mehrheitlich vertreten ist:
1. Ubuntu / Debian based Homeserver mit laufender OScam Instanz
2. Entsprechende Router Freigaben
3. IPC / oder Userpanel von freddchen
Benötigt:
4. Zusätzlicher OpenVZ Server (alternativ KVM, Xen Terminal etc.)
Zu Punkt 4 stellen sich viele jetzt bestimmt eine Frage: Wozu?
Die Antwort: Wir setzen den OpenVZ Server multifunktional ein, als Firewall, als Gateway, als Proxy.
Der OpenVZ Server ist in der regel sehr günstig und hat gute Performance. Als Anbieter kann ich mit besten Wissen und durch meine Erfahrungen myvirtualserver empfehlen.
Prinzipiell würde ein OVZ Server mit 256 MB Ram ausreichen, empfehlen tue ich aber minimum 512 MB RAM.
Zur Umsetzung:
Nachdem Ihr den OpenVZ Server mit Ubuntu (Das HowTo orientiert sich an 15.10!) installiert habt, müssen noch ein paar zusätzliche Pakete sicherheitshalber (da Minimal Installation) installiert werden:
Nachdem alles auf aktuellen Stand gebracht worden ist, bereiten wir die Reverse Proxy vor.
Die Reverse Proxy dient dazu, den eigentlich Webserver und das OScam Interface zu schützen.
Aber um das volle Potential auszuschöpfen benötigt Ihr eine neue, nur euch bekannte Dyn Adresse. In diesem Beispiel: geheimerhomeserver.dyndns.org
Beispiel:
Euer Homeserver hat die Dyn homeserver.dyndns.org
Darüber ist das OScam Webinterface, CCcam, cs378x und IPC von außen aufrufbar. Dies bedeutet es findet ein direkter Verbindungsaufbau zu eurem Homeserver statt. Dies kann gut....aber auch sehr schlecht sein (Hacking, DDOS, ungewünschte Besucher.....). Jetzt besorgt Ihr euch eine weitere Dyn für den OpenVZ Server: proxy.dyndns.org
Rufe ich also nach Einrichtung der Reverse Proxy die Adresse Proxy.dyndns.org:8888 für OScam auf, öffnet sich bei mir auch das OScam Webinterface. Aber ich kenne ja nur proxy.dyndns.org, die Adresse geheimerhomeserver.dyndns.org kenne ich als potentieller Angreifer nicht. Die Sicherheit ansich wird durch entsprechende Konfiguration an der Firewall entsprechend gehärtet.
Aber kommen wir jetzt zur Einrichtung der Reverse Proxy:
1. SSH Session öffnen
2. Wir aktivieren die Proxy folgendermaßen:
3. Wir erstellen unseren Virtual Host mit nano /etc/apache2/sites-enabled/000-default.conf, entfernen den gesamten Inhalt und fügen folgendes ein:
Jetzt noch die ports.conf bearbeiten: nano /etc/apache2/ports.conf
Listen 80
Listen 8888
Anschließend muss die Datei gespeichert werden und der Apache2 Server neugestartet werden: systemctl reload apache2
Jetzt könnt Ihr den ersten Zugriff testen:
Gebt im Browser eurer Wahl die Adresse proxy.dyndns.org (für IPC) ein und Ihr solltet nun ohne Probleme auf die IPC Startseite eures Servers gelangen (Vorrausgesetzt die Freigaben im Homerouter sind eingerichtet!!). Als nächstes testet den Zugriff auf das OScam Webinterface proxy.dyndns.org:8888
Wenn alles klappt, läuft die Reverse Proxy ohne Probleme!
Natürlich lässt sich das ganze auch mit SSL Verschlüsselung umsetzen!
Hierzu empfehle ich euch in das Thema Letsencrypt einzulesen.
Die Settings für den SSL Zugriff findet Ihr in dem Spoiler:
default-ssl.conf
/etc/apache2/ports.conf
Aber um das eigentliche Thema abzuschließen, kommen wir zum nächsten Thema.
Wie eingangs beschrieben, könnt Ihr euch, eure Familie, Freunde etc. schützen ohne sich mit OpenVPN auseinander zu setzen.
Dies bedeutet es fallen Clientseitig keine großen Änderungen an (eigentlich gar keine)!
Der SSH Tunnel wird gerne als Cheap-Men VPN betitelt und ich sage und versichere euch das dies falsch ist!
Der SSH Tunnel ist so vielseitig wie sicher!
Folgendes passiert durch den SSH Tunnel Tunnel:
Direkte Verbindungen zu eurem Homeserver funktionierten bisher immer über die Adresse homeserver.dyndns.org. Sprich jeder Client, Share Partner etc. sieht eure IP-Adresse an eurem Internet Anschluss.
Da wir aber die bisherige Adresse homeserver.dyndns.org auf den OpenVZ umleiten und niemand die neue Adresse des Homeservers geheimerhomeserver.dyndns.org nicht kennt, kennt auch niemand die IP-Adresse eures Servers.
Schaubild:
Client --> Vserver Tunnel --> Homeserver --> Vserver Tunnel --> Client
Sämtliche Kommunikation im SSH Tunnel ist verschlüsselt, aller Fremdverkehr der nichts mit den entsprechenden Share Protokollen zu tun hat wird einfach ignoriert und läuft ins Nirvana.
Damit das klappt müssen wir den SSH Tunnel vorbereiten und eine Standleitung einrichten. Als Beispiel nutze ich für eine CCcam Verbindung den Port 34011
Jetzt richten wir den Tunnel ein:
Folgendes in die rc.local hinzufügen: nano /etc/rc.local
Der autossh sorgt dafür, dass der Tunnel aktiv bleibt und falls notwendig nach 60 Sekunden erneut aufgebaut wird, sollte die Verbindung abbrechen.
Zu beachten ist, dass unbedingt die IP des VServers bei IP_eures_OpenVZ_Servers eingetragen werden muss. Mit DNS Namen wie proxy.dyndns.org funktioniert das nicht!
Das ganze ist natürlich für weitere Protokolle ausbaubar. Für ein weiteres Protokoll einfach die beiden Zeilen kopieren und zusätzlich mit entsprechenden Port hinzufügen.
Beispiel:
Nun könnt Ihr die Verbdinung nach dem speichern testen in dem Ihr folgendes machst:
Wenn jetzt keine Fehlermeldung auftaucht, ist alles korrekt.
Anschließent schaut mit netstat -tulpen ob Ihr einen oder zwei SSH seht, in meinem Beispiel schaut das so aus:
Wenn eure Clients jetzt wie bislang auch eine Verbindung zu homeserver.dyndns.org aufbauen, bekommen Sie folglich nur noch die IP-Adresse des Gateways, in dem Fall proxy.dyndns.org, zu sehen. Auf dem OScam Server wiederrum sieht man als eingehende Verbindung nur die eigene IP-Adresse des Servers.
Nun kommen wir zum großen Finale....wir härten unsere Security mit einer Firewall.
Das ganze entnehmt Ihr bitte diesem Beitrag:
Firewall Script unter Ubuntu 15.x mit Systemd
Bitte achtet darauf, dass Ihr eure Ports individuell sowohl hier als auch im Firewall Script anpassen müsst.
Ein Tip:
Von Themen wie Open Web Application Security Project oder mod_evasive rate ich grundlegend in dieser Konstellation ab. Ebenso wie Fail2Jail und ähnlich, da sich das immer als Nachteilig für den SSH Tunnel erwiesen hat.
Wenn man auf einen SSH Tunnel verzichtet, aber die Reverse Proxy einsetzen will, dann ist es auf jedenfall emfpehlenswert.
Hierzu gibt es
ich möchte das Thema Client / Server Security in diesem Beitrag aufgreifen und euch erklären, wie Ihr ohne Probleme euch, eure Clients und eure Infrastruktur schützen könnt.
Unabhängig davon wie Ihr euere Systeme am Laufen habt, ob Zuhause oder VServer, ist diese Lösung universal einzusetzen.
Als Beispiel dient folgende Konfiguration, da sie denke ich mehrheitlich vertreten ist:
1. Ubuntu / Debian based Homeserver mit laufender OScam Instanz
2. Entsprechende Router Freigaben
3. IPC / oder Userpanel von freddchen
Benötigt:
4. Zusätzlicher OpenVZ Server (alternativ KVM, Xen Terminal etc.)
Zu Punkt 4 stellen sich viele jetzt bestimmt eine Frage: Wozu?
Die Antwort: Wir setzen den OpenVZ Server multifunktional ein, als Firewall, als Gateway, als Proxy.
Der OpenVZ Server ist in der regel sehr günstig und hat gute Performance. Als Anbieter kann ich mit besten Wissen und durch meine Erfahrungen myvirtualserver empfehlen.
Prinzipiell würde ein OVZ Server mit 256 MB Ram ausreichen, empfehlen tue ich aber minimum 512 MB RAM.
Zur Umsetzung:
Nachdem Ihr den OpenVZ Server mit Ubuntu (Das HowTo orientiert sich an 15.10!) installiert habt, müssen noch ein paar zusätzliche Pakete sicherheitshalber (da Minimal Installation) installiert werden:
Code:
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get install nano sudo apache2 aptitude build-essential libapache2-mod-proxy-html libxml2-dev
Nachdem alles auf aktuellen Stand gebracht worden ist, bereiten wir die Reverse Proxy vor.
Die Reverse Proxy dient dazu, den eigentlich Webserver und das OScam Interface zu schützen.
Aber um das volle Potential auszuschöpfen benötigt Ihr eine neue, nur euch bekannte Dyn Adresse. In diesem Beispiel: geheimerhomeserver.dyndns.org
Beispiel:
Euer Homeserver hat die Dyn homeserver.dyndns.org
Darüber ist das OScam Webinterface, CCcam, cs378x und IPC von außen aufrufbar. Dies bedeutet es findet ein direkter Verbindungsaufbau zu eurem Homeserver statt. Dies kann gut....aber auch sehr schlecht sein (Hacking, DDOS, ungewünschte Besucher.....). Jetzt besorgt Ihr euch eine weitere Dyn für den OpenVZ Server: proxy.dyndns.org
Rufe ich also nach Einrichtung der Reverse Proxy die Adresse Proxy.dyndns.org:8888 für OScam auf, öffnet sich bei mir auch das OScam Webinterface. Aber ich kenne ja nur proxy.dyndns.org, die Adresse geheimerhomeserver.dyndns.org kenne ich als potentieller Angreifer nicht. Die Sicherheit ansich wird durch entsprechende Konfiguration an der Firewall entsprechend gehärtet.
Aber kommen wir jetzt zur Einrichtung der Reverse Proxy:
1. SSH Session öffnen
2. Wir aktivieren die Proxy folgendermaßen:
Code:
sudo a2enmod proxy proxy_http
Code:
#Port 80 für IPC
<VirtualHost *:80>
#Serverhost
ServerName proxy.dyndns.org
ServerAlias www.proxy.dyndns.org
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
<ifmodule mod_rewrite.c="">
RewriteEngine On
</ifmodule>
ServerName proxy.dyndns.org
ServerAlias proxy.dyndns.org
#Zielserver
ProxyPass / http://geheimerhomeserver.dyndns.org/
ProxyPassReverse / http://geheimerhomeserver.dyndns.org/
</VirtualHost>
#Port 8888 für OScam Webinterface
<VirtualHost *:8888>
#Serverhost
ServerName proxy.dyndns.org
ServerAlias www.proxy.dyndns.org
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
<ifmodule mod_rewrite.c="">
RewriteEngine On
</ifmodule>
ServerName proxy.dyndns.org
ServerAlias proxy.dyndns.org
#Zielserver
ProxyPass / http://geheimerhomeserver.dyndns.org:8888/
ProxyPassReverse / http://geheimerhomeserver.dyndns.org:8888/
</VirtualHost>
Listen 80
Listen 8888
Anschließend muss die Datei gespeichert werden und der Apache2 Server neugestartet werden: systemctl reload apache2
Jetzt könnt Ihr den ersten Zugriff testen:
Gebt im Browser eurer Wahl die Adresse proxy.dyndns.org (für IPC) ein und Ihr solltet nun ohne Probleme auf die IPC Startseite eures Servers gelangen (Vorrausgesetzt die Freigaben im Homerouter sind eingerichtet!!). Als nächstes testet den Zugriff auf das OScam Webinterface proxy.dyndns.org:8888
Wenn alles klappt, läuft die Reverse Proxy ohne Probleme!
Natürlich lässt sich das ganze auch mit SSL Verschlüsselung umsetzen!
Hierzu empfehle ich euch in das Thema Letsencrypt einzulesen.
Die Settings für den SSL Zugriff findet Ihr in dem Spoiler:
default-ssl.conf
Code:
<VirtualHost *:443>
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>
SSLProxyEngine On
ServerName proxy.dyndns.org
ServerAlias proxy.dyndns.org
ProxyPass / https://geheimerhomeserver.dyndns.org/
ProxyPassReverse / https://geheimerhomeserver.dyndns.org/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/proxy.dyndns.org/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/proxy.dyndns.org/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/proxy.dyndns.org/privkey.pem
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
</VirtualHost>
<VirtualHost *:8888>
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
<ifmodule mod_rewrite.c="">
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>
SSLProxyEngine On
ServerName proxy.dyndns.org
ServerAlias proxy.dyndns.org
ProxyPass / https://geheimerhomeserver.dyndns.org:8888/
ProxyPassReverse / https://geheimerhomeserver.dyndns.org:8888/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/proxy.dyndns.org/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/proxy.dyndns.org/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/proxy.dyndns.org/privkey.pem
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
</VirtualHost>
Code:
Listen 80
<IfModule ssl_module>
Listen 443
Listen 8888
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
Listen 8888
</IfModule>
Wie eingangs beschrieben, könnt Ihr euch, eure Familie, Freunde etc. schützen ohne sich mit OpenVPN auseinander zu setzen.
Dies bedeutet es fallen Clientseitig keine großen Änderungen an (eigentlich gar keine)!
Der SSH Tunnel wird gerne als Cheap-Men VPN betitelt und ich sage und versichere euch das dies falsch ist!
Der SSH Tunnel ist so vielseitig wie sicher!
Folgendes passiert durch den SSH Tunnel Tunnel:
Direkte Verbindungen zu eurem Homeserver funktionierten bisher immer über die Adresse homeserver.dyndns.org. Sprich jeder Client, Share Partner etc. sieht eure IP-Adresse an eurem Internet Anschluss.
Da wir aber die bisherige Adresse homeserver.dyndns.org auf den OpenVZ umleiten und niemand die neue Adresse des Homeservers geheimerhomeserver.dyndns.org nicht kennt, kennt auch niemand die IP-Adresse eures Servers.
Schaubild:
Client --> Vserver Tunnel --> Homeserver --> Vserver Tunnel --> Client
Sämtliche Kommunikation im SSH Tunnel ist verschlüsselt, aller Fremdverkehr der nichts mit den entsprechenden Share Protokollen zu tun hat wird einfach ignoriert und läuft ins Nirvana.
Damit das klappt müssen wir den SSH Tunnel vorbereiten und eine Standleitung einrichten. Als Beispiel nutze ich für eine CCcam Verbindung den Port 34011
Code:
apt-get install autossh
#KEIN Passwort setzen, wir nutzen Keyauthentifizierung!
ssh-keygen -b 4096
ssh-copy-id root@geheimerhomeserver.dyndns.org
#Nachdem ihr den Key übertragen habt, testet den SSH Zugriff
ssh geheimerhomeserver.dyndns.org
#Wenn Ihr nun ohne Passwort Eingabe auf eurem Homeserver gelandet seid, habt Ihr alles richtig gemacht ;)#
#Anschließend trennt die Verbindung
Exit
Folgendes in die rc.local hinzufügen: nano /etc/rc.local
Code:
ssh -fN -L IP_eures_OpenVZ_Servers:34011:geheimerhomeserver.dyndns.org:34011 geheimerhomeserver.dyndns.org
autossh -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L IP_eures_OpenVZ_Servers:34011:geheimerhomeserver.dyndns.org:34011 geheimerhomeserver.dyndns.org
Zu beachten ist, dass unbedingt die IP des VServers bei IP_eures_OpenVZ_Servers eingetragen werden muss. Mit DNS Namen wie proxy.dyndns.org funktioniert das nicht!
Das ganze ist natürlich für weitere Protokolle ausbaubar. Für ein weiteres Protokoll einfach die beiden Zeilen kopieren und zusätzlich mit entsprechenden Port hinzufügen.
Beispiel:
Code:
#CCcam
ssh -fN -L IP_eures_OpenVZ_Servers:34011:geheimerhomeserver.dyndns.org:34011 geheimerhomeserver.dyndns.org
autossh -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L IP_eures_OpenVZ_Servers:34011:geheimerhomeserver.dyndns.org:34011 geheimerhomeserver.dyndns.org
#cs378x
ssh -fN -L IP_eures_OpenVZ_Servers:3900:geheimerhomeserver.dyndns.org:3900geheimerhomeserver.dyndns.org
autossh -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L IP_eures_OpenVZ_Servers:3900:geheimerhomeserver.dyndns.org:3900 geheimerhomeserver.dyndns.org
Code:
cd /etc
./rc.local
Anschließent schaut mit netstat -tulpen ob Ihr einen oder zwei SSH seht, in meinem Beispiel schaut das so aus:
Code:
tcp 0 0 10.20.30.40:31120 0.0.0.0:* LISTEN 0 493624 15511/ssh
Wenn eure Clients jetzt wie bislang auch eine Verbindung zu homeserver.dyndns.org aufbauen, bekommen Sie folglich nur noch die IP-Adresse des Gateways, in dem Fall proxy.dyndns.org, zu sehen. Auf dem OScam Server wiederrum sieht man als eingehende Verbindung nur die eigene IP-Adresse des Servers.
Nun kommen wir zum großen Finale....wir härten unsere Security mit einer Firewall.
Das ganze entnehmt Ihr bitte diesem Beitrag:
Firewall Script unter Ubuntu 15.x mit Systemd
Bitte achtet darauf, dass Ihr eure Ports individuell sowohl hier als auch im Firewall Script anpassen müsst.
Ein Tip:
Von Themen wie Open Web Application Security Project oder mod_evasive rate ich grundlegend in dieser Konstellation ab. Ebenso wie Fail2Jail und ähnlich, da sich das immer als Nachteilig für den SSH Tunnel erwiesen hat.
Wenn man auf einen SSH Tunnel verzichtet, aber die Reverse Proxy einsetzen will, dann ist es auf jedenfall emfpehlenswert.
Hierzu gibt es
Sie müssen registriert sein, um Links zu sehen.
auch noch ein bisschen Lesestoff
Zuletzt bearbeitet: