SUMO Access Manager

© Mykola Velychko, Fotolia

Abgesperrt

PHP-Anwendungen mit nur einer Zeile Code eine vollwertige Benutzerverwaltung überstülpen – diese Forderung an sichere Webanwendungen erfüllt der SUMO Access Manager.
High Availability lässt sich heute mit günstiger Hardware und einer großen Auswahl an kommerzieller sowie freier Software realisieren. ADMIN erklärt die ... (mehr)

In erster Linie stellt SUMO eine fertige Benutzerverwaltung bereit, die man mit wenigen Zeilen in seine eigene PHP-Anwendung integriert. SUMO kümmert sich dann um die Authentifizierung und Autorisierung. Über ein komfortables Webinterface verwalten Administratoren die Benutzer, teilen sie in Gruppen ein und weisen Rechte zu. Die Benutzerdaten liegen dabei wahlweise in einer MySQL-, PostgreSQL- oder Oracle-Datenbank. Alternativ dürfen sich Besucher auch via LDAP, Active Directory, mit einem bestehenden Google-Mail-Account oder einem Konto des Contentmanagement-Systems Joomla einloggen.

Wachhund

Gegen Angriffe von außen wehrt sich SUMO mit mehreren Maßnahmen. So erneuert die Benutzerverwaltung alle 10 Sekunden die Session-IDs der angemeldeten Nutzer. Dies erschwert es Angreifern, die Identität eines Benutzers an sich zu reißen und zu missbrauchen.

Sämtliche über das Login-Formular eingehenden Daten laufen durch einen Filter. Er verhindert Cross-Site-Scripting-Angriffe (XSS) und blockiert Versuche, fremden Code einzuschleusen (Code Injection). Ergänzend zählt ein IP-Filter fehlgeschlagene Anmeldungen. Nehmen diese binnen kurzer Zeit überhand, versucht jemand sehr wahrscheinlich ein Passwort zu erraten. SUMO blockiert dann für eine Weile sämtliche Anfragen von der zugehörigen IP-Adresse. Darüber hinaus darf man für jeden Benutzer festlegen, mit welchen IP-Adressen er sich einloggen darf.

Ein eingebauter Log-Manager notiert alle wichtigen Systemnachrichten und Fehler sowie sämtliche Aktionen der Benutzer. Die wachsenden Protokolle speichert SUMO wahlweise in einer Datenbank, als Datei oder verschickt sie per E-Mail an den Administrator. Ihm liefert SUMO auch Informationen über die aktiven Benutzer, darunter ihre IP-Adressen, ihr Herkunftsland oder den verwendeten Client.

Obwohl der in Italien lebende Schweizer Alberto Basso bereits seit 2003 an SUMO arbeitet, hat es die Benutzerverwaltung erst bis zur Version 0.5.0 geschafft. Die niedrige Nummer täuscht jedoch über den wahren Funktionsumfang und den Entwicklungsstand hinweg. Wer sich vorab einen Eindruck über Stabilität und Leistung verschaffen möchte, startet die Demo auf der Homepage [1]. SUMO selbst steht unter der GPLv2.

Die schicke Weboberfläche, über die der Administrator SUMO konfiguriert, ahmt mit Hilfe der Ajax-Technik eine Desktopumgebung nach. Folglich benötigt er einen Browser mit möglichst flottem Javascript-Interpreter. Optisch orientiert sich die Oberfläche an Mac OS X, lässt sich über Themes aber recht einfach an die eigene Webanwendung beziehungsweise das Corporate Design anpassen. Mangels deutscher Übersetzer stehen derzeit allerdings nur englische Beschriftungen zur Verfügung.

Zutaten

Als PHP-Anwendung verlangt SUMO einen beliebigen Webserver samt Interpreter für PHP 5.0 oder höher. Wer später auch die Anmeldung via Google Mail erlauben möchte, muss noch das Curl-Modul einbauen. Seine eigenen Daten legt SUMO in einer Datenbank ab, in Frage kommen dabei MySQL ab Version 3.23, PostgreSQL ab 8.3 sowie SQLite in Version 2. Mit der letzten muss man allerdings auf einige Funktionen verzichten. Die Integration in die eigene Webanwendung setzt zudem Kenntnisse in der PHP-Programmierung voraus.

