1 / 20

ADUM Active Directory User Manager

ADUM Active Directory User Manager. IT-Security Workshop 2010 Vortragender: Carsten Krüger - cakruege @ inf. Situation an der HU. Heterogene OS-Landschaft Windows von NT bis 7 Mac OS Linux Solaris u sw. Viele unabhängige Passwortdomänen. Accounts.

liluye
Download Presentation

ADUM Active Directory User Manager

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ADUM Active Directory User Manager IT-Security Workshop 2010 Vortragender: Carsten Krüger - cakruege@inf...

  2. Situation an der HU • Heterogene OS-Landschaft • Windows von NT bis 7 • Mac OS • Linux • Solaris • usw. • Viele unabhängige Passwortdomänen

  3. Accounts Wunsch: in allen Domänen soll man uniweit mit demselben Benutzernamen & Passwort arbeiten können Bsp.: früher gab es in der Informatik separate Konten für Windows und Unix, jetzt nur noch ein gemeinsames

  4. Lösungen • Entweder ein großes Active Directory • Wald/Forest • Baum/Tree • Domäne/Domain • Oder Selbstbaulösung ADUM

  5. Funktionalität von ADUM Konto erstellen Konto aktivieren und deaktivieren Konto löschen Passwort ändern Passwort zurücksetzen (Benutzer muss Passwort bei der nächsten Anmeldung ändern - ???) Passwort vergleichen

  6. ADUM Protokoll • Das ADUM-Protokoll folgt grundlegend diesem Aufbau: <Länge>|<Anweisung>|<Parameter>|… • Bespiele: • 70|ACCINSERT|julia|Meyer|Julia|B3rserker|5A3x|abctest.xp2k.hu-berlin.de| • 28|PWDCHANGE|julia|S4r55skwod| • 28|PWDVERIFY|julia|S4r55skwod| • 21|ACCDEACTIVATE|julia|

  7. Topologie ADUM Server ADUM Server ADUM Server ADUM-Crypt SSL Webserver (ADUM Client) ADUM Redirector

  8. Webserver/ADUM Client Webserver (ADUM Client) Webserver mit Perlscript (ADUM Client), welches ADUM-formatierte Nachrichten an ADUM-Redirectorschickt (Klartext) Perlscript verwendet IO::Socket::SSL, um über SSL-Tunnel zu kommunizieren

  9. ADUM Redirector ADUM Redirector Stunnel Endpunkt Öffnet TCP-Sockel und wartet auf ADUM-formatierte Nachricht Sendet Nachricht mit ADUM-Crypt verschlüsselt an ADUM Server weiter

  10. ADUM Server ADUM Server Empfängt ADUM-Crypt-verschlüsselteNachricht und legt im AD Konten an, ändert Passwörter, usw.

  11. Kurzeinführung Kryptografie 1234 Symmetrickey Symmetrische Verschlüsselung

  12. Kurzeinführung Kryptografie Public key Public key Private key Private key Asymmetrische Verschlüsselung

  13. Sourcecode ADUM-Crypt redirector_core.cpp ADUM_redirector::redirect server_core.cpp ADUM_server::transfer_data try { // Server erwartet den öffentlichen DH Schlüssel und die DH G-, P-Werte socket->read( &server_data, &server_data_size ); // Daten dekodieren und den neuen öffentlichen und geheimen DH Schlüssel generieren. Der neue öffentliche Schlüssel befindet sich Hex-Kodiert und protokollkonform in server_response generate_key( server_data, server_data_size, &server_response ); // Öffentlichen DH Schlüssel senden server_data_size = server_response.size(); server_data = new BYTE[server_data_size+1]; CopyMemory(server_data,server_response.c_str(),server_data_size); socket->write( server_data, server_data_size ); delete [] server_data; // Verschlüsselte Daten empfangen socket->read( &server_data, &server_data_size ); // Daten dekodieren und entschlüsseln decrypt_data( server_data, server_data_size, &client_order ); // Unverschlüsselte Daten zerlegen parser( client_order ); // Ausführung gemäß Operationscode weiterleiten switch( account_opcode ) { case CREATE: account_create(); break; case PASSWORDCHANGE: account_passwordchange(); break; case PASSWORDVERIFY: account_passwordverify(); break; case DEACTIVATE: account_deactivate(); break; case ACTIVATE: account_activate(); break; case REMOVE: account_delete(); break; case PASSWORDRESET: account_passwordreset(); break; default: break; } } // Datenaustausch try { // DH Schlüssel generieren und verpacken generate_key( &client_response ); // Senden client_data_size = client_response.size(); client_data = new BYTE[client_data_size+1]; CopyMemory(client_data,client_response.c_str(),client_data_size); client->write( client_data, client_data_size ); delete [] client_data; // Öffentlichen Schlüssel lesen ... client->read( &client_data, &client_data_size ); // ... und importieren import_key( client_data, client_data_size ); // Verschlüsseln und verpacken encrypt_data( account_data, &client_response ); // Senden client_data_size = client_response.size(); client_data = new BYTE[client_data_size+1]; CopyMemory(client_data,client_response.c_str(),client_data_size); client->write( client_data, client_data_size ); delete [] client_data; // Die Antwort des Servers lesen client->read( &client_data, &client_data_size ); client_data[client_data_size] = 0; adum_server_reply= (char*)client_data; }

  14. ADUM-Crypt Asymmetrische VerschlüsselungDiffie-Hellman-Keyexchangemit 512 Bit Key Symmetrische VerschlüsselungCALG_CYLINK_MEKAn algorithm to create a 40-bit DES key that has parity bits and zeroed key bits to make its key length 64 bits.

  15. Probleme Kein Schutz gegen MITM, Schlüsselpaare werden für jedes Passwort neu berechnet und ungesichert übertragen. MITM ist nicht nur bei Applikationsstart möglich, sondern jederzeit Viel zu kleiner symmetrischer Schlüssel. DES mit 64 Bit ist gebrochen, 40 Bit ist sehr schwach 512 Bit für DH ausreichend?

  16. Positives Zu ADUM existiert eine sehr ausführliche Dokumentation Der Quelltext ist gut gegliedert und kommentiert IP-Check

  17. SSL und Perl IO::Socket::SSL - SSL_verify_mode This option sets the verification mode for the peer certificate. The default (0x00) does no authentication. You may combine 0x01 (verify peer), 0x02 (fail verification if no peer certificate exists; ignored for clients), and 0x04 (verify client once) to change the default. See OpenSSL man page forSSL_CTX_set_verifyfor more information. Adumclient.pl my $ssl = IO::Socket::SSL->new(PeerAddr=> $c,Timeout=> $self->{timeout}, Reuse => 0, SSL_use_cert=> 1, SSL_key_file=> $self->{key}, SSL_cert_file=> $self->{key}, SSL_ca_file=> $self->{cafile}, SSL_verify_mode=> 0x00);… SSL_get_verify_resultwirdnichtaufgerufen man SSL_CTX_set_verify(3) SSL_VERIFY_NONE Server mode: the server will not send a client certificate request to the client, so the client will not send a certificate. Client mode: if not using an anonymous cipher (by default disabled), the server will send a certificate which will be checked. The result of the certificate verification process can be checked after the TLS/SSL handshake using theSSL_get_verify_result(3) function. The handshake will be continued regardless of the verification result. SSL_VERIFY_PEER Server mode: the server sends a client certificate request to the client. The certificate returned (if any) is checked. If the verification process fails, the TLS/SSL handshake is immediately terminated with an alert message containing the reason for the verification failure. The behaviour can be controlled by the additional SSL_VERIFY_FAIL_IF_NO_PEER_CERT and SSL_VERIFY_CLIENT_ONCE flags. Client mode: the server certificate is verified. If the verification process fails, the TLS/SSL handshake is immediately terminated with an alert message containing the reason for the verification failure. If no server certificate is sent, because an anonymous cipher is used, SSL_VERIFY_PEER is ignored.

  18. Lösung in der Informatik • Nutzer ändert Passwort auf dem WWW-Severbase3,es entsteht ein Datensatz, der folgende Informationen enthält: • Nutzer-ID • Domainname • Nutzer-ID • Neues Passwort • Altes gekryptetesLDAP-Passwort Dieser Datensatz wird mit gpg verschlüsselt in einem Verzeichnis auf base3 abgelegt • Auf dem Master-Passwort-Server wird in regelmäßigen Zeitabständen (crontab) mit Hilfe des Scripts get-passwdder Datensatz via SSH von base3 geholt und auf base3 gelöscht. • Das Script change-passwd entschlüsselt und prüft den Datensatz und wenn er alsgut befunden wird, werden die Passwörter im LDAP (ldapmodify), NIS (sed) geändert und Nutzername und Passwort an den DC für Windows gesendet (SSH-Verbindung zu DC, Auruf von pw.vbs).

  19. Danke an Herrn Bell, Herrn Müller, Herrn Plötz und Herrn Naumann, Herrn Roland, Herrn Sommerfeld

  20. Links Kryptografie kurz erklärthttp://wiki.cryptocd.org/Mail/WieFunktioniertEs Diffie-HellmanKeyexchangehttp://buchananweb.co.uk/design_tips240.htm ADUM Source Code (Zeilenende in der Projektdatei von Unix auf Windows ändern)http://sourceforge.net/projects/adum/ Stunnelhttp://stunnel.mirt.net/ IO::Socket::SSL http://search.cpan.org/dist/IO-Socket-SSL/SSL.pm OpenSSLVerifyhttp://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html

More Related