SSH ignoruje znaki po prawidłowym ciągu hasła?


18

Zdalna maszyna 10.10.10.1 ma hasło „asdFGH12” dla użytkownika o nazwie „użytkownik”. Jestem w stanie się zalogować, nawet jeśli wpisuję hasło „asdFGH12dasdkjlkjasdus” lub dowolne inne znaki po ciągu „asdFGH12”.

$ ssh -v 10.10.10.1
OpenSSH_5.2p1 FreeBSD-20090522, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 10.10.10.1 [10.10.10.1] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type 0
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: identity file /home/user/.ssh/id_dsa type 2
debug1: Remote protocol version 1.99, remote software version OpenSSH_4.1
debug1: match: OpenSSH_4.1 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2p1 FreeBSD-20090522
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '10.10.10.1' is known and matches the RSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_dsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /home/user/.ssh/id_rsa
debug1: Next authentication method: keyboard-interactive
Password:
debug1: Authentication succeeded (keyboard-interactive).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
debug1: Requesting X11 forwarding with authentication spoofing.
Last login: Tue Apr 23 14:30:59 2013 from 10.10.10.2
Have a lot of fun...
user@server:~> 

Czy jest to znane zachowanie (niektórych) wersji serwerów SSH?


Co to za system operacyjny?
— slm

1
Mój demon ssh (OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 marca 2012) nie pozwala mi dodawać dodatkowych znaków po haśle.
— Anthon

1
Problem jest zdecydowanie związany ze schematem mieszania. DES / tradycyjny skrót szyfrujący obcina lub wprowadza wszystkie podane hasła do ośmiu znaków, aby algorytm skrótu działał. Założę się, że używasz tradycyjnego wariantu unix, większość dystrybucji BSD i Linux przynajmniej domyślnie była na md5 przez ostatnią dekadę.
— Bratchley,

Odpowiedzi:


26

To nie jest ograniczenie ze strony twojego serwera SSH, to jest ograniczenie ze strony algorytmu skrótu hasła twojego serwera.

Podczas mieszania haseł w Uniksie crypt()wywoływana jest funkcja. Może to wykorzystywać jeden z wielu backendów, istnieje możliwość użycia DES lub inny algorytm ograniczający (w tym konkretnym przypadku założę, że twój serwer używa DES). DES na ogół nie jest domyślnie używany w nowoczesnych systemach operacyjnych, ponieważ powoduje szczególnie złe ograniczenie: siła hasła i sprawdzanie poprawności jest ograniczone do 8 bajtów.

Oznacza to, że jeśli hasło zostało ustawione jako „foobarbaz”, staje się „foobarba”, zwykle bez ostrzeżenia lub powiadomienia. To samo ograniczenie dotyczy walidacji, co oznacza, że ​​„foobarbaz”, „foobarba” i „foobarbazqux” wszystkie sprawdzają się w tym konkretnym przypadku.


20

Podejrzewam, że Twój system operacyjny korzysta z szyfrowania hasła DES, które obsługuje maksymalnie 8 znaków.

/server/361591/ssh-accepts-only-the-half-password

Od man crypt(3)

PRZEDŁUŻENIE GNU

Wersja tej funkcji glibc2 ma następujące dodatkowe funkcje. Jeśli sól jest ciągiem znaków rozpoczynającym się od trzech znaków „$ 1 $”, po których następuje najwyżej osiem znaków, i opcjonalnie zakończonych „$”, to zamiast korzystania z maszyny DES funkcja szyfrowania glibc używa algorytmu opartego na MD5, a wyprowadza do 34 bajtów, a mianowicie „$ 1 $ <ciąg> $”, gdzie „<ciąg>” oznacza do 8 znaków po „$ 1 $” w soli, a następnie 22 bajty wybrane z zestawu [a – zA –Z0–9./].
Cały klucz jest tutaj znaczący (zamiast tylko pierwszych 8 bajtów).

Możesz sprawdzić konfigurację pam, aby zobaczyć, czy używasz MD5 czy DES:

% egrep "password.*pam_unix.so" /etc/pam.d/system-auth
password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

Za pomocą tego polecenia możesz również potwierdzić, z jakiej funkcji haszującej korzysta Twój system:

% authconfig --test | grep hashing
 password hashing algorithm is md5

I możesz zobaczyć w tym /etc/shadowpliku systemowym , że używa również MD5:

root:$1$<DELETED PASSWORD HASH>:14245:0:99999:7:::

Kody, które zobaczysz /etc/shadowdla każdego typu skrótu:

  • 1 USD - MD5
  • 2 USD - Blowfish
  • 2 USD - eksblowfish
  • 5 USD - SHA-256
  • 6 USD - SHA-512

Możesz ponownie skonfigurować system za pomocą tego polecenia:

% authconfig --passalgo=sha512 --update

Wszelkie istniejące hasła będą musiały zostać zregenerowane, możesz użyć tego polecenia, aby zmusić użytkowników do zresetowania ich przy następnym logowaniu:

% chage -d 0 userName

Bibliografia


2
Sprawdzanie konfiguracji PAM powie ci tylko, czego system używa teraz , a nie co zostało użyte do zaszyfrowania hasła, którego używa użytkownik. Mogą się różnić, jeśli kiedykolwiek zostaną zmienione.
— Chris Down,

Przepraszam, to było tak gorące pytanie, że nie mogłem wpisać odpowiedzi tak szybko, jak wszyscy myśleli 8-).
— slm

Należy zauważyć, że authconfigogólnie jest to specyficzne dla RHEL (i pochodnych).
— Chris Down,

1
jeśli jest to authconfigspecyficzne, alternatywną opcją jestgrep ENCRYPT_METHOD /etc/login.defs
— Rahul Patil
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.