xác minh cấu hình sshd


19

Làm thế nào tôi có thể xác minh cấu hình của sshd?

Ví dụ: tôi muốn đảm bảo rằng các cài đặt này được đặt và áp dụng:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Là cách duy nhất để xác minh thủ công nội dung của tệp sshd_config, hoặc tôi có thể thăm dò sshdđể đảm bảo?


2
Bạn có ý nghĩa gì khi xác minh? Bạn đang hỏi làm thế nào để chắc chắn rằng một thay đổi cấu hình bạn thực hiện là hợp lệ? Bạn đang hỏi nếu có một số công cụ như lint sẽ kiểm tra cấu hình hợp lệ?
Zoredache

2
Tôi không nghĩ rằng câu hỏi không rõ ràng: thực tế không có cách nào để kiểm tra giá trị nào cho một tùy chọn cấu hình. Nếu bạn thấy #UseLogin notrong tệp ssd_config, điều đó có nghĩa là UseLogin là có hoặc UseLogin là không? Bạn phải tham khảo hướng dẫn để tìm giá trị mặc định, có thể đã được thay đổi trong quá trình biên dịch. Cho đến nay từ một câu hỏi vô dụng ...
Xorax

Câu trả lời:


27

Có một chế độ thử nghiệm mở rộng, được gọi với tùy chọn dòng lệnh -T, thực hiện điều này. Ví dụ:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

Tùy chọn này đã tồn tại trong OpenSSH di động từ năm 2008, xem cam kết e7140f2 . Điều này đã được phát hành với 5.1p1, được thực hiện vào tháng 7 năm 2008, xem ghi chú phát hành cho 5.1 , vì vậy nó tồn tại trong hầu hết các cài đặt máy chủ OpenSSH được hỗ trợ ngày hôm nay.


3
Tuy nhiên, lưu ý rằng điều này sẽ hiển thị cài đặt mặc định + cài đặt từ /etc/ssh/sshd_configtệp. Các cài đặt từ tệp có thể chưa thực sự hoạt động, cho đến khi sshdđã tải lại chúng với một cái gì đó giống /etc/init.d/ssh reloadhoặc tương đương trên hệ thống của bạn.
mivk

2
@mivk điểm tốt, nhưng đó là khá nhiều cho khóa học, bởi vì thông thường chúng ta sử dụng các loại lệnh này chính xác sau khi thực hiện thay đổi, nhưng trước khi thực sự áp dụng chúng, vì chúng tôi muốn xác minh điều gì sẽ xảy ra. Ví dụ, apache2ctl -Shành xử theo cùng một cách.
Josip Rodin

4

Mặc dù điều này sẽ không kết xuất tất cả các định nghĩa máy chủ của bạn, bạn có thể thử kết nối với máy chủ bằng cờ gỡ lỗi dài dòng : ssh -v user@server. Điều đó sẽ cung cấp cho bạn rất nhiều thông tin sẽ phản ánh các tùy chọn được kích hoạt trong cấu hình sshd.

Ví dụ: hãy xem đầu ra của kết nối này với công tắc -v (chữ ký chính, tên miền và địa chỉ IP được ngụy trang cố ý):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
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: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

Từ đó bạn có thể thấy các phương thức xác thực được phép là: khóa công khai, mật khẩu, tương tác bàn phím. Bạn cũng có thể thấy rằng chuyển vùng không được máy chủ này cho phép và người dùng claudio có thể kết nối bằng khóa chung của mình.

Bạn có thể tăng mức độ xuất thông tin chỉ định nhiều chữ "v" hơn, nhưng sau đó bạn có thể nhận được nhiều thông tin cấp thấp hơn bạn có thể muốn.


3

Cấu hình của sshd thường được tìm thấy trong tệp sau : /etc/ssh/sshd_config.

Để truy vấn cấu hình thời gian chạy, bạn có thể sử dụng chế độ kiểm tra mở rộng sshd -Tcũng cho phép bạn kiểm tra kết quả khớp của máy khách.


1
Tôi không nghĩ câu trả lời này cho câu hỏi mà anh ấy đang hỏi, nhưng câu hỏi của anh ấy không hoàn toàn rõ ràng.
Zoredache

1
Có vẻ như anh ấy hỏi làm thế nào để xác minh cấu hình. Theo như tôi biết, không có cách nào để truy vấn cấu hình của sshd khi chạy. Vì vậy, cấu hình chỉ có thể được tìm thấy trong tập tin tôi đã đề cập.
gparent

Giống như bạn đã nói, câu hỏi không có ý nghĩa gì nên tôi đoán có lẽ OP không biết tập tin đó ở đâu hoặc tên chính xác của nó.
gparent

Nếu bạn định hạ thấp tôi hoàn toàn không có lý do chính đáng sau 4 năm, hãy sử dụng ý thức chung của bạn và kiểm tra lịch sử câu hỏi, sau đó đề xuất chỉnh sửa.
gparent

@gparent câu hỏi ban đầu hơi mơ hồ và có một lỗi đánh máy trong đường dẫn tệp cấu hình, vì vậy bạn nên sử dụng chức năng chỉnh sửa để sửa chuỗi đó trong câu hỏi; và dù bằng cách nào, câu trả lời cho câu hỏi xác minh hiện được hiển thị ở trên
Josip Rodin

2

Tôi nghĩ không có cách nào để truy vấn cấu hình của một cá thể sshd đang chạy, tôi nghĩ, nếu bạn đang tham khảo máy chủ openssh. tùy thuộc vào những gì bạn muốn làm, bạn có thể sử dụng cờ -t để kiểm tra tệp cấu hình để đảm bảo rằng nó hợp lệ trước khi khởi động lại máy chủ, để bạn không bị đuổi, đặc biệt. nếu bạn không có quyền truy cập ngoài băng vào máy chủ.


2

Vấn đề với việc xem tệp / etc / ssh / sshd_config như được đề xuất bởi các câu trả lời khác là nó không nhất thiết phải chứa toàn bộ cấu hình. Tệp này chứa các giá trị của bất kỳ biến cấu hình nào bạn muốn đặt để vượt quá mặc định và khi được gửi có chứa các nhận xét mặc định được tích hợp vào sshd.

Nếu một tệp cấu hình tùy chỉnh được cài đặt thay cho phiên bản được gửi, bạn sẽ mất các mặc định được biên dịch thành sshd và nếu đó là bản dựng tùy chỉnh, mặc định có thể không khớp với các nhận xét trong sshd_config có thể nhìn thấy.

Ngoài ra, hoàn toàn có thể chạy sshd với tệp cấu hình thay thế với tùy chọn -f, do đó, tệp được lưu trong / etc / ssh / sshd_config có thể không phản ánh các cài đặt hiện tại.

Điều này làm cho câu hỏi khá hợp lệ, và theo như tôi biết, không thể trả lời được với bất kỳ sự chắc chắn nào.


Tất cả điều đó là đúng, nhưng nó không áp dụng cho 99% máy chủ sẽ chạy sshd được cài đặt từ gói có cấu hình mặc định được biên dịch.
Andrew Schulman

Câu trả lời của bạn rất hữu ích, nhưng câu hỏi thực sự có thể được trả lời một cách chắc chắn, đã được khá lâu rồi, xin vui lòng xem câu trả lời của tôi dưới đây.
Josip Rodin
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.