Standardmäßig ist bei ntop nur der Konfigurationsbereich passwort-geschützt. Der Zugriff auf die Informationsseiten ist offen.

Da top seinen eigenen Webserver benutzt, ist der password-geschützte Zugriff nur mit Hilfe eines Proxys möglich. Da bei mir schon ein apache2 läuft, wird dieser als Reverse-Proxy benutzt.

Vorarbeiten

Der Webserver von ntop lauscht standardmäßig auf allen IP-Adressen 0.0.0.0 auf Port 3000. Unter Admin -> Configure -> Startup Options muss man entsprechend den HTTP Server auf 127.0.0.1:3000 umstellen.

Jetzt ist ein direkter Zugriff aus dem Internet nicht mehr möglich.

Apache Konfiguration

Aktivierung der notwendigen Apache-Module

# a2enmod proxy
# a2enmod proxy_http
# service apache2 restart

Virtueller Host für ntop

/etc/apache2/sites-available/ntop

<VirtualHost *:80 >
  ServerName ntop.rana.at

  <Proxy *>
    Order deny,allow
    allow from all
    AuthType Basic
    AuthName "no public monitoring"
    AuthUserFile /etc/apache2/htpasswd/ntop
    Require valid-user
  </Proxy>

  RewriteEngine On
  RewriteCond %{HTTP_REFERER} ntop.rana.at/
  RewriteCond %{REQUEST_URI} !^/
  RewriteRule ^/(.*)$ http://ntop.rana.at/$1 [L,R=permanent]

  RewriteCond %{REQUEST_URI} ^/
  RewriteRule ^/(.*)$ http://localhost:3000/$1 [L,P]

  ProxyPass         /   http://localhost:3000
  ProxyPassReverse  /   http://localhost:3000
</VirtualHost>

Passwort für den Zugriff setzen:

# htpasswd /etc/apache2/htpasswd/ntop username
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Erstellung der Zertifikate

Als root im Homeverzeichnis ein Verzeichnis certificates erstellen, Zugriff beschränken und dorthin wechseln:

# mkdir certificats
# chmod 700 certificates
# cd certificates

In diesem Verzeichnis die selbstsignierten Zertifikate erstellen:

# openssl genrsa -out webmail.key 4096
# openssl req -new -key webmail.key -out webmail.csr
# openssl x509 -req -days 3650 -in webmail.csr -signkey webmail.key /
         -out webmail.crt

Die Zertifikate in das Konfigurationsverzeichnis kopieren:

# cp webmail.crt /etc/pki/tls/certs/webmail.crt
# cp webmail.key /etc/pki/tls/certs/private/webmail.key
# cp webmail.csr /etc/pki/tls/certs/private/webmail.csr

Webserverkonfiguration Apache unter Debian

Falls ssl für den Apache Webserver noch nicht aktiviert ist:

# a2enmod ssl

Konfigurationsdatei für die Domain /etc/apache2/sites-available/webmail.example.com

<VirtualHost *:80>
        ServerName webmail.example.com
        Redirect permanent / https://webmail.example.com/
</VirtualHost>
<VirtualHost *:443>
        ServerName webmail.example.com
        DocumentRoot /var/lib/roundcube/
        ServerAdmin webmaster@example.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        ErrorLog /var/log/apache2/webmail.example.com-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/webmail.example.com.log combined
        ServerSignature Off

        SSLEngine On
        SSLCertificateFile /etc/pki/tls/certs/webmail.crt
        SSLCertificateKeyFile /etc/pki/tls/certs/private/webmail.key

</VirtualHost>
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Die Anleitung gilt für ein neuinstalliertes OS X Mountain Lion! Bei einem Upgrade von Lion können schon teilweise Komponenten aktiv sein.

Beim OS X Mountain Lion kann der Webserver nicht mehr über die „Freigaben“ in den „Systemeinstellungen“ aktiviert werden. Es ist quasi ein Sicherheits-Feature, damit so wenig wie möglich Dienste auf einem Mac aktiv sind.
Wie vieles, kann man den Webserver trotzdem aktivieren. Ich mache das am liebsten mit vhosts, da ich mehrere Websites betreibe.

Zuerst für die verschiedenen lokalen Domains einen Eintrag (hier der Hostname dummy.host) in der Datei /etc/hosts erstellen:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost dummy.home
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost

Wichtig: der Hostname localhost muss unbedingt bleiben, da sonst einige Dienste nicht funktionieren werden!

Kurz kann man die Funktion testen, indem man den Hostnamen anpingt:

host chris$ ping dummy.home
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.034 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.035 ms
…

In der Konfigurationsdatei /etc/apache2/httpd.conf folgenden Eintrag aktivieren (das Kommentarzeichen # vor dem Include entfernen):

…
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
…

In der gleichen Datei /etc/apache/httpd.conf kann auch gleich PHP5 aktiviert werden (das Kommentarzeichen # am Beginn der Zeile entfernen):

…
LoadModule php5_module libexec/apache2/libphp5.so
…

Jetzt kann der tatsächliche vhost angelegt werden. Dazu wird die Konfigurationsdatei /etc/apache/extra/httpd-vhosts.conf editiert:

…
<VirtualHost *:80>
ServerAdmin username@dummy.home
DocumentRoot "/Users/username/…"
ServerName dummy.home
ErrorLog "/private/var/log/apache2/dummy.home-error_log"
CustomLog "/private/var/log/apache2/dummy.home-access_log" common

<Directory "/Users/username/…">
Options -Indexes FollowSymLinks
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory>

</VirtualHost>
…

Der entsprechend richtige Pfad ist bei DocumentRoot bzw. Directory einzutragen.

Am Schluss dann den Apache Webserver mit
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
starten.

Im Verzeichnis, das bei DocumentRoot angeben ist, eine Index-Datei index.html mit folgendem Inhalt erstellen:

<html><body><h1>My site works</h1></body></html>

Im Browser den Link http://dummy.home/ aufrufen und im Browser

My site works

sehen (hoffentlich).

Falls etwas nicht funktioniert, dann in den Logfiles

  • /var/log/sysgtem.log
  • /var/log/apache2/dummy.home-error_log
  • /var/log/apache2/error_log

kontrollieren, was nicht funktioniert. Leider ist der Apache am Mac OS X nicht besonders auskunftfreudig.

Facebooktwittergoogle_plusredditpinterestlinkedinmail