Skip to content

Admin Panels Part1: Ajenti - Mit Python zur einfachen Serververwaltung

Für eine einfache und übersichtliche Linux Server Verwaltung greifen viele zu Admin Oberflächen. 
Diese erleichtern Administratoren den Überblick und ermöglichen anderen Nutzer beispielsweise Leistungsdaten abzufragen, Dienste zu starten oder Skripte auszuführen.
Auf dem Markt existieren viele solcher Tools, einige davon möchte ich hier in einer fortlaufenden Serie vorstellen. Den Anfang macht

Ajenti

ajenti

Das Tool ist in Python geschrieben und in einer freien und professionellen Version verfügbar. Wobei die freie Version von jedem gentutzt werden kann, lediglich für das Einbetten in Hardware wird eine Lizenz fällig.

Das Admin Panel bietet dank API und Plugins viele Erweiterungsmöglichkeiten. Neuester Streich ist Ajenti V, welches sich als Webhosting Modul präsentiert, momentan aber noch in einer Beta Phase steckt.

ajenti-funktionen

Ajenti selbst stellt in einer übersichtlichen Menüleiste Systemdaten, Software. Werkzeuge und Tools zur Verfügung, welche sich individuell für Nutzer zusammenstellen lassen. Diese werden dann auf dem Dashboard eingeblendet (siehe Screenshot).

Die Bedienung ist selbsterklärend. Verpflichtend sollte aber im ersten Schritt das Standardpasswort angepasst werden. Wer keine anonymen Daten senden möchte, sollte auch diesen Punkt in der Benutzerverwaltung deaktivieren.

Ajenti in Ubuntu installieren

Das Admin Werkzeug ist für die bekannten Linux Distributionen (Debian, CentOS, FreeBDS) erhältlich und lässt sich relativ leicht installieren.

wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -

echo "deb http://repo.ajenti.org/ng/debian main main ubuntu" | sudo tee -a /etc/apt/sources.list

sudo apt-get update && sudo apt-get install ajenti

Ajenti kommt von Haus aus mit HTTPS auf Port 8000, darum muss während der Installation ein Zertifikat generiert werden.

:: Generating key

Generating RSA private key, 2048 bit long modulus
..............................................................................................+++
...........................................+++
e is 65537 (0x10001)

:: Generating certificate request


:: Removing passphrase

writing RSA key

:: Generating certificate

Signature ok
subject=/C=US/ST=NA/L=Nowhere/O=Acme Inc/OU=IT/CN=ajenti.example.de
Getting Private key
:: SSL configured!
------------------------------------------------
Now start Ajenti with 'service ajenti restart'
Ajenti will listen on HTTPS port 8000 by default

Default username : root
Default password : admin

Nun noch ein Neustart und fertig ist die frisch gebackene Admin Oberfläche, welche unter https://ajenti.example.de:8000 erreichbar ist.


sudo service ajenti restart

Stopping Ajenti:
  stopped
Starting Ajenti:
17.06.2015 14:54 INFO  Using config file /etc/ajenti/config.json
 
started

Wie der Ausgabe oben zu entnehmen ist können in der Datei config.json weitere Konfigurationen vorgenommen werden.


Ajenti lässt sich ebenfalls hinter einem Apache oder Nginx betreiben.

Apache und Ajenti

Folgende Module samt Konfiguration werden auf einem Apache benötigt.

sudo a2enmod proxy proxy_connect proxy_http headers

Durch den absoluten Ajenti Pfad, stellt die Apache Konfiguration keine große Herausforderung dar.

RequestHeader set Origin http://localhost:8000
ProxyPass /ajenti http://localhost:8000/
ProxyPassMatch ^/(ajenti:.*)$ http://localhost:8000/$1
ProxyPassReverse /ajenti /

Nginx und Ajenti

Gleiches gilt für für die Server Konkurrenz Nginx, auch hier ist ein Betrieb einfach umzusetzen

