UUGRN:Dienste/Robot

Aus UUGRN

Der UUGRN Robot dient der kryptografisch gesicherten Automation des User-, Service und Servermanagements.

öffentliche→  Mailingliste (Mailinglistenarchiv) • WikiPadIRCJobsWebseiteFTP Für Mitglieder→  IntranetalphaShellsJailsWebspaceMySQLUsenetBlogsBNCMailman Infrastruktur→  MailDNSBackupProxyircbotBuildsystem

Öffentliche →   • IRC ChatDrawing PadAscii PadText PadVorstand Infoshare  Für Mitglieder →   • Shell AccountUsenet Zugang  Infrastruktur →   • DNS   <edit>

Idee

Im Jail uugrn.uugrn.org existiert ein Unix-Account namens "robot". Dieser ist extern per E-Mail ansprechbar unter robot@uugrn.org. Weiterhin existiert ein Apache-VirtualHost für https://robot.uugrn.org/

Dieser Robot soll privilegierte Tasks im Auftrag von bekannten Benutzern ausführen.

Tasks

Neben der Autentifizerung von bekannten Benutzern soll der Robot im Auftrag der Benutzer privilegierte Aufgaben wahrnehmen können, zum Beispiel

  • Zurücksetzen von Passwörtern (Login, E-Mail, … )
  • Ändern von SSH-Keys oder authorized_keys auf uug_shell
  • SSL-Clientzertifikate verwalten
  • Mailrouting ändern
  • Mitglieder-Stammdaten ändern
  • Jails managen (Neustart, root-ssh, … )

Kommunikation mit dem Robot

E-Mail mit PGP

Der Robot kommuniziert per E-Mail nur und ausschließlich mit PGP Verschlüsselung. Dabei wird nur und ausschließlich mit E-Mailadressen kommuniziert, für die das lokale GnuPG einen Public-Key enthält, dem auch vertraut wird. Eingehende E-Mails von unbekannten Absendern, unverschlüsselte E-Mails oder verschlüsselte E-Mails mit unbekannten Signaturen werden kommentarlos verworfen, es gibt keine Fehlermeldungen vom Robot, wenn der Absender in irgendeiner Weise nicht erkannt wird.

Jeder Task, der via robot@uugrn.org ausgeführt wird, muss innerhalb einer bekannten Session stattfinden. Die einzige Ausnahme sind einfache Kommandos wie

HELP
Robot antwortet mit einer Anleitung (sofern der Absender per GnuPG bekannt ist)
LOGIN
Robot generiert eine zufällige Session-ID in Form einer SHA512 Checksumme über zufällige, variable und statische Werte (bisschen entropi, timestamp, public-key des users) generiert in einer lokalen Datenbank (zB sqlite3) eine Session mit dieser ID. Bestandteil der Session sind neben der Session-ID auch der authentifizierte Benutzer, außerdem ein Zufälliger Benutzername und ein zufälliges Einmal-Passwort, der im Rahmen dieser Session für das Webinterface genutzt werden kann. Der Robot antwortet dem Benutzer per E-Mail mit der Session-ID, Meta-Daten (zB Expire-Date) und dem zufälligen Einmal-Passwort für das Webinterface oder Webservice.

Alle weiteren Kommandos per E-Mail erfordern zur Authentifizierung das für die Session generierte SHA512-Token.

Das Webinterface kann während die Session aktiv ist mit dem Einmal-Passwort benutzt werden.

Eine Session kann explizit oder automatisch verlängert werden, beispielsweise durch ein Kommando (SET TIMEOUT=...) oder auf einen Timeout von 30min nach der letzten Interaktion (zB PING/PONG)

Alle Aktionen innerhalb einer Robot-Session werden in einem Audit-Trail aufgezeichnet, sodass Aktionen nachvollziehbar gemacht werden.


Web-Interface

Das Web-Interace ist nur per HTTPS ansprechbar und wird mit den Einmal-Accounts aus einer gültigen Robot-Session authentifiziert.

Daten innerhalb einer Session

  • id integer
  • s_token char(64)
  • s_start datetime
  • s_timeout datetime
  • user_id int
  • user_mailaddr varchar
  • user_pgp_key char(40)
  • ws_user char(16)
  • ws_pass char(16)

Anhand einer Zuordnungstabelle aus E-Mailadressen zu Benutzer-IDs kann über den erfolgreichen LOGIN per E-Mail ein intern verwalteter Benutzer zugeordnet werden. Ein Benutzer kann dabei mehrere verschiedene E-Mailadressen verwenden.

Die für eine Session authentifizierte user_id wird dann innerhalb einer Session für die Authorisierung verschiedener Methoden verwendet, etwa zur Anzeige oder Pflege von Benutzer-Stammdaten über das Webinterface.


Robot-Verwaltung

Die Verwaltung des Robots ist Benutzern möglich, die das Recht haben ein "sudo su - robot" im Jail uugrn.uugrn.org durchzuführen. Das sind der jeweils amtierende Vorstand sowie lokale Admins. In der Aufbauphase wird der Robot entwickelt und betreut von Raphael Eiselstein talk.

Siehe auch