Linux Dash - Schlanke Server Überwachung auf Ubuntu installieren

Es muss nicht immer Nagios, Icinga und Co sein. Um alle Daten eines Serversystems zu überwachen reichen einfachere Mittel.
Wenn auf den eigenen Systemen sowieso Apache oder Nginx installiert ist, reicht es oft Linux Dash zu verwenden.
Das Github Projekt zeigt die wichtigsten Linux Systemdaten auf einer eigenen Webseite an.

Dazu zählen unter anderem Benutzer, Prozesse, Laufzeit, RAM-Auslastung, Swap-Nutzung, Festplattenauslastung oder Netzwerkdaten.
Durch die schmale Programmierleistung eignet sich das Tool ebenfalls für  Raspberry Pi oder Banana Pi.

linux-dash

Die Server Übersicht ist recht schnell installiert vorausgesetzt ein LAMP Server ist bereits installiert und mit TLS konfiguriert (siehe Artikel)
Referenzsystem für die folgende Anleitung ist wie immer ein Ubuntu Server 14.04.

Linux Dash - Server Überwachung auf Ubuntu installieren

Benötigte Pakete installieren

sudo apt-get install git apache2-utils

Linux Dash herunterladen

cd /var/www/html
git clone https://github.com/afaqurk/linux-dash.git
sudo service apache2 restart

Im Prinzip könnte hier schon abgebrochen werden, da unter https://localhost/linux-dash die Server Übersicht bereits abrufbar ist.
Um das System abzusichern ist allerdings die Konfiguration von htaccess notwendig, da Linux Dash von Haus aus keine Nutzer Authentifizierung mitbringt.

Htaccess für Linux Dash aktivieren

sudo nano /etc/apache2/sites-available/default-ssl.conf

    <Directory /var/www/html/linux-dash>
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

sudo nano /var/www/html/linux-dash/.htaccess

    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /var/www/html/linux-dash/.htpasswd
    Require valid-user

Htaccess Benutzer anlegen

sudo htpasswd -c /var/www/html/linux-dash/.htpasswd user

    New password:
    Re-type new password:
    Adding password for user user

sudo service apache2 restart

Troubleshooting

htpasswd: command not found

Die apache2-utils wurden nicht installiert.

Fazit

Linux Dash bietet für interne Server das passende Werkzeug, um wichtige Serverdaten regelmäßig abzufragen. Durch die schlanke Oberfläche lassen sich wichtige Kennziffern schnell erkennen und eventuelle Probleme meistern.

Nach Tinder, Cuddlr folgt nun Bristlr - die App für Bartträger und deren Anhänger

Es war ja nur eine Frage der Zeit, bis der gemeine Hipster eine App für sein Statussymbol entwickelt, den Bart. Das Erkennungszeichen wuchert inzwischen durch ganz Europa. Nun hat ein findiger Engländer die passende App dazu entwickelt.

Via Browser, iPhone oder Android App können sich Menschen verabreden, die Bärte tragen, diese toll finden, anfassen möchten oder vielleicht sogar stutzen. Es bleiben quasi keine Wünsche offen, wenn das Gestrüpp erst einmal vermittelt wurde.

BristlrIrgendwie fehlt nun noch eine App für Brusthaar Fans, gibt es meines Wissens auch noch nicht, also Nix wie ran an die Tasten.

Bristlr

WPScan - Wordpress Schwachstellen Scanner auf Ubuntu installieren

Eine der meistverwendeten Blogsysteme im Netz ist sicherlich Wordpress. Wie so oft bei beliebter Software, ist Wordpress auch ein begehrtes Angriffsziel für Hacker und Co.

Um diesen vorzugreifen ist ein regelmäßiger Test auf Sicherheitslücken sinnvoll. Ein perfektes Tool für solche Penetrationstests ist WPScan. Der WordPress Security Scanner ist auf bekannten Sicherheitsdistributionen wie Kali Linux oder BackBox vorhanden, lässt sich aber auch recht einfach auf einem Ubuntu Server 14.04 in Betrieb nehmen.

wpscan

Installation WordPress Security Scanner auf Ubuntu Server 14.04 LTS

Zunächst wird Ruby benötigt. Damit die Installation aktuell ist, wird dazu das Brightbox Repository verwendet. Danach werden weitere Pakete installiert, um dann den WPScanner via git zu laden.

Installation

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2 ruby2.2-dev git libxml2 libxml2-dev libxslt1-dev libcurl4-gnutls-dev

 

WPScan von Github herunterladen

