Schlagwort-Archive: security

Mythos: LDAP-Traffic auf Port 389 ist unsicher

Es besteht noch immer die weit verbreitete Meinung, dass LDAP-Traffic über Port 389 zu Active Directory Domain Controllern generell sensible Informationen wie Userid und Passwort im Klartext übertragen werden. Dies ist allerdings nur der Fall, wenn der LDAP Simple Bind verwendet wird.

Aber schauen wir uns das Verhalten mal genauer an. Mit der .NET-Implementierung lassen sich netterweise die einzelnen Authentifizierungsarten als Parameter beim Aufruf mitgeben, so dass sich das Testsetup einfach abbilden lässt. https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.authenticationtypes?view=netframework-4.8

Test1 – Simple Bind

DE = new DirectoryEntry(ldappath, user, password, System.DirectoryServices.AuthenticationTypes.None);

Im Netzwerktraffic sieht man tatsächlich: Die Credentials werden im Klartext übertragen

Ldap: Bind Request, MessageID: 1, Version: 3
- LDAPMessage: Bind Request, MessageID: 1
  + ParserHeader:
  + MessageID: 1
  + OperationHeader: Bind Request, 0(0)
  - BindRequest: Version:3, Name:ldaptest@su-pen.local, UserName: P@ssw0rd, Authentication type = simple
   + Version: 3
   + Name: ldaptest@su-pen.local
   - Authentication: UserName: P@ssw0rd, Authentication type = simple
    + AuthenticationTypeHeader: Authentication type = simple
      SimpleAuthentication: P@ssw0rd

Der Simple-Bind funktioniert nicht mehr, wenn auf den Domain Controllern folgende Einstellung gesetzt ist:

Domain controller: LDAP server signing requirements -> Require signature

Test2 – AuthenticationType Secure – Nicht-Domänenmitglied

DE = new DirectoryEntry(ldappath, user, password, System.DirectoryServices.AuthenticationTypes.Secure);

(Die Defaulteinstellung seit .NET 2.0) Mythos: LDAP-Traffic auf Port 389 ist unsicher weiterlesen

Linksammlung: Monitoring von Windows Security Events mit ELK

Keine Sorge, das ist keine weitere Detailbeschreibung, wie man am besten ELK aufsetzt, um Windows Events dort zu sammeln, sondern eine Linksammlung für den ELK-Rookie (wie ich einer bin 😉 )

Aufsetzen der Server-Komponenten:

Als erstes muss Java installiert werden. (Hat man ja typischerweise auf Servern nicht installiert)

Elasticsearch

Download: https://www.elastic.co/de/downloads/elasticsearch

Offizielle Doku: https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html

Prinzipiell muss erstmal keine weitere Konfiguration erfolgen Linksammlung: Monitoring von Windows Security Events mit ELK weiterlesen

Signieren von Dateien

Wenn man sicherstellen will, dass eine Inputdatei nicht manipuliert werden kann, es aber nicht erforderlich ist diese zu verschlüsseln, ist das Signieren möglicherweise das Mittel der Wahl.

Hierbei wird die Datei mit dem Privatekey signiert und die Signatur in einer zusätzlichen Datei gespeichert. Bei der Programmausführung wird die Signatur mit dem öffentlichlichen Schlüssel überprüft, bevor der Inhalt verarbeitet wird. Signieren von Dateien weiterlesen

Verschlüsselung von Strings

nachdem ich es doch immer wieder brauche:

Verschlüsseln:

ByteConverter = new UnicodeEncoding();

RSACryptoServiceProvider crypto = new RSACryptoServiceProvider();

byte[] decryptedData = ByteConverter.GetBytes(Data);

byte[] encryptedData;
crypto.FromXmlString(KeyXML);
encryptedData = crypto.Encrypt(decryptedData, 
false);

string encData = Convert.ToBase64String(encryptedData);
crypto.Clear();

Console.WriteLine(„encrypted: „ + encData);

Entschlüsseln:

ByteConverter = new UnicodeEncoding();

RSACryptoServiceProvider crypto = new RSACryptoServiceProvider();

byte[] encryptedData = Convert.FromBase64String(encString);

byte[] decryptedData;
crypto.FromXmlString(KeyXML);
decryptedData = crypto.Decrypt(encryptedData,
false);

string decString = ByteConverter.GetString(decryptedData);
crypto.Clear();

Console.WriteLine(„decrypted: „ + decString);

In der offiziellen Onlinehilfe wird nicht über den Base64String gegangen, aber das führte bei mir immer zu nicht lesbaren Zeichen und damit „kaputten“ Strings.

Ein Beispiel für die Verschlüsselung von Dateien ist hier

Diskussion über Security by Obscurity

Im neuesten Technet Magazine diskutieren Jesper Johansson und Roger Grimes über das Sicherheitskonzept „Security by Obscurity„. Das Prinzip wird hier anhand des Beispiels des Umbenennen des Administratorkontos erläutert und diskutiert.

Als Fazit kann man daraus ziehen, dass dies nie das alleinige Sicherheitskonzept sein kann, sondern nur ein kleiner Teil eines wesentlich größeren Gesamtkonzepts. Dieses Größenverhältnis spiegelt sich natürlich auch im Implementierungsaufwand wieder. So kann ja beispielsweise der Administrator einfach per Gruppenrichtlinie umbenannt werden – ein sicheres Kennwort für diese Konten für jedes einzelne System zu generieren und dieses doch im Notfall verwenden zu können, ist wesentlich komplexer und aufwendiger. 

Für sicherere Systeme muss auch entsprechend Aufwand betrieben werden.