server {
    client_max_body_size 20m;

    location ~ /ajenti.* {
        rewrite (/ajenti)$ / break;
        rewrite /ajenti/(.*) /$1 break;
        proxy_pass http://127.0.0.1:8000;
        proxy_redirect / /ajenti/;
        proxy_set_header Host $host;
        proxy_set_header Origin http://$host; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
}

Weitere Installations und Arbeitstipps lassen sich in der Dokumentation finden.

Fazit

Ajenti wirkt aufgeräumt und bringt dank seines Python Backend keinen unnötigen Balast mit auf den Server. Es ist zwar nicht ganz so schlank, wie das im Frühjahr vorgestellte Linux Dash, beherrscht dafür aber den direkten Eingriff aufs System und bietet somit um ein vielfaches mehr Möglichkeiten.Wer nur auf Performance Daten aus ist, der sollte auf das bereits erwähnte Linux Dash zurückgreifen.

 

ajenti


Das könnte dich auch interessieren

Linux Dash - Schlanke Server Überwachung auf Ubuntu installieren

SSLyze - SSL Server Einstellungen per Kommandozeile überprüfen

Die richtigen SSL/TLS Einstellungen für Server zu finden ist nicht immer leicht. Eine etablierte Prüfvariante wird von SSL Labs gestellt. Auf deren Webseite können Server auf Herz und Nieren geprüft werden und bekommen im Optimalfall ein A+ Rating, wenn Techniken wie beispielsweise HTTP Strict Transport Security aktiv sind.

Seit kurzen stellt Qualys mit ssllabs-scan ein Tool auf Github zur Verfügung, welches einen Server Test via Kommandozeile erlaubt. Das Tool basiert auf der vorhandenen Technik und greift somit auch immer auf die Qualys Server zurück.

Als Alternative bietet sich das ebenfalls etablierte Phyton Script SSLyze an. Anders als ssllabs-scan unterstützt der SSL Scanner bereits SMTP, XMPP, LDAP, POP, IMAP, RDP und FTP und steht auch für Windows Nutzer zur Verfügung (Download).

SSLyze unter Ubuntu Server 14.04 verwenden

Installation

wget https://github.com/nabla-c0d3/sslyze/releases/download/release-0.10/sslyze-0_10-linux64.zip
unzip sslyze-*
cd sslyze/

Alle Funktionen anzeigen

./sslyze.py --help

Usage: sslyze.py [options] target1.com target2.com:443 etc...

Normaler Scan

Prüfung auf die Protokolle SSLv2.0, SSLv3.0, TLS1.0/1.1/1.2 Heartbleed, CipherSuites und andere Einstellungen.

Die reguläre Methode fast quasi eine Befehlskette zusammen "--sslv2 --sslv3 --tlsv1 --reneg --resum --certinfo=basic --hide_rejected_ciphers --http_get"

./sslyze.py --regular url.de:443

REGISTERING AVAILABLE PLUGINS
 -----------------------------
  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

   url.de:443                        => 127.0.0.1:443

 SCAN RESULTS FOR url.DE:443 - 127.0.0.1:443
 ---------------------------------------------------

  Deflate Compression:
      OK - Compression disabled

  Session Renegotiation:
      Client-initiated Renegotiations:   OK - Rejected
      Secure Renegotiation:              OK - Supported

  OpenSSL Heartbleed:
      OK - Not vulnerable to Heartbleed

  Session Resumption:
      With Session IDs:                  OK - Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
      With TLS Session Tickets:          OK - Supported

  Certificate - Content:
      SHA1 Fingerprint:                  xxxxxxxxxxxxxxxx
      Common Name:                       url.com
      Issuer:                            url Internet xxxxxxxxx G2
      Serial Number:                     xxxxxxxxxxxxx
      Not Before:                        
      Not After:                         
      Signature Algorithm:               sha1WithRSAEncryption
      Key Size:                          2048 bit
      Exponent:                          xxxxxx (0x10001)
      X509v3 Subject Alternative Name:
 * Certificate - Trust:
      Hostname Validation:               FAILED - Certificate does NOT match url.de
      "Mozilla NSS - 08/2014" CA Store:  OK - Certificate is trusted
      "Microsoft - 08/2014" CA Store:    OK - Certificate is trusted
      "Apple - OS X 10.9.4" CA Store:    OK - Certificate is trusted
      "Java 6 - Update 65" CA Store:     OK - Certificate is trusted
      Certificate Chain Received:        ['url.com', ']

  Certificate - OCSP Stapling:
      NOT SUPPORTED - Server did not send back an OCSP response.

  SSLV2 Cipher Suites:
      Server rejected all cipher suites.

...........

Mit dem Zusatz "--hide_rejected_ciphers" lassen sich abgelehnte CipherSuites ausblenden, was die Übersicht erhöht.

Scan auf SHA-1

Eine ebenso praktische Scanvariante ist der Test auf SHA-1. Die Hasfunktion SHA-1 wird beispielsweise von Google Chrome inzwischen als unsicher gemeldet.

--chrome_sha1 url.de:443

 REGISTERING AVAILABLE PLUGINS
 -----------------------------

  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

  url.de:443                        => xxxxxxxxx:443

 SCAN RESULTS FOR url.DE:443 - xxxxxxxx:443
 ------------------------------------------------

  Google Chrome SHA-1 Deprecation Status:
      OK - Certificate chain does not contain any SHA-1 certificate.

Prüfung auf  HTTP Strict Transport Security HSTS Unterstützung

Auch das bereits oben erwähnte HSTS lässt sich überprüfen.

./sslyze.py --hsts url.de:443

Test auf StartTLS für SMTP oder XMPP Server

Gleiches gilt für XMPP oder SMTP Server.

./sslyze.py --starttls=smtp url

./sslyze.py --starttls=xmpp url

Zu den genannten Befehlen gibt es noch zig weitere Möglichkeiten SSL Server auf Konfiguration zu testen. Hier sei für alle Funktionen auf die Hilfe verwiesen, welche alle Befehle auflistet und erklärt. (Die Scanausgaben wurden zugunsten der Übersicht gekürzt).

Fazit

Anders als SSL Lab zeigt SSLyze kein Ranking und macht keine Überprüfung auf Browserunterstützung, dafür werden mehr Protokolle unterstützt. Je nach Einsatzgebiet werden wohl beide Tools benötigt. Auf einem Server ohne Browser und Co bietet sich SSLyze natürlich an.

Das Tool ist auf gängigen Linux Distributionen wie Kali Linux, die für Pentesting und andere Sicherheitschecks verwendet werden, mit an Bord.

Eine Übersicht, auf welche Wege SSL/TLS Cipher Suites gestetet werden können, bietet Oswap.

Codecademy - Online Python Programmierung lernen

Im Januar hatte ich euch bereits Codecademy vorgestellt. Die Onlineschule bietet Programmierkurse für jedermann im Browser an. Bisher wurden die Sprachen Javascript, JQuery, HTML und CSS unterstützt. Nun ist Python als neue Sprache mit an Bord. Der Einführungskurs bietet bereits vier ausführliche Kapitel zu Syntax, Ein und Ausgabe, Bedingungen und Funktionen.

codecademy-python

Der schlechte Sommer sollte somit gerettet sein, also ran an die Konsole.

Codecademy - Schnell und einfach erste Schritte mit JavaScript

Man sollte jedes Jahr eine neue Programmiersprache lernen, so behauptet es jedenfalls Chad Fowler in seinem Buch "The Passionate Programmer".
Das neue Jahr ist zwar schon ein paar Tage alt, dennoch ist es noch nicht zu spät eine neue Sprache zu erlernen. Wie wäre es denn 2012 mit JavaScript. Jahrelang hat diese Sprache ein Nischendasein geführt, heute ist sie aus der Netzwelt nicht mehr wegzudenken und nahezu auf jeder interaktiven Webseite zu finden.

Das Startup Codecademy bietet hierfür einen schnellen Einstiegslehrgang und die richtige Umgebung. Die Interaktive Webseite stellt einen Editor für Codeingaben zur Verfügung, welcher das meist aufwendige Einrichten einer Entwicklungsumgebung erspart.

codecadamy

Codecademy verlangt nicht zwingend eine Anmeldung, somit kann jeder sofort mit den ersten Unterrichtstunden beginnen.

Um JavaScript zu erlernen werden einfache Übungen abgefragt, diese sind in Lektionen unterteilt und fragen verschiedene Bereiche ab. Durch die Eingabe in der Sandbox wird sofort sichtbar, ob Code korrekt war. Der Laie erspart sich aufwendiges Fehlersuchen bzw. kann zusätzlich Tipps einblenden. Wer sich registriert erhält pro gelöster Aufgabe Punkte und kann sich so mit Freunden messen.

Für 2012 hat Codecademy zusätzlich das CodeYear ausgerufen.

codeyear

Auf Code Year könnt ihr euch zum E-Mail Newsletter anmelden. Ihr bekommt dann jede Woche eine Erinnerungsmail, das der nächste Kurs ansteht. Eine sehr praktische Sache.

Schlussendlich wird der Dienst sicherlich kein Buch und jahrelanges Üben und Lernen ersetzten können. Als schneller und einfacher Einstieg ist die Webseite bzw. das CodeYear bestimmt das Richtige für den Anfänger, der ein Buch allzu schnell in die Ecke wirft. Neben JavaScript sollen bald Python und Ruby angeboten werden, ein regelmäßiger Blick auf die Seite kann also nicht schaden.