Jak mogę wyświetlić listę adresów MAC, szyfrów i KexAlogrithms obsługiwanych przez mój serwer ssh?

19

Jak mogę określić obsługiwane MAC, szyfry, długość klucza i KexAlogrithms obsługiwane przez moje serwery ssh?

Muszę utworzyć listę do zewnętrznego audytu bezpieczeństwa. Szukam czegoś podobnego do openssl s_client -connect example.com:443 -showcerts. Z moich badań sshużywa domyślnych szyfrów wymienionych w man sshd_config. Potrzebuję jednak rozwiązania, którego mogę użyć w skrypcie i man sshd_confignie zawiera informacji o długości klucza . Muszę się tutaj poprawić: możesz podać ServerKeyBitsw sshd_config.

Myślę, że to ssh -vv localhost &> ssh_connection_specs.outzwraca potrzebne informacje, ale nie jestem pewien, czy wymienione szyfry są szyframi obsługiwanymi przez klienta czy przez serwer. Nie jestem również pewien, jak uruchomić ten nieinteraktywny skrypt.

Czy istnieje wygodny sposób na uzyskanie SSHinformacji o połączeniu?

Henrik Pingel
źródło
3
okazało się, że sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"jak sugeruje @Jakuje działa tylko na hostach RHEL7, ale nie RHEL6. Skończyło się na tym nmap --script SSH2-hostkey localhostinmap --script ssh-hostkey localhost
Henrik Pingel,
ssh -vvwyświetla obsługiwaną funkcjonalność jako klient do serwera (ctos) i serwer do klienta (stoc). Wydaje się jednak, że wyniki te są ograniczone do tego, co wspierają obie strony, co czyni je mniej przydatnymi do audytu bezpieczeństwa.
Moshe

Odpowiedzi:

18

W swoim pytaniu brakuje kilku punktów:

  • Jaka jest twoja wersja openssh? Może się nieco różnić w zależności od wersji.
  • ServerKeyBits jest opcją dla protokołu w wersji 1, który, mam nadzieję, został wyłączony!

Obsługiwane szyfry, MAC i KexAlgorytmy są zawsze dostępne w instrukcji i nie ma to nic wspólnego z długościami kluczy.

Włączone chipery, MAC i KexAlgorytmy to te, które są oferowane przy użyciu połączenia, jak wskazałeś. Ale można je zdobyć także na inne sposoby, na przykład za pomocąsshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

Aby uzyskać długość klucza twoich kluczy serwerowych, możesz użyć ssh-keygen: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

ale prawdopodobnie będziesz chciał także rozmiarów modułów, które są oferowane i używane podczas wymiany kluczy, ale tak naprawdę zależy to od metody wymiany kluczy, ale powinien być również możliwy do odczytania z danych wyjściowych debugowania ssh -vvv host.

Jakuje
źródło
1
dzięki. Okazało się, że sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"działało tylko moje hosty RHEL7, ale nie RHEL6. Skończyło się na tym nmap --script SSH2-hostkey localhostinmap --script ssh-hostkey localhost
Henrik Pingel,
1
Host RHEL6 z najnowszą aktualizacją openssh również powinien to naprawić.
Jakuje
cholera masz rację co do tego. Sprawdziłem tylko przestarzałą maszynę wirtualną ... dzięki
Henrik Pingel,
sshd -T będzie oferować tylko informacje o szyfrach skonfigurowanych w pliku sshd_config, a nie o tym, co rzeczywiście można do niego dodać, ponieważ jest obsługiwane przez plik binarny
Daniel J.
11

Jak mogę określić obsługiwane MAC, szyfry, długość klucza i KexAlogrithms obsługiwane przez moje serwery ssh?

Wygląda na to, że odpowiedź na /superuser//a/1219759/173408 jest również odpowiedzią na twoje pytanie. Pasuje do jednej linii:

nmap --script ssh2-enum-algos -sV -p 22 1.2.3.4

Oto dane wyjściowe na zwykłym komputerze Debian 9.4 z bieżącą wersją SSH:

Począwszy od Nmap 7.01 (https://nmap.org) o 22.05.2018, 13:40 CEST
Raport ze skanowania Nmapa dla 1.2.3.4
Host jest uruchomiony (opóźnienie 0,00024 s).
WERSJA USŁUG PORT STAN
22 / tcp open ssh OpenSSH 7.4p1 Debian 10 + deb9u3 (protokół 2.0)
| ssh2-enum-algos:
| algorytmy kex: (10)
| krzywa25519-sha256
| [email protected]
| ecdh-sha2-nistp256
| ecdh-sha2-nistp384
| ecdh-sha2-nistp521
| diffie-hellman-group-exchange-sha256
| diffie-hellman-group16-sha512
| diffie-hellman-group18-sha512
| diffie-hellman-group14-sha256
| diffie-hellman-group14-sha1
| server_host_key_alorytms: (5)
| ssh-rsa
| rsa-sha2-512
| rsa-sha2-256
| ecdsa-sha2-nistp256
| ssh-ed25519
| algorytmy szyfrowania: (6)
| [email protected]
| aes128-ctr
| aes192-ctr
| aes256-ctr
| [email protected]
| [email protected]
| mac_algorytmy: (10)
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| hmac-sha2-256
| hmac-sha2-512
| hmac-sha1
| algorytmy kompresji: (2)
| Żaden
| _ [email protected]
Informacje o serwisie: OS: Linux; CPE: cpe: / o: linux: linux_kernel

Wykryto usługę. Wszelkie nieprawidłowe wyniki należy zgłaszać na stronie https://nmap.org/submit/.
Wykonano Nmap: skanowano 1 adres IP (1 host w górę) w 0,52 sekundy
Stéphane Gourichon
źródło
1
Otrzymuję PORT STATE SERVICE VERSION 22/tcp filtered sshpolecenie - chociaż mogę zalogować się do tego samego serwera za pośrednictwem ssh.
hej
Czy dosłownie użyłeś polecenia, czy zastąpiłeś adresem 1.2.3.4IP swojego serwera?
Stéphane Gourichon
Użyłem adresu IP mojego serwera.
hej