Dez
24
2011

Linux Konsole im Internet-Browser mit der Ajaxterm auf Ubuntu  Print This Post

Autor admin    Kategorie Linux, Server     Tags , , ,

Linux Konsole im Internet-Browser mit der Ajaxterm auf UbuntuAjaxterm 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

SSL Firefox

SSL Firefox

SSL Internetexplorer

SSL Internetexplorer

 

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

Ajaxterm Passwortabfrage

Bild 1

Ajaxterm 1

Bild 2

Ajaxterm 2

Bild 3

 

Viel Spaß mit Der Konsole und ein großes Danke an die Entwickler!

 

Kommentar abgeben

Kategorien

Neueste Beiträge

Folge uns auch via

Facebook Facebook Google+ Google+ RSS RSS
Werdet ein Fan und bekommt die neuesten Beiträge bei Erscheinen im Netzwerk eurer Wahl angezeigt.

Archiv

Google Ads

Featured Video

Kalender

August 2017
M D M D F S S
« Mai    
 123456
78910111213
14151617181920
21222324252627
28293031  

Meta

Newsletter

Unterstützt mich

Wenn ihr mich unterstützen möchtet, könnt ihr mir gerne ein Bier spendieren.

RSS futurezone.at – Newsfeed

Schlagwörter

Letzte Kommentare

  • Andere Blogs

    • Giveaway of the day
      Bietet jeden Tag eine kostenlose lizenzierte Software an, die man sonst kaufen müsste.
    • Lifehacker
      Daily weblog on software and personal productivity recommends downloads, web sites and shortcuts.
    • Netzpolitik
      Blog und eine politische Plattform für Freiheit und Offenheit im digitalen Zeitalter.
    • Slashgear
      Englischer Blog, welcher euch über neue Hardware informiert.
    • Webdomination
      Gute Softwaretipps rund um Windows, Linux und den Mac.
  • IT News

    • Computerwelt
      Österreichs große EDV-Zeitung für IT-Profis und EDV-Entscheider.
    • Futurezone
      Österreichs führende Hightech-Seite. Nachrichten, Interviews und Analysen aus Digital Life, IT-Business und Netzpolitik.
    • Heise IT News
      News und Foren zu Computer, IT, Wissenschaft, Medien und Politik.
    • Slashdot
      Source for technology related news with a heavy slant towards Linux and Open Source issues.
  • Witzige Links

    • Failblog
      Fail and Epic Fail Pictures and Videos in one blog.
    • German Bash
      Die bekannteste deutsche IRC (Chat) Zitate Datenbank. Nur hier gibts die Originale!
    • Salami News
      Satire rund um die tagesaktuellen Themen Politik, Chronik, Sport, …
    • Snotr
      Kleines unscheinbares Videoportal mit kleinen lustigen Clips und Kurzfilmen.
    • The Daily WTF
      Curious Perversions in Information Technology
    • There, I fixed it
      Innovative Ansätze Dinge zu reparieren.
  • Foren usw

    • HTC
      Die High Tech Computer Corporation (HTC) ist ein Hersteller von Mobiltelefonen.
    • Quefi.de
      Diverse Anleitungen der Quer Frei und Ideal Community.
    • Ubuntuforums
      Das wohl aktivste Forum rund um Ubuntu-Linux.
    • XDA-Developers
      The Largest Community for Smartphone Hacks and Development of Apps.
    • Yeti Adventures
      Canyoning mit einem der erfahrensten und geprüften Führer in Süd Tirol.