Tại sao SSH thêm mục nhập know_host cho địa chỉ IP?


18

Tôi có một máy chủ tên là nms.example.org. Trong tôi /etc/ssh/ssh_known_hostscó một mục nhập cho máy chủ lưu trữ với khóa RSA. Mục này và tất cả các mục khác được quản lý bởi hệ thống quản lý cấu hình của tôi.

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...

Ngoài ra tôi có một mục trong /etc/ssh/ssh_configmáy chủ lưu trữ cụ thể của tôi đặt bí danh khóa máy chủ. Mà nếu tôi hiểu mọi thứ đúng, điều này có nghĩa là chỉ có nms.example.orgvấn đề.

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org

Tại sao sau đó, khi tôi kết nối từ máy khách, ssh dường như vẫn nghĩ rằng nó cần thêm khóa vào mỗi người dùng biết_host của tôi với IP của máy chủ?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...

SSH biết máy chủ của tôi là hợp lệ (Xem Host 'nms.example.org' is known and matches the RSA host key:) vì vậy tại sao nó lại thêm khóa cho IP vào hồ sơ người dùng?

Điều này cực kỳ khó chịu, bởi vì khi tôi cài đặt lại máy, hệ thống quản lý cấu hình của tôi xử lý việc thu thập và phân phối các khóa máy chủ cho tất cả hệ thống. Nhưng sẽ có những khóa xung đột còn sót lại được liên kết với IP trong các tệp được biết đến mỗi lần sử dụng gây ra cảnh báo về nỗ lực kết nối ngăn các tập lệnh kết nối.

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?

Làm cách nào tôi có thể ngăn ssh lưu trữ giá trị trên mỗi IP này trong mỗi người dùng biết_hosts? Hoặc có một số lý do bảo mật tại sao tôi phải sống với hành vi gây phiền nhiễu này? Điều này cũng làm tôi thất vọng vì một vài máy chủ có địa chỉ IP hơi động. Quản lý cấu hình của tôi xử lý các bản cập nhật DNS. Nhưng tôi nhận được các khóa máy chủ còn lại trên mỗi IP này lấp đầy các tệp tin_host của mỗi người dùng.

Câu trả lời:


22

Tôi nghĩ rằng đó là để làm cho CheckHostIPcông việc.

Nếu cờ này được đặt thành có đúng, thì ssh (1) sẽ kiểm tra thêm địa chỉ IP máy chủ trong known_hoststệp. Điều này cho phép ssh phát hiện nếu khóa máy chủ thay đổi do giả mạo DNS. Nếu tùy chọn này được đặt thành Số không, thì việc kiểm tra sẽ không được thực hiện. Mặc định là có có.

Bạn nhận được chẩn đoán tốt hơn một chút trong trường hợp cấu hình sai hoặc tấn công với tùy chọn này, nhưng nó không thực sự cải thiện bảo mật theo bất kỳ cách nào tôi có thể nghĩ ra.

Nếu bạn tắt CheckHostIPthì SSH (kể từ OpenSSH 6.7p1) sẽ không ghi lại địa chỉ IP khi bạn kết nối với máy chủ mới theo tên. Vì vậy, thêm điều này vào .ssh/config:

CheckHostIP no

Bạn có thể thêm nó vào một Hostphần nếu bạn chỉ muốn tắt nó cho một máy chủ cụ thể (đặc biệt là một máy chủ có địa chỉ IP động).


Yup, đây là cài đặt tôi cần.
Zoredache

Mặc dù tôi đồng ý với tất cả những gì bạn đã nói @Gilles, nhưng về mặt kỹ thuật tôi sẽ (vì một cuộc thảo luận tốt) nói rằng điều đó CheckHostIP yes sẽ cải thiện bảo mật ... NẾU người dùng biết chính xác những gì nó đang làm, cách hệ thống sử dụng tham số này và các khái niệm của niềm tin ngụ ý. Vì vậy, tôi thực sự sẽ chia tóc, điều mà tôi sẽ không làm ... Tôi sẽ lưu nó để bảo mật-se;)
0xSheepdog
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.