Linux Konsole im Internet-Browser mit der Ajaxterm auf Ubuntu
Ajaxterm stellt mit Python und Ajax ein vollwertiges Linux Terminal im Browser zur Verfügung. Eine Linux Shell Konsole im Browser hat schon seine Vorteile, kann bei falscher Konfiguration aber auch eine erhebliche Erleichterung für Eindringlinge darstellen. Aus diesem Grund wird in diesem Tutorial auch ausführlich auf die Absicherung dieser eingegangen.
Achtung: Ich übernehme KEINE Verantwortung für eventuell auftretende Probleme. Beachtet unbedingt den Abschnitt der Absicherung und verwendet dieses Script nicht unbedingt auf einem Produktivserver mit sensiblen Daten.
Installation
Ajaxterm befindet sich in den Repositories und lässt sich somit mit diesem Befehl installieren:
sudo apt-get install ajaxterm openssl
Nach der Installation wird der Dienst auch automatisch gestartet. Ajaxterm ist mit der Standardkonfiguration nur lokal auf dem Port 8022 erreichbar und das ist auch gut so. Wir werden später eine Weiterleitung mit erzwungenem SSL und Passwort über den Apache Webserver einrichten.
Zuerst überprüfen wir sicherheitshalber ob die jetzige Konfiguration auch wirklich nur lokale Verbindungen zulässt, indem wir von einem anderen Rechner versuchen diese Konsole zu öffnen.
http://SERVERIP:8022
Start/Stop und Autostart
Ajaxterm kann wie jeder andere Service in Ubuntu gestartet bzw. gestoppt werden:
sudo service ajaxterm start/stop
Der Dienst wird nach der Installation auch bei jedem Neustart automatisch gestartet. Will man dies verhindern, führt man folgendes Kommando aus:
sudo update-rc.d -f ajaxterm remove
Um ihn wieder automatisch zu starten:
sudo update-rc.d -f ajaxterm defaults
Installation Apache2 mit SSL und Proxy-Modul
Solltet ihr Apache mit den benötigten Modulen schon installiert haben, könnt ihr diesen Abschnitt überspringen.
Apache2 installieren:
sudo apt-get install apache2
Die benötigten Module aktivieren:
sudo a2enmod ssl sudo a2enmod proxy_http
Danach erstellen wir ein Verzeichnis für das SSL-Zertifikat:
sudo mkdir /etc/apache2/ssl
SSL-Zertifikat erstellen:
sudo openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
In der “ports.conf” …
sudo nano /etc/apache2/ports.conf
… muss man Apache dazu bringen, auch am Port 443 zu lauschen. Dazu wird der nachfolgende Part einkommentiert oder eingefügt, wenn er dies nicht schon ist.
# Alter the <IfModule mod_ssl.c> section: <IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. NameVirtualHost *:443 Listen 443 </IfModule>
(nano: speichern mit “Strg+o“, schließen nano mit “Strg+x”) Jetzt aktiviert man die “default-ssl” Konfiguration:
sudo a2ensite default-ssl
Die Konfigurationsdatei wird anschließend zur Verwendung unseres soeben erstellten Zertifikates angepasst.
sudo nano /etc/apache2/sites-available/default-ssl
Dort kommentieren wir folgende zwei Zeilen aus (“#” davor setzen)…
# SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem # SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
… und fügen diese stattdessen ein:
SSLCertificateFile /etc/apache2/ssl/apache.pem
Zum Abschluss wird Apache neu gestartet:
sudo service apache2 restart
Um die SSL-Einstellungen zu testen, geben wir die Serverip mit einem vorangestellten “https://” in die Adresszeile des Browsers ein. Erscheint ein Dialog um das Zertifikat zu akzeptieren funktioniert unser SSL.
https://SERVERIP
Umleitung und erzwungene Verschlüsselung
Da wir Ajaxterm nur über SSL betreiben wollen, fügen wir die Http-Proxy Einstellungen auch nur in die SSL-Konfigurationsdatei ein.
Öffnet die “default-ssl” Datei …
sudo nano /etc/apache2/sites-enabled/default-ssl
… und fügt am Ende des Virtualhostblocks die Proxyeinstellungen ein.
<IfModule mod_ssl.c> <VirtualHost _default_:443> . . . # Proxy Ajaxterm ------------------------------------- ProxyRequests Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPass /ajaxterm/ http://localhost:8022/ ProxyPassReverse /ajaxterm/ http://localhost:8022/ # Ende Proxy Ajaxterm -------------------------------- </VirtualHost> </IfModule>
Damit unverschlüsselte Zugriffe nicht in einer “Seite nicht gefunden” Meldung enden, sondern auf die HTTPS Adresse weitergeleitet werden, richten wir mittels Rewrite-Mod in Apache eine Weiterleitung auf diese ein.
Dazu aktivieren wir den Mod:
sudo a2enmod rewrite
Danach fügen wir die Weiterleitung in der Standartkonfigurationsdatei hinzu.
sudo nano /etc/apache2/sites-enabled/000-default
Die Zeilen werden ebenfalls wieder am Ende des Virtualhost-Blocks eingefügt.
<VirtualHost *:80> . . . # Ajaxterm Rewrite ---------------------------- RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^/ajaxterm(.*) https://%{SERVER_NAME}/ajaxterm/$1 [R,L] # Ende Ajaxterm Rewrite ----------------------- </VirtualHost>
Ebenfalls erstellen wir den Ordner “ajaxterm” im Apache Verzeichnis, da der Rewrite-Mod ansonsten immer einen “/” am Ende der Adresse verlangt.
sudo mkdir /var/www/ajaxterm
Nach einem Neustart von Apache …
sudo service apache2 restart
… ist das Terminal über folgende Variationen erreichbar (natürlich alle auf HTTPS umgeleitet):
http://SERVERIP/ajaxterm http://SERVERIP/ajaxterm/ https://SERVERIP/ajaxterm https://SERVERIP/ajaxterm/
Zusätzlicher Passwortschutz
Eine zusätzliche Passwortabfrage beim Aufruf des Links ist sicherlich keine schlechte Idee, da dies zusätzliche Sicherheit bietet und nicht durch sofortige Anzeige des Terminalfensters die Neugier gewisser “User” weckt.
Dazu erstellen wir einen Ordner für die Passwortdateien und ein File mit den gewünschten Anmeldeinformationen (USERNAME ersetzen!).
sudo mkdir /etc/apache2/pass sudo htpasswd -c /etc/apache2/pass/htpasswd.ajaxterm USERNAME
Die Proxyeinstellung in der SSL Konfigurationsdatei …
sudo nano /etc/apache2/sites-enabled/default-ssl
… wird wie folgt angepasst:
<IfModule mod_ssl.c> <VirtualHost _default_:443> . . . # Proxy Ajaxterm ------------------------------------- ProxyRequests Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all AuthType Basic AuthName "Bitte einloggen!" AuthUserFile /etc/apache2/pass/htpasswd.ajaxterm Require valid-user </Proxy> ProxyPass /ajaxterm/ http://localhost:8022/ ProxyPassReverse /ajaxterm/ http://localhost:8022/ # Ende Proxy Ajaxterm -------------------------------- </VirtualHost> </IfModule>
Nach einem Neustart von Apache wird bei Aufruf des Links sofort nach Benutzernamen und Passwort verlangt.
sudo service apache2 restart
Screenshots
Viel Spaß mit Der Konsole und ein großes Danke an die Entwickler!
Kommentar abgeben
Kategorien
- Allgemein (9)
- Anderes (6)
- DIY Anleitungen (8)
- Downloads (22)
- HTC (16)
- Linux (35)
- Server (29)
- Windows (8)
Neueste Beiträge
- Tor Relay auf Ubuntu 14.04 zur Verfügung stellen
- Sogo Upgrade von Version 2 auf Version 3 auf Ubuntu 14.04
- Download: Lustige und sinnlose Feiertage im November 2012 als ICS Datei
- Skype-Symbol auf Windows 7 aus der Taskleiste verschwinden lassen
- Statische IP ab Ubuntu Server 12.04 LTS Precise Pangolin
Folge uns auch via
Archiv
WERBUNG
Featured Video
Kalender
M | D | M | D | F | S | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Meta
Unterstützt mich
futurezone.at – Newsfeed
- Forscher schockiert: Satellit überlebt 10.000-fache Erdbeschleunigung 13. Dezember 2024
- Apple stellt Verkauf von iPhone SE und iPhone 14 in Europa ein 13. Dezember 2024
- NASA weiß nun, warum ihr Mars-Helikopter abgestürzt ist 13. Dezember 2024
- “Explosive” Methode stellt Eisen in Sekunden statt Stunden her 13. Dezember 2024
- Mitmachen und Gaming-Tastatur von Logitech gewinnen 13. Dezember 2024