Điểm của tùy chọn sử dụng sshd là gì?


79

Tôi biết những gì nó làm, nhưng tôi không biết tại sao . Những cuộc tấn công nào nó ngăn chặn?

Có phù hợp với tất cả các loại phương thức xác thực? (lưu trữ trên máy chủ, mật khẩu, khóa công khai, tương tác bàn phím ...)


2
Tôi cũng đã thêm một cái vào CoreOS tại đây: github.com/coreos/bugs/issues/92

Câu trả lời:


66

Các UseDNStùy chọn là chủ yếu là vô dụng. Nếu các máy khách hiện có trên Internet, có khả năng cao là chúng không có DNS ngược, DNS ngược của chúng không giải quyết được hoặc DNS của chúng không cung cấp bất kỳ thông tin nào khác ngoài điều này thuộc về điều này ISP mà địa chỉ IP đã cho bạn biết.

Trong các cấu hình thông thường, DNS chỉ được sử dụng để ghi nhật ký. Nó có thể được sử dụng để xác thực, nhưng chỉ khi IgnoreRhosts nođược chỉ định trong sshd_config. Đây là để tương thích với bản cài đặt cũ mà sử dụng rsh, nơi bạn có thể nói “người dùng gọi bobvào máy gọi là darkstarcó thể đăng nhập như là alicekhông hiển thị bất kỳ thông tin” (bằng cách viết darkstar bobtrong ~alice/.rhosts). Nó chỉ an toàn nếu bạn tin tưởng tất cả các máy có thể kết nối với máy chủ ssh. Nói cách khác, điều này rất hiếm khi có thể sử dụng một cách an toàn.

Vì việc tra cứu DNS không cung cấp bất kỳ thông tin hữu ích nào ngoại trừ trong những trường hợp rất đặc biệt, nó sẽ bị tắt. Theo như tôi có thể nói, lý do duy nhất theo mặc định là vì nó an toàn hơn về mặt kỹ thuật (nếu bạn quan tâm đến xác thực, không có sẵn), mặc dù điều đó chỉ áp dụng cho một tình huống nhỏ.

Một lập luận khác cho việc tắt tính năng này là mọi tính năng không cần thiết đều là một rủi ro bảo mật không cần thiết .


Vì vậy, UseDNS chỉ liên quan đến xác thực lưu trữ? Nếu tôi không sử dụng auth theo máy chủ lưu trữ và tôi không quan tâm nếu tên máy chủ hoặc IP hiển thị trong nhật ký, UseDNS có khác biệt gì không?
dùng368507

5
@ user368507 Vâng, đúng vậy. UseDNSthậm chí không hữu ích nếu bạn sử dụng xác thực máy chủ dựa trên khóa , chỉ khi bạn sử dụng xác thực máy chủ dựa trên tên máy chủ (tức là xác thực cực kỳ yếu).
Gilles

3
@Gilles tất nhiên, nếu bạn sử dụng xác thực dựa trên khóa tên máy chủ, UseDNSthì rất hữu ích và quan trọng. Bạn xác thực người dùng dựa trên khóa và máy chủ dựa trên tên máy chủ, được gán cho địa chỉ MAC.
kara deniz

38

Tôi đã thêm vào một báo cáo lỗi (cũ nhưng vẫn còn hiện hành) trong Ubuntu về điều này.

https://bugs.launchpad.net/ubfox/+source/openssh/+orms/424371

Tôi đã đề xuất thay đổi mặc định thành Không và thêm tài liệu mới hơn vào đó:

# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.

2
Up up upvote ... điều này hữu ích hơn, bởi vì nó chứa một phần thông tin tôi đang tìm kiếm.
0xC0000022L

1
Tương tự nếu UseDNS không có thì tên máy chủ không thể được khớp trong quy tắc pam_access và IP phải được sử dụng thay thế.
ColinM

1
Tôi đã đưa ra câu trả lời này một vài năm trước nhưng chỉ hôm nay tôi nhận thấy rằng, mặc định đã được thay đổi thành "UseDNS no" trong OpenSSH 6.8p1, trong Ubuntu 15.10 trở lên .
Anthony Geoghegan

RedHat (trong RHEL7) gần đây cũng đã thay đổi mặc định thành Không, điều này phá vỡ các điều khiển truy cập dựa trên tên máy chủ (rất hữu ích như các điều khiển tư vấn chủ yếu trên mạng nội bộ, rõ ràng không phải là cơ chế kiểm soát truy cập duy nhất).
dannysauer

8

Từ trang của sshd_config(5):

 UseDNS  Specifies whether sshd(8) should look up the remote host name and
         check that the resolved host name for the remote IP address maps
         back to the very same IP address.  The default is “yes”.

Kích hoạt tính năng này giúp truy cập từ một vị trí mà không cần DNS (tiến và lùi) thích hợp sẽ tạo cảnh báo trong nhật ký.

Vì vậy, điều này không ngăn chặn bất kỳ cuộc tấn công nào ngoại trừ việc nó sẽ cần một số địa chỉ từ xa đủ điều kiện của khách hàng để không ghi lại bất kỳ cảnh báo nào. Một cảnh báo như vậy có thể giúp bạn truy tìm kẻ tấn công chỉ khi bản ghi PTR đó có ý nghĩa gì.

chỉnh sửa: cập nhật theo nhận xét của Andrey Voitenkov .


Vì vậy, nó là một bộ lọc về người được phép kết nối dựa trên bất cứ thứ gì có trong máy chủ DNS?
dùng368507

2
Tại sao nó làm cho không thể truy cập? sshd chỉ tạo cảnh báo nếu bản ghi DNS A / PTR không khớp. Trình tự đăng nhập sẽ chậm trong trường hợp giải quyết vấn đề.
Andrey Voitenkov

Điều này sẽ ngăn truy cập nếu khóa được ủy quyền đã bị xâm phạm miễn là kẻ tấn công không thể giả mạo các giá trị trong from=trường trước khóa được ủy quyền trong câu hỏi (nếu được sử dụng).
Alecz

7

Nó là cần thiết khi bạn sử dụng tùy chọn TỪ trong tệp ủy quyền và bạn muốn lọc theo tên chứ không chỉ IP.

Tùy chọn TỪ trong một dòng của tệp ủy quyền cho phép bạn giới hạn các máy chủ có thể sử dụng một khóa cụ thể.
Điều này làm tăng khả năng quản lý nhiều máy chủ có quyền truy cập lẫn nhau mà không cho phép bản sao của máy giả mạo nguồn gốc của nó, thường là vô tình (crontabs còn sót lại, lỗi của con người).


3

Tôi muốn thêm điều đó trên CentOS 7 (7.1.1503) và do đó Red Hat Enterprise Linux 7, tôi không thể đăng nhập với cài đặt mặc định là yescho UseDNS. Sau khi bỏ ghi chú và cài đặt nó no, tôi đã có thể đăng nhập. Do đó, có vẻ như người ta thực sự có thể bị từ chối dịch vụ nếu DNS không hoạt động chính xác! Trong CentOS 6, nó xuất hiện mặc định novà do đó tôi có thể sshkhông có DNS hoạt động!

Tôi muốn nói thêm rằng thử nghiệm của tôi là trên các thùng chứa LXC chứ không phải máy vật lý, trong trường hợp có sự khác biệt!

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.