Latest Posts

Add and use UPN in Samba Active Directory

If you want to use your E-Mail as User-Login, you have to add a upn and change the users to use it. My default upn is „local.lordotter.de“. So this is very long and not good to write. I want it shorter.

The next step is to change it in my account.

This will open you an editor. Go to the line „userPrincipalName“ and change it to your added UPN. Save the file and exit. If you did it the right way, you get the message „Modified User ‚<account>‘ successfully“ back.

Sources:

New Active Directory via Samba4

Today I set up my new Samba Active Directory cause I read so much about it and can see, that I did so many faults.

First I set up 2 VMs dc1.local.lordotter.de and dc2.local.lordotter.de

  • 1 CPU; 2Cores
  • 1GB Ram
  • 20GB Disk
    • 500MB EFI
    • 500MB /boot
    • 2GB Swap
    • 10GB /var
    • 8GB /

Step 1: Prerequisites on dc1 and dc2

Ensure that everything is up to date

Next step is the time. It is essential to have a synced time across your Active Directory. Without there can be serious problems. Do this on dc1 and dc2.

and than configure it in /etc/ntp.conf

Restart ntp and check the status.

Step 2: Update system and install Samba

Ensure that everything is up to date, so we can begin first on dc1

During the installation you will be asked for the Kerberos realm. This is your domainname in uppercase. In my case LOCAL.LORDOTTER.DE
The next question is about the kerbos hostnames. Use the same domainname in lowercase. In my case local.lordotter.de
The last question is about the administrative hosts. It is the same like kerberos hostnames. local.lordotter.de

Step 3: Provision the Domain

Stop and disable default services

Rename the default samba configuration file. Because during provisioning it will get recreated. After that you can start provisioning. Ensure that you set your upstream DNS Server as forwarder.

Add some more configuration to the samba configuration in the „global“ directive

Next task will be kerberos. Rename the default configuration and link the samba kerberos configuration the /etc

The last task in this step is activating, starting and checking the samba service.

Step 4: Set DNS Servers

In /etc/resolv.conf you have to set your local IP as nameserver to resolv every DNS Name used in Active Directory. To test it use this:

Next test is to request a kerberos ticket.

Setting Up Samba Active Directory

Today I want to set up an active directory server for my home network.
Several problems were found during the installation.
Only the forest, domain and function level „Windows 2008 R2“ is available.

For Installation I use a fresh installed Debian Stretch.
IP config static; no dhcp!

Quellen:
  • https://jimshaver.net/2016/05/30/setting-up-an-active-directory-domain-controller-using-samba-4-on-ubuntu-16-04/
  • https://de.slideshare.net/AshwinPawar/krb5

OpenSSH Zertifikate

Mir ist beim durchschauen der manpage von ssh-keygen aufgefallen, dass dort die Rede von „ssh Zertifikaten“ ist. Das hat mich erst ein bisschen stutzig gemacht, denn davon habe ich bisher noch nie gehört. Also erstmal mich darüber ein bisschen schlau machen und google bemühen. Dort war aber entweder die Rede von „SSL-Zertifikaten“ oder von „SSH Private-/Public-Key“, was beides nur teilweise damit zu tun hat.

Eine Seite hat mir dann weitergeholfen das Prinzip dahinter zu verstehen: https://blog.habets.se/2011/07/OpenSSH-certificates

Also erst einmal ein paar Dinge dazu, was OpenSSH-Zertifikate nicht können:

  • Zertifikate haben IMMER die Endung -cert.pub, hast du keine Datei, die so heißt, hast du nicht „ssh-keygen -s“ benutzt.
  • Es ist kein SSL-Zertifikat. OpenSSH kann nicht mit x509-Zertifikaten umgehen.
  • Es gibt nur eine Zertifikatstelle. Keine mehreren Schichten für Abteilungen etc.

Und ein paar Dinge, was OpenSSH-Zertifikate können:

  • Host-Keys signieren. Damit kann eine Firma sagen, dass alle Server, die von dieser CA-Stelle signiert wurden, von uns sind. Ist dies mal nicht der Fall, wurde dieser Server sehr wahrscheinlich übernommen oder noch nicht signiert.
  • User-Keys signieren. Normalerweise müssen alle public-Keys in die Datei ~/.ssh/authorized_keys des jeweiligen Servers, des jeweiligen Users eingetragen werden. Mit der CA muss nur der Public-Key des Users signiert werden und das Zertifikat an den User übermittelt werden. Dadurch spart sich ein Administrator viel Arbeit und Zeit.
  • Zertifikate können ablaufen. Einmal einen SSH-Key in einer authorized_keys Datei eingetragen und ein User hat für immer Zugriff auf den Benutzernamen. Ein Zertifikat kann so ausgestellt werden, dass er automatisch abläuft oder er kann von Hand auf die „Revoke“-Liste gesetzt werden und ist somit ungültig.

Dann kommen wir zum praktischen Teil:

Host-Zertifikate erstellen

  1. Als erstes muss ein Server als Certificate Authority (CA) ausgewählt werden. Auf diesem Server wird der CA-Key für die Host-CA und User-CA erstellt. Es kann auch ein gemeinsamer Key für Host-Zertifikate und User-Zertifikate erstellt werden.
  2. Den vorhanden Host Public Key signieren:

    Kopiere /etc/ssh/ssh_host_rsa_key.pub von anderen Servern in einen temporären Ordner, führe diesen Befehl mit diesem Key aus und kopiere die „-cert.pub“ Datei zurück.
  3. Alle Server so konfigurieren, dass sie das Zertifikat zeigen (/etc/ssh/sshd_config)
  4. Nun muss in jedem Client, der sich auf einen der Server einwählen will, der Public-Key der Host-CA in der „known_hosts“-Datei, ~/.ssh/known_hosts, eingetragen werden
  5. Nun müssen noch alle Einträge, die bisher zu diesen Servern aus der Known_Hosts Datei entfernt werden, damit nicht aus versehen alte oder falsche Host-Keys verwendet werden.
  6. Als Test wird auf ein Server mit dem vollen Namen eingeloggt

    Es sollte keine Meldung zum hinzufügen eines Host-Keys mehr vorkommen.

Ganz wichtig beim erstellen eines Host-Zertifikates ist der „-n“ Schalter. Wird dieser nicht verwendet, kann ein Angreifer, der dieses Zertifikat bekommt auf jedem Server installieren und alle Benutzer, die dieser CA vertrauen, glauben, dass das ein echter Server der Firma ist.

User Zertifikate erstellen

  1. Auf dem Server, welcher die CA bereit stellt, erstellen wir eine User-CA
  2. Auf allen Servern, auf denen diese Zertifikate funktionieren sollen, muss die eben erstellte Datei „user_ca.pub“ in den Ordner „/etc/ssh/“ kopiert werden und dann in der „/etc/ssh/sshd_config“ bekannt gemacht werden

    Danach muss der SSH-Server neugestartet werden.
  3. Für jeden User wird nun der Public-Key signiert

    Als Ergebnis kommt eine -cert.pub Datei heraus, welche der Benutzer bekommen muss.
  4. Nun kann der Benutzer sich als der User <user-on-system> einloggen, ohne dass der Public-Key überhaupt auf dem Server bekannt ist.

User Zertifikate widerrufen

  1. Zunächst muss die Key Revocation List (KRL) erstellt werden
  2. Diese Liste muss dem SSH-Server in seiner Konfiguration bekannt gemacht werden (/etc/ssh/sshd_config)
  3. Nun kann ein Public-Key auf diese Liste gesetzt werden
  4. Um Überprüfen zu können, ob ein Key noch gültig ist, gibt es diesen Befehl

Weitere Hinweise:

Mir ist beim verbinden auf einen Server mit einem Zertifikat aufgefallen, dass es irgendwie nicht geklappt hat. Nachdem ich den Fehler bei google gesucht habe, kam heraus, dass dieser Befehl mir geholfen hat

Quellen:
  • https://blog.habets.se/2011/07/OpenSSH-certificates
  • http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Authentication_Keys#Mark_public_keys_as_revoked

Passwort Generator

Vor einiger Zeit habe ich einen Beitrag zu einem Passwort Generator erstellt. Ein Kollege hat mir eine verbesserte Version davon gesendet.

 

One-Liner: Wiederherstellen von komprimierten MySQL Backups

Normalerweise muss ein komprimiertes Backup einer Datenbank entpackt werden und dann im weiteren Schritt erst importiert werden.

Aber ich habe einen Weg gefunden, wie es nun auch in einer Zeile geht:

Dadurch wird das Backup nicht entpackt und dann erst importiert und verbraucht also keinen zusätzlichen Festplattenspeicher, sondern es wird durch die Pipe direkt an MySQL weitergeleitet.

Dadurch fällt die Wartezeit zwischen den beiden Befehlen weg.

Quelle:
http://blog.remibergsma.com/2012/10/08/one-liner-restore-compressed-mysql-backup/

OpenSSL, Keys und Zertifikate

Hin und wieder möchte ich überprüfen, wie lange ein Zertifikat läuft, wie groß der SSL-Key ist. Daher schreibe ich diese Befehle hier auf.

 

 

 

 

Passwort Generator

Ich brauche immer wieder schnell ein Passwort, um Dienste absichern zu können. Bisher bin ich dafür immer auf http://www.gaijin.at/olspwgen.php gegangen. Neulich gab es auf facebook von dem User „nixCraft“ einen Artikel, um eine bash-Funktion dafür zu erstellen.

Um eine kleine Auswahl direkt zu bekommen, hat ein Freund eine kleine Änderung an der Funktion vorgenommen:

Um diese Funktion nutzen zu können, muss sie in der .bashrc hinterlegt werden.

Abspeichern und dann laden.

Jetzt kann die Funktion aufgerufen werden

Beispiele

Quelle:
http://www.cyberciti.biz/faq/linux-random-password-generator/