sudo git clone https://github.com/wpscanteam/wpscan.git
cd wpscan/
sudo su
   gem install bundler && bundle install --without test

Successfully installed bundler-1.8.3
Parsing documentation for bundler-1.8.3
Done installing documentation for bundler after 3 seconds
1 gem installed
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine.
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Installing addressable 2.3.7
Installing ffi 1.9.6
Installing ethon 0.7.3
Installing json 1.8.2
Installing mini_portile 0.6.2
Installing nokogiri 1.6.6.2
Installing ruby-progressbar 1.7.1
Installing terminal-table 1.4.5
Installing typhoeus 0.7.1
Using bundler 1.8.3
Bundle complete! 10 Gemfile dependencies, 10 gems now installed.
Gems in the group test were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

Update der WPScan Datenbank

sudo ./wpscan.rb --update
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.6
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.

wpscan_logo

Schwachstellen Scan auf installierte Themes oder Plugins

Die Überprüfung einer vorhandenen Wordpress Installation erfolgt über den Befehl --"url" gefolgt von der Scan Methode "--enumerate vt" überprüft in diesem Fall Templates auf Schwachstellen (momentan über 300).

Das "v" steht für den Verbose Mode und gibt etwas mehr Infos auf der Kommandozeile aus.

Ein Scan auf installierte Plugins würde beispielsweise mit dem Schlüssel "--enumerate -vp" gestartet. Hier befinden sich zurzeit über 2000 in der Datenbank.

Als Beispiel habe ich einen Scan auf Sicherheitslücken installierter Themes gewählt.

sudo ./wpscan.rb --url www.url.de --enumerate vt
 
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.6
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://www.url.de/
[+] Started: Thu xxx x xxx:xx:xx xxxx

[+] robots.txt available under: 'http://www.url.de/robots.txt'
[!] The WordPress 'http://www.url.de/readme.html' file exists exposing a version number
[!] Full Path Disclosure (FPD) in: 'http://www.url.de/wp-includes/rss-functions.php'
[+] Interesting header: SERVER: nginx/x.x.x
[+] Interesting header: X-POWERED-BY: PHP/x.x.x
[+] XML-RPC Interface available under: http://www.url.de/xmlrpc.php
[i] This may allow the GHOST vulnerability to be exploited, please see: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner

[+] WordPress version 4.0.1 identified from rss generator

[+] Enumerating plugins from passive detection ...
 | 3 plugins found:

[+] Name: 2-click-socialmedia-buttons - v1.6.4
 |  Location: http://www.url.de/wp-content/plugins/2-click-socialmedia-buttons/
 |  Readme: http://www.url.de/wp-content/plugins/2-click-socialmedia-buttons/readme.txt

[+] Name: font-awesome - v3.2.1
 |  Location: http://www.url.de/wp-content/plugins/font-awesome/
 |  Readme: http://www.url.de/wp-content/plugins/font-awesome/readme.txt

[+] Name: redactor - v3.1.45
 |  Location: http://www.url.de/wp-content/plugins/redactor/
 |  Readme: http://www.url.de/wp-content/plugins/redactor/readme.txt

[+] Enumerating installed themes (only vulnerable ones) ...

   Time: 00:01:10 <=================================================================================================================================================> (325 / 325) 100.00% Time: 00:01:10

[+] We found 309 themes:
[+] Name: 5star
 |  Location: http://www.url.de/wp-content/themes/5star/
 |  Style URL: http://www.url.de/wp-content/themes/5star/style.css
 |  Description:

[+] We could not determine a version so all vulnerabilities are printed out

[!] Title: 5star - Templatic Theme CSRF File Upload Vulnerability
    Reference: https://wpvulndb.com/vulnerabilities/7484
    Reference: http://1337day.com/exploit/22091

 

Troubleshooting

Fehlende Rechte bei der Installation von bundler, bringen folgende Meldung zu Tage.

Gelöst werden kann dies beispielsweise mit dem Wechsel in die Root Umgebung.

??? ERROR REPORT TEMPLATE ???????????????????????????????????????????????????????
- What did you do?
- What did you expect to happen?
- What happened instead?

