UUGRN:Dienste/Robot
Der UUGRN Robot dient der kryptografisch gesicherten Automation des User-, Service und Servermanagements.
öffentliche→ Mailingliste (Mailinglistenarchiv) • Wiki • Pad • IRC • Jobs • Webseite • FTP Für Mitglieder→ Intranetalpha • Shells • Jails • Webspace • MySQL • Usenet • Blogs • BNC • Mailman Infrastruktur→ Mail • DNS • Backup • Proxy • ircbot • Buildsystem
Öffentliche → • IRC Chat • Drawing Pad • Ascii Pad • Text Pad • Vorstand Infoshare Für Mitglieder → • Shell Account • Usenet Zugang Infrastruktur → • DNS <edit>
Idee[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
E-Mail mit PGP[Bearbeiten]
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[Bearbeiten]
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[Bearbeiten]
- 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[Bearbeiten]
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.