Seite 1 von 1

Block SSH by SSH-Key

Verfasst: 27.04.2017 08:04:01
von Gunah
Moin,

ich bin gerade aktuell auf der Suche, wie ich bestimmte pubkeys Systemweit sperren kann?
die Pubkeys liegen mir im normalen Shema vor "ssh-rsa xxxxx etc".

Nur denke ich dass ich in der MAN etwas übersehe ggf. hat einer von euch nen Hinweis für mich :)

Danke

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 09:12:45
von breakthewall
Laut der Manpage scheint so etwas nicht wirklich vorgesehen zu sein. Auch in weiteren Netzquellen war zu solchen Belangen nichts zu finden.

Wäre es nicht sinnvoller SSH-Schlüssel zu löschen die nicht genutzt werden sollen? Oder besser noch, erst gar nicht zu erstellen?

Wenn es nun darum ginge, allen Standard-Nutzern den Zugriff auf bestimmte SSH-Schlüssel zu verweigern, könnte man doch einfach die Rechte daran entziehen, sodass z.B. nur noch Root oder bestimmte Nutzer sie lesen könnten, und sonst niemand. Denke mal das könnte eine praktikable Lösung sein.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 09:55:47
von MSfree
breakthewall hat geschrieben:Wäre es nicht sinnvoller SSH-Schlüssel zu löschen die nicht genutzt werden sollen? Oder besser noch, erst gar nicht zu erstellen?
Das ist nicht nur sinnvoll, sondern die einzige Möglichkeit.

Man muß also alle Dateien mit dem Namen authorized_keys suchen und den entsprechenden Schlüssel rauslöschen.

Man kann auch gerne mal selbst revoke ssh key auf eine Suchmaschine persönlichem Vorzugs loslassen. Dort gibt es dann den Hinweis, daß man ssh-Schlüssel auch mit LDAP verwalten kann, was einem (Administrator) etwas übersichtlichere Möglichkeiten zum Löschen von Schlüsseln geben würde.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 09:59:21
von uname
Welchen Sinn soll es machen bestimmte Keys zu verbieten?

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 10:14:39
von MSfree
uname hat geschrieben:Welchen Sinn soll es machen bestimmte Keys zu verbieten?
- wenn man einem Ex-Mitarbeiter den Zugang sperren will
- wenn der zum öffentlichen Schlüssel gehörende private Schlüssel kompromitiert wurde (Notebook geklaut)

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 11:17:05
von uname
- wenn man einem Ex-Mitarbeiter den Zugang sperren will
- wenn der zum öffentlichen Schlüssel gehörende private Schlüssel kompromitiert wurde (Notebook geklaut)
Natürlich muss man alle Einträge des öffentlichen Schlüssels auf allen Servern löschen. Nicht mehr und nicht weniger.

Es macht wahrscheinlich Sinn auch mal alle Schlüssel zu inventarisieren.
Auch sollte überlegt werden, ob alle Anwender über den Umweg einer echten Personenanmeldung (mit dem Key) gehen müssen. Und ja das ist unpraktisch.

Wenn aber nicht besteht immer die Gefahr, dass ein Anwender irgendeinen wildfremden öffentlichen Schlüssel einem für sich aktuell berechtigtem Account unterschiebt und sich dann über diesen Account selbst nach der Löschung des eigenen Keys mit der entsprechenden Kennung und dem nich inventarisierten Key anmeldet.

Vielleicht muss man auch auch einfach ~/.ssh/authorized_keys entsprechend überwachen bzw. besser den Schreibzugriff auf root beschränken z.B. mit:

/etc/ssh/sshd_config:

Code: Alles auswählen

AuthorizedKeysFile      /var/keys/%u/authorized_keys

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 13:15:15
von eggy
Früher (in sid nicht mehr, in stable noch drin) gabs mal https://packages.debian.org/de/stable/openssh-blacklist , ka, ob das in deinem Szenario hilfreich wäre.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 13:31:18
von MSfree
eggy hat geschrieben:Früher (in sid nicht mehr, in stable noch drin) gabs mal https://packages.debian.org/de/stable/openssh-blacklist , ka, ob das in deinem Szenario hilfreich wäre.
Die Blacklist hatte aber einen anderen Grund. In einer älteren Debianversion war SSH kaputt und hat mit ssh-keygen nur 65536 verschiedene Keys erzeugen können, was die Sicherheit entsprechend extrem reduziert hatte. Diese 65536 Keys wurden in die Blacklist aufgenommen.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 13:43:12
von Gunah
MSfree hat geschrieben:
uname hat geschrieben:Welchen Sinn soll es machen bestimmte Keys zu verbieten?
- wenn man einem Ex-Mitarbeiter den Zugang sperren will
- wenn der zum öffentlichen Schlüssel gehörende private Schlüssel kompromitiert wurde (Notebook geklaut)
Es geht hier um Ex-Mitarbeiter, kommt zum glück nicht häufig vor, aber wenn ist man schon mal länger Dabei.