Wer SUMO erst einmal auf dem Trockenen ausprobieren möchte, dem empfiehlt sein Entwickler eine aktuelle XAMPP-Installation [2], die alle benötigten Komponenten enthält. Der folgende Aufruf als Benutzer Root entpackt das Rundumsorglos-Paket ins Verzeichnis »/opt«

sudo tar xvfz xampp-<version>.tar.gz -C /opt

und startet dann alle enthaltenen Dienste:

sudo /opt/lampp/lampp start

Die eigentliche Installation von SUMO geht erfreulich flott über die Bühne. Zunächst entpackt man das Archiv auf dem Server in ein Verzeichnis seiner Wahl – im Folgenden soll dies »sumo« sein. XAMPP-Nutzer dekomprimieren das Paket einfach unter »/opt/lampp/htdocs« . Anschließend erhält der Webserver auf den SUMO-Ordner noch Schreibrechte. Wenn diese fehlen, streikt die Benutzerverwaltung später mit der Meldung aus Abbildung 1.

Abbildung 1: Sollte diese Meldung beim Aufruf von SUMO erscheinen, fehlen dem Webserver Schreibrechte auf das SUMO-Verzeichnis.

Im zweiten Schritt muss der Anwender SUMO die von ihm zu nutzende Datenbank angeben. Dazu öffnet er zunächst die Datei »config.database.php« im Unterverzeichnis »config« und passt die mit »$sumo_db« beginnenden Zeilen im oberen Teil an (ab Zeile 27).

Im Beispiel aus Listing 1 lauscht MySQL (»mysql« ) auf dem gleichen Server (»localhost« ) an Port »3306« . SUMO soll die Datenbank namens »theaterdb« verwenden, auf die es mit dem Benutzernamen »tim« und dem Passwort »geheim« Zugriff erhält. Im Fall einer XAMPP-Installation lautet der Benutzername »root« und das Passwort bleibt leer. Vorlagen für PostgreSQL und SQLite-Datenbanken finden sich im auskommentierten unteren Teil der »config.database.php« .

Listing 1

Datenbank-Konfiguration

 

In der Regel findet SUMO in der Datenbank der Webanwendung Unterschlupf, im Beispiel aus Listing 1 »theaterdb« . Alle von SUMO verwendeten Tabellen beginnen mit dem Präfix »sumo_« , wodurch es keine Überschneidungen geben sollte. Verzichtet die eigene Webanwendung auf eine Datenbank, ist wohl oder übel eine neue anzulegen. Unter XAMPP steuert der Benutzer dazu http://localhost/phpmyadmin an, tippt anschließend unter »Neue Datenbank anlegen« den gewünschten Namen ein und klickt auf »Anlegen« .

Als Nächstes gilt es, die von SUMO verwendeten Datenbanktabellen zu erzeugen. Dies übernimmt ein mitgeliefertes Skript aus dem Unterverzeichnis »install« . Dort liegt für jede unterstützte Datenbank eine Datei, MySQL-Betreiber greifen beispielsweise zu »database_mysql.sql« . Wie man dieses SQL-Skript ausführt, hängt von der Datenbank ab. Einige Webhoster bieten auch eine entsprechende Oberfläche in ihrem Kundenbereich an. Der XAMPP-Anwender bemüht wieder PHP My Admin unter http://localhost/phpmyadmin. Dort stellt er zunächst sicher, dass in der linken Leiste die richtige Datenbank ausgewählt ist, wechselt dann auf das Register »SQL« , fügt den Inhalt aus der Datei »database_mysql.sql« in das große Eingabefeld und schickt die Befehlsarmada mit »OK« ab. Das Ergebnis sind 18 neue Tabellen, die alle mit »sumo_« beginnen (Abbildung 2).

Abbildung 2: Hier werden mit PHP My Admin in der Datenbank theaterdb die 18 Tabellen für SUMO angelegt.
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019