Puncte:0

Dezactivarea anumitor chei OpenSSH pe OpenBSD: de ce sunt ignorate intrările corespunzătoare „sshd_config” și de ce „ssh-keygen -A” generează chei interzise?

drapel cn

Încerc să obțin următoarele pe serverele mele OpenBSD 6.9:

  1. Interzicerea folosirii tuturor cheilor, cu excepția ssh-ed25519 unul pe ambele SERVER și CLIENT laturi.
  2. Limitare ssh-keygen -A să genereze chei numai de către cei autorizați ssh-ed25519 algoritm și nimic altceva.

Pentru a le atinge, am adăugat următoarele rânduri la mine sshd_config:

HostKey /etc/ssh/ssh_host_ed25519_key
CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Am adăugat, de asemenea, următoarele rânduri la mine ssh_config:

CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Am șters toate cheile, cu excepția celei autorizate.

Sshd repornit:

# rcctl restart sshd                                                                            
sshd(ok)
sshd(ok)

După ce am verificat dacă setările mele sunt utilizate, rulând următoarele comenzi:

# ssh -Q HostbasedAcceptedAlgorithms
# ssh -Q HostKeyAlgorithms
# ssh -Q PubkeyAcceptedAlgorithms

Pentru surprinderea mea, cu asta se întorc toți:

ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Cu alte cuvinte, restricțiile cheie sunt ignorate.

Doar pentru a fi sigur, am repornit chiar și serverul, dar nu există nicio diferență.

O posibilă soluție este eliminarea tuturor fișierelor cheie, cu excepția celui autorizat. Cu toate acestea, scriptul de pornire /etc/rc are o linie, ssh-keygen -A, care regenerează toate cheile ssh lipsă după fiecare repornire a sistemului, înainte ca demonul sshd să pornească, inclusiv cele ale algoritmilor interzisi!

Deci, scoaterea cheilor nu rezolvă problema.

Ca o soluție suplimentară, aș putea elimina ssh-keygen -A linie din scriptul de inițializare sau înlocuiți-l cu algoritmul meu personalizat de generare a cheilor, dar asta va duce înapoi la locul în care a început totul: trebuie să faceți cu această problemă din nou și din nou, de ex. după fiecare actualizare de sistem, ori de câte ori echipa OpenBSD lansează o nouă versiune a /etc/rc. Automatizarea eliminării acelei linii și testarea unei astfel de soluții neglijente pe un număr mare de servere este dificilă și poate duce la o defecțiune masivă a rețelei dacă ceva nu merge bine.

Prin urmare, mi-am continuat investigația și am săpat în codul sursă al ssh-keygen. Am aflat că nu este posibil să restricționez comportamentul -A comuta din exterior de ex. prin fișierele de configurare. Nici măcar nu efectuează un test preliminar dacă cheile sunt autorizate sau nu, ci doar generează cheile, conform unei liste de algoritmi dintr-o matrice hardcoded. Singura modalitate de a evita acest lucru este prin editarea, recompilarea și utilizarea unui furk personalizat de ssh-keygen, dar apoi va trebui să mă ocup de asta după fiecare actualizare OpenSSH...

Am găsit o soluție parțială pentru alte sisteme de operare, dar nu și pentru OpenBSD.

Poate cineva să mă îndrume către o soluție potrivită? De ce eu sshd_config și ssh_config restricțiile cheie sunt ignorate și cum se obține ssh-keygen -A nu mai generați chei cu algoritmi interziși?

Înainte ca cineva să întrebe: toate celelalte setări sunt utilizate în ambele fișiere de configurare de către OpenSSH, astfel încât aceste fișiere de configurare sunt într-adevăr cele care sunt încărcate.

Multumesc mult pentru toate raspunsurile utile.

Michael Hampton avatar
drapel cz
Pentru ssh-keygen, ar trebui să vorbiți cu dezvoltatorii OpenSSH prin orice sistem de urmărire a problemelor pe care îl folosesc.
Michael Hampton avatar
drapel cz
În plus, m-aș plânge și întreținătorilor OpenBSD de utilizarea ssh-keygen -A în scripturile de pornire. Pe Linux, toate cheile sunt generate separat și generarea fiecăreia (de exemplu, rsa, ecdsa, ed25519) poate fi activată sau dezactivată în mod independent de celelalte.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.