Die Keys, welcher wem gehört etc. sind alle bekannt. und wenn in einem "Home Dir" ein key hinzugefügt wird, wird dieses mit geloggt und überprüft.

Generell gehen wir alle paar Monate über alle Keys rüber und schauen, ob das noch korrekt ist, oder bei manchen Benutzern, werden die generell entfernt.
Da eh nach dem SSH Login noch ein PW angegeben werden muss, ist das schon relativ Safe.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 13:46:27
von uname
Zum Problem:
und wenn in einem "Home Dir" ein key hinzugefügt wird, wird dieses mit geloggt und überprüft.
Das ist unnötig unsicher. Besser wäre wenn die öffentlichen Schlüssel außerhalb vom HOME-Verzeichnis liegen.

@offtopic Blacklists:

Hier die damalige Sicherheitsmeldung: https://www.debian.org/security/2008/dsa-1571

Erklärt mir jemand warum Debianopenssl-blacklist nicht mehr benötigt wird? Nur weil fast 10 Jahre vergangen sind?
https://bugs.debian.org/cgi-bin/bugrepo ... bug=849027

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 13:51:08
von eggy
MSfree hat geschrieben:Die Blacklist hatte aber einen anderen Grund. In einer älteren Debianversion war SSH kaputt und hat mit ssh-keygen nur 65536 verschiedene Keys erzeugen können, was die Sicherheit entsprechend extrem reduziert hatte. Diese 65536 Keys wurden in die Blacklist aufgenommen.
Ja, das war mir klar, aber man kann (soweit ich mich erinnere) mit ssh-vulkey und ner entsprechend angepassten Blacklist die authorized-keys durchgehen und auf eigene Keys prüfen. Muss man halt entsprechend zusammenbasteln. Der Hinweis war als "wenn Du basteln willst, da gabs mal nen Ansatz" gemeint, dachte das wäre offensichtlich.

Re: Block SSH by SSH-Key

Verfasst: 27.04.2017 20:19:31
von ThorstenS
Wenn ich einer Firma oder einer Person Zugriff auf meine Server geben muß, dann nutze ich dieses kleine Script für Debianansible.
Ich lege in der /etc/ansible/hosts (ini-Style formatiert) eine Gruppe projektXY an und liste darunter die Systeme auf.
Dann kann ich dieses script hier direkt ausführen und werde gefragt, ob der key hinzugefügt oder gelöscht werden soll.
(doppelklick auf present oder absent und mittlere Maustaste zum Einfügen). Danach klappert ansible alle Hosts der Gruppe ab und ich bin fertig.

Code: Alles auswählen

#!/usr/bin/ansible-playbook
---

- hosts: projectXY
  remote_user: root
  become: no

  vars_prompt:
    - name: "keystate"
      prompt: "Soll der ssh-key eingetragen (present) oder entfernt (absent) werden?"

  tasks:
    # state kann absent oder present sein
    - name: Projektzugang auf die Server {{play_hosts}}
      authorized_key:
        user=root
        key="{{ item }}"
        state="{{keystate}}"
        exclusive=no
      with_file:
        - ../static/sysadmin@4ma-20150708.pub
      when: inventory_hostname in groups.projectXY

# vim: set nowrap ft=yaml:
Es gibt noch ein großes anderes Playbook mit `exclusive=yes`, was dafür sorgt, dass ausschließlich mein(e) keys vorhanden sein sollen.

Ich manage die remote Zugänge nun schon eine Weile darüber und das fühlt sich echt gut an. :mrgreen:

Re: Block SSH by SSH-Key

Verfasst: 04.05.2017 13:45:34
von Gunah
dank euch :)

werde denke soweit es so umsetzen, dass die Auth-KeyDatei außerhalb des Bereiches liegt.
macht aktuell am meisten sinn und ist recht einfach zu konfigurieren.

weitere schritte kann man sich dann immer noch anschauen :)

Re: Block SSH by SSH-Key

Verfasst: 04.05.2017 14:26:20
von uname
Mit Remote Forwarding kann man den Zugriff nur dann erlauben, wenn man zuvor selbst einen Verbindung zum Gegenüber aufgebaut hat.