Error details

    Errno::EACCES: Permission denied @ dir_s_mkdir - /scan/wpscan/.bundle
    /usr/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir'
    /usr/lib/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
    /usr/lib/ruby/2.2.0/fileutils.rb:226:in `block (2 levels) in mkdir_p'
    /usr/lib/ruby/2.2.0/fileutils.rb:224:in `reverse_each'
    /usr/lib/ruby/2.2.0/fileutils.rb:224:in `block in mkdir_p'
    /usr/lib/ruby/2.2.0/fileutils.rb:210:in `each'
    /usr/lib/ruby/2.2.0/fileutils.rb:210:in `mkdir_p'

Fazit

Wer Wordpress im Einsatz hat, sollte die Installation aktuell halten, Sicherheitsplugins installieren und auf vorhandene Lücken testen. Mit WPScan ist ein brauchbares OpenSource Tool auf Github für einen Penetrationstest vorhanden.

Let's Encrypt - Ein erster Blick auf die kostenlose Zertifizierungsstelle von Mozilla und der EFF

Mozilla, die Electronic Frontier Foundation und weitere wollen in Zukunft mit der Initiative "Lets Encrypt" sichere Server bereitstellen.
Genauer gesagt wollen sich die Partner als CA (Zertifizierungsstelle) in Stellung bringen, um kostenlose SSL/TLS-Zertifikate für Linux Server anzubieten.

Lets_Encrypt
Anders als bei bekannten Anbietern wie Cacert oder StartSSL, sollen bei "Lets Encrypt" zwei Linux Befehle ausreichen, um ein Zertifikat zu generieren es in den Server einzubinden und sofort live zu schalten.
Ob das klappt wird sich zeigen, denn bei den bereits bekannten Anbietern sorgte in der Vergangenheit oft die nicht vorhandene Akzeptanz der Browserhersteller für Probleme, auch die soll sich beim neuen Projekt ändern.


Laut eigenen Aussagen soll das Projekt im Sommer 2015 fertig gestellt werden, einen ersten Einblick konnte sich jeder beim C31c3 verschaffen.
Doch wie steht es momentan um das Projekt und wie soll es im Endeffekt funktionieren.
Eine Installation der bereits vorhandenen Skripte sollte einen ersten Einblick geben.
Referenzsystem ist ein Ubuntu 14.04 mit installiertem Apache.

Voraussetzung

Voraussetzung ist ein installierter Apache Server, mit einer Beispielseite, da Lets-encrypt automatisch eingerichtete Webseiten im Apache erkennt und konfiguriert.
Nginx und anderen Webserver werden in der jetzigen Entwickler Version leider noch nicht unterstützt.

Apache einrichten und Beispielseite konfigurieren

sudo apt-get install apache2
sudo touch /etc/apache2/sites-available/beispiel-le
sudo mkdir /home/beispiel
sudo touch /var/log/apache2/beispiel-access.log
sudo touch /var/log/apache2/beispiel-error.log

Die VirtualHosts Konfiguration sieht nach einer Grundeinrichtung wie folgt aus:

sudo nano /etc/apache2/sites-available/beispiel-le

<VirtualHost server:80>

 ServerName beispiel
 ServerAlias
 DocumentRoot /home/beispiel/
 ServerAdmin prontos@email.de
 CustomLog /var/log/apache2/beispiel-access.log combined
 ErrorLog /var/log/apache2/beispiel-error.log
 LogLevel warn

</VirtualHost>

Webseite aktivieren und Konfiguration neu laden

sudo a2ensite beispiel
sudo service apache2 reload

Testinstallation Lets Encrypt

Zunächst müssen die nötigen Pakete installiert werden.

sudo apt-get install python python-setuptools python-virtualenv python-dev gcc swig dialog libaugeas0 libssl-dev ca-certificates python-m2crypto python-augeas

sudo virtualenv --no-site-packages -p python2 venv

    Running virtualenv with interpreter /usr/bin/python2
    New python executable in venv/bin/python2
    Also creating executable in venv/bin/python
    Installing setuptools, pip...done.

Nun das Git Repository auschecken

sudo git clone  https://github.com/letsencrypt/lets-encrypt-preview.git

Die Python Umgebung verschieben

sudo mv /home/user/venv/ /home/user/lets-encrypt-preview/

Nun kann die eigentliche Installation gestartet werden


cd lets-encrypt-preview
sudo ./venv/bin/python setup.py install

    Installing easy_install-3.4 script to /home/user/lets-encrypt-preview/venv/bin
    Installing easy_install script to /home/user/lets-encrypt-preview/venv/bin

        Using /home/user/lets-encrypt-preview/venv/lib/python2.7/site-packages
        Finished processing dependencies for letsencrypt==0.1

Ist alles ohne Fehler verlaufen, kann LetsEncrypt ausgeführt werden.

sudo ./venv/bin/letsencrypt
        
     Generating key: /etc/apache2/ssl/key-letsencrypt_1.pem               
     x Performing the following challenges:                                 
     x   DVSNI challenge for name beispiel.                                 
     x Created an SSL vhost at                                              
     x /etc/apache2/sites-available/beispiel-le-ssl.conf                    
     x Ready for verification...                                            
     x Waiting for 3 seconds...                                             
     x Expected message (authorization) not received                        
     x Failed Authorization procedure - cleaning up challenges              
     x Cleaning up challenges for beispiel    
        

let-encryptlet-encrypt

Lets Encrypt passt die vorhandene Webseite so an, dass diese auf HTTPS hört und bindet zusätzlich eine TLS/SSL Konfigurationsdatei namens "options-ssl.conf" ein.
Ein Blick in die erzeugte VirtualHosts zeigt die Details.

sudo nano /etc/apache2/sites-available/beispiel-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost 10.8.0.49:443>
 ServerName beispiel
 ServerAlias
 DocumentRoot /home/beispiel/
 ServerAdmin prontos@email.de
 CustomLog /var/log/apache2/beispiel-access.log combined
 ErrorLog /var/log/apache2/beispiel-error.log
 LogLevel warn
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Include /etc/letsencrypt/options-ssl.conf
</VirtualHost>
</IfModule>

Ein weiterer Blick auf die eingebundene Zusatzkonfiguration zeigt typische Sicherheitseinstellungen für Apache Webserver, der ITrig Leser sollte diese bereits aus vergangenen Artikeln kennen.
SSL 2.0 und 3.0 sind deaktiviert, Kompression ist ausgeschaltet, es sind sichere CypherSuites hinterlegt, die Serversignatur ist deaktiviert, usw.

Hier die Konfiguration im Detail:


sudo nano /etc/letsencrypt/options-ssl.conf
    # Baseline setting to Include for SSL sites
    SSLEngine on
    # Intermediate configuration, tweak to your needs
    SSLProtocol             all -SSLv2 -SSLv3
    SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-     ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE$
    SSLHonorCipherOrder     on
    SSLCompression          off
    ServerSignature Off
    AcceptPathInfo Off
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/pdf
    AddDefaultCharset UTF-8
    SSLOptions +StrictRequire
    # Add vhost name to log entries:
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
    LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
    CustomLog /var/log/apache2/access.log vhost_combined
    LogLevel warn
    ErrorLog /var/log/apache2/error.log
    # Always ensure Cookies have "Secure" set (JAH 2012/1)
    #Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"

Troubleshooting

Fehlermeldung, wenn die Umgebung nicht richtig gefunden wurde.

sudo ./venv/bin/python lets-encrypt-preview/setup.py install

        running bdist_egg
        running egg_info
        creating letsencrypt.egg-info
        writing dependency_links to letsencrypt.egg-info/dependency_links.txt
        writing requirements to letsencrypt.egg-info/requires.txt
        writing letsencrypt.egg-info/PKG-INFO
        writing top-level names to letsencrypt.egg-info/top_level.txt
        writing entry points to letsencrypt.egg-info/entry_points.txt
        writing manifest file 'letsencrypt.egg-info/SOURCES.txt'
        error: package directory 'letsencrypt' does not exist

Fazit

Zum jetzigen Zeitpunkt ein Urteil zu fällen ist recht schwer. Die Installation ist noch im Entwicklungsstadium und wird, sobald das Projekt produktiv geht, sicherlich einfach von der Hand gehen. Mit den versprochenen zwei Befehlen "sudo apt-get install lets-encrypt" und "lets-encrypt webseitename" kann zwar bis jetzt noch nicht gearbeitet werden, dennoch lädt das Installationsskript automatisch das SSL Modul in den Apache und fragt nach der gewünschten HTTPS Seite. Die Sicherheitseinstellungen die automatisch eingebunden werden sind so gut wie up2date und könnten zu diesem Zeitpunkt belassen werden. (Bei CipherSuites gehen die Meinungen ja bekanntlich auseinander)

Die automatische Einbindung des Zertifikats hat bei disen Versuch nicht geklappt, was nicht weiter verwundert, da die Autorisierung fehlschlägt.

Schon jetzt kann jedoch behauptet werden, dass dieses Projekt wenn dann an der Browserintegration scheitern könnte und nicht an der Bedienung.

Das automatische Erneuern (renew) oder das Zurücknehmen von Zertifikaten (revoke) ist leider noch nicht funktionsfähig, genauso werden andere Webserver wie Nginx vermisst, aber bis zum Sommer ist auch noch etwas Zeit.

Um sich diese zu verkürzen kann das Installationsskript gerne selbst ausprobiert werden, aber bitte nicht auf Produktivsystemen.

github