SSH bỏ qua các ký tự sau chuỗi mật khẩu chính xác?


18

Máy từ xa 10.10.10.1 có mật khẩu "asdFGH12" cho người dùng có tên "người dùng". Tôi có thể đăng nhập ngay cả khi tôi nhập mật khẩu "asdFGH12dasdkjlkjasdus" hoặc bất kỳ ký tự nào khác sau chuỗi "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:~> 

Đây có phải là hành vi đã biết của (một số) phiên bản máy chủ SSH không?


Hệ điều hành này là gì?
slm

1
Trình nền ssh của tôi (OpenSSH_5.9p1 Debian-5ubfox1.1, OpenSSL 1.0.1 14/03/2012) không cho phép tôi thêm các ký tự phụ sau mật khẩu.
Anthon

1
Vấn đề là chắc chắn với sơ đồ băm. DES / băm mật mã truyền thống cắt ngắn hoặc đệm tất cả mật khẩu được cung cấp cho tám ký tự để thuật toán băm sẽ hoạt động. Tôi muốn bạn đang sử dụng một biến thể unix truyền thống, hầu hết các bản phân phối của BSD và Linux ít nhất là ở mức md5 theo mặc định trong thập kỷ qua hoặc lâu hơn.
Bratchley

Câu trả lời:


26

Đây không phải là một giới hạn đối với một phần của máy chủ SSH của bạn, đây là một giới hạn đối với thuật toán băm mật khẩu của máy chủ của bạn.

Khi băm mật khẩu trên Unix, crypt()chức năng được gọi. Điều này có thể sử dụng một trong nhiều phụ trợ, một khả năng là sử dụng DES hoặc thuật toán giới hạn khác (đối với trường hợp cụ thể này, tôi sẽ cho rằng máy chủ của bạn đang sử dụng DES). DES thường không được sử dụng theo mặc định trong các hệ điều hành hiện đại vì nó dẫn đến một hạn chế đặc biệt xấu: độ mạnh và xác thực mật khẩu bị giới hạn ở 8 byte.

Điều này có nghĩa là nếu mật khẩu của bạn được đặt là "foobarbaz", nó sẽ trở thành "foobarba", thường không có cảnh báo hoặc thông báo. Giới hạn tương tự áp dụng cho xác nhận, có nghĩa là "foobarbaz", "foobarba" và "foobarbazqux" đều xác nhận cho trường hợp cụ thể này.


20

Tôi nghi ngờ hệ điều hành của bạn đang sử dụng mã hóa mật khẩu DES, chỉ hỗ trợ tối đa 8 ký tự.

/server/361591/ssh-ac accept-only-the-half-password

Từ man crypt(3)

KIỂM TRA GNU

Phiên bản glibc2 của chức năng này có các tính năng bổ sung sau. Nếu muối là một chuỗi ký tự bắt đầu bằng ba ký tự "$ 1 $", theo sau là tối đa tám ký tự và được chấm dứt tùy ý bằng "$", thì thay vì sử dụng máy DES, hàm mật mã glibc sử dụng thuật toán dựa trên MD5 và xuất ra tối đa 34 byte, cụ thể là "$ 1 $ <chuỗi> $", trong đó "<chuỗi>" là viết tắt của tối đa 8 ký tự theo sau "$ 1 $" trong muối, theo sau là 22 byte được chọn từ bộ [a z z z LọZ0 Lốc9./].
Toàn bộ khóa có ý nghĩa ở đây (thay vì chỉ 8 byte đầu tiên).

Bạn có thể kiểm tra cài đặt pam của mình để xem bạn đang sử dụng MD5 hay 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

Bạn cũng có thể xác nhận chức năng băm nào mà hệ thống của bạn đang sử dụng bằng lệnh này:

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

Và bạn có thể thấy trong /etc/shadowtệp hệ thống này cũng đang sử dụng MD5:

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

Các mã bạn sẽ thấy trong /etc/shadowmỗi loại băm:

  • $ 1 - MD5
  • $ 2 - cá kiếm
  • $ 2a - cá eksblow
  • $ 5 - SHA-256
  • $ 6 - SHA-512

Bạn có thể cấu hình lại hệ thống của mình bằng lệnh này:

% authconfig --passalgo=sha512 --update

Bất kỳ mật khẩu hiện tại sẽ cần phải được tạo lại, bạn có thể sử dụng lệnh này để buộc người dùng đặt lại chúng vào lần đăng nhập tiếp theo:

% chage -d 0 userName

Tài liệu tham khảo


2
Kiểm tra cấu hình PAM sẽ chỉ cho bạn biết hệ thống đang sử dụng ngay bây giờ chứ không phải những gì đã được sử dụng để mã hóa mật khẩu mà người dùng đang sử dụng. Có thể chúng khác biệt nếu nó đã từng thay đổi.
Chris Xuống

Xin lỗi, đây là câu hỏi hấp dẫn, tôi không thể gõ câu trả lời nhanh như mọi người đang nghĩ 8-).
slm

Lưu ý rằng authconfigthường là cụ thể cho RHEL (và các dẫn xuất).
Chris Xuống

1
nếu authconfigcụ thể thì lựa chọn thay thế làgrep ENCRYPT_METHOD /etc/login.defs
Rahul Patil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.