SSH: Làm thế nào để vô hiệu hóa mật mã yếu?


47

Đội bảo mật của tổ chức của tôi đã bảo chúng tôi vô hiệu hóa các mật mã yếu do chúng phát hành các khóa yếu.

  arcfour
  arcfour128
  arcfour256

Nhưng tôi đã thử tìm kiếm các mật mã này trong tệp ssh_config và sshd_config nhưng thấy chúng được nhận xét.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Tôi nên kiểm tra ở đâu để vô hiệu hóa các mật mã này khỏi SSH?


đối với máy chủ SSH, nó sẽ ở trong /etc/ssh/sshd_configvà đối với máy khách SSH, nó sẽ ở trong đó /etc/ssh/ssh_config. Bạn muốn tìm Cipherdòng trong mỗi, và ví dụ vừa Cipher aes256-ctrđược chỉ định. Sau đó khởi động lại SSH thông qua /etc/init.d/sshd restarthoặc thông qua lệnh systemd tương đương.
ron

1
bạn muốn trở nên am hiểu về tất cả các tham số sshd_confignếu bạn thực sự quan tâm đến bảo mật SSH, nếu không nó có thể là tất cả các nhà hát bảo mật.
ron

@ron bình luận thứ hai là một bình luận hấp dẫn, bạn có thể minh họa bằng một ví dụ về những gì bạn dự định không?
Jerome

các ciphersdanh sách chỉ là một được đặt ra nhiều vì có SSH thực hiện đúng ... Nghị định thư, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, và vân vân. Bạn có thể dựa vào các cài đặt mặc định của chúng như được triển khai trong bản phân phối linux của bạn, nhưngIgnornance is bliss only up until you have a problem
ron

Câu trả lời:


40

Nếu bạn không có danh sách mật mã rõ ràng được đặt ssh_configbằng cách sử dụng Cipherstừ khóa, thì giá trị mặc định, theo man 5 ssh_config(phía máy khách) và man 5 sshd_config(phía máy chủ), là:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            aes128-gcm@openssh.com,aes256-gcm@openssh.com,
            chacha20-poly1305@openssh.com,
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Lưu ý sự hiện diện của mật mã arcfour. Vì vậy, bạn có thể phải đặt rõ ràng một giá trị hạn chế hơn cho Ciphers.

ssh -Q ciphertừ khách hàng sẽ cho bạn biết những chương trình mà khách hàng của bạn có thể hỗ trợ. Lưu ý rằng danh sách này không bị ảnh hưởng bởi danh sách các mật mã được chỉ định trong ssh_config. Xóa một mật mã từ ssh_configsẽ không xóa nó khỏi đầu ra của ssh -Q cipher. Hơn nữa, sử dụng sshvới -ctùy chọn để chỉ định rõ ràng một mật mã sẽ ghi đè lên danh sách các mật mã bị hạn chế mà bạn đặt ssh_configvà có thể cho phép bạn sử dụng một mật mã yếu. Đây là một tính năng cho phép bạn sử dụng sshmáy khách của mình để liên lạc với các máy chủ SSH lỗi thời không hỗ trợ các mật mã mạnh hơn mới hơn.

nmap --script ssh2-enum-algos -sV -p <port> <host> sẽ cho bạn biết chương trình nào máy chủ của bạn hỗ trợ.


Xin chào, tôi đã đề cập đến các mật mã cụ thể trong ssh_config và khởi động lại dịch vụ ssh nhưng khi tôi thực hiện mật mã ssh -Q <tên máy chủ> tôi vẫn nhận được tất cả các mật mã mà tôi nhận được trước đó bất kể cấu hình của tôi.
rɑːdʒɑ

1
Tôi xin lỗi, ssh_configlà cấu hình phía máy khách, cấu hình phía máy chủ sshd_config, vui lòng thử điều đó. (Nó cũng được gọi là Ciphersở đó.)
Ulrich Schwarz

Vâng tôi biết nhưng khi tôi grep cho mật mã, tôi đã tìm thấy chúng tại ssh_config vì vậy tôi đã thay đổi ở đó. Là máy chủ sản xuất, tôi không làm gì cả. Tôi không chắc chắn
rd

Lưu ý rằng mặc định có thể khác nhau giữa các bản phân phối.
Jonas Schäfer

Có vẻ như không có ssh -Qtrên các phiên bản cũ hơn. (ví dụ: CentOS 6's openssh v5.3p1)
Tomofumi

30

Để vô hiệu hóa RC4 và sử dụng các mật mã an toàn trên máy chủ SSH, hãy mã hóa phần sau trong /etc/ssh/sshd_config

ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

HOẶC nếu bạn không muốn ra lệnh mật mã mà chỉ muốn loại bỏ các mật mã không an toàn, hãy chạy mã này trên dòng lệnh thay thế (trong chế độ sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config

Bạn có thể kiểm tra mật mã hiện đang được máy chủ của bạn sử dụng với:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Hãy chắc chắn rằng máy khách ssh của bạn có thể sử dụng các mật mã này, chạy

ssh -Q cipher | sort -u

để xem danh sách

Bạn cũng có thể hướng dẫn khách hàng SSH của mình chỉ thương lượng các mật mã an toàn với các máy chủ từ xa. Trong /etc/ssh/ssh_configbộ:

Host *
    ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

Đoạn trích trên đến từ đây
Để kiểm tra cài đặt máy chủ của bạn, bạn có thể sử dụng kiểm toán ssh


20

Vấn đề với việc chỉ định rõ ràng một danh sách mật mã là bạn phải thêm thủ công mật mã mới khi chúng xuất hiện. Thay vào đó, chỉ cần liệt kê các mật mã bạn muốn xóa, thêm vào danh sách (không phải từng mật mã riêng lẻ) bằng ký tự '-'. Vì vậy, trong trường hợp này, dòng Ciphers nên đọc:

Ciphers -arcfour*

Hoặc nếu bạn thích:

Ciphers -arcfour,arcfour128,arcfour256

Từ trang man sshd_config trên tùy chọn Ciphers (kể từ OpenSSH 7.5, phát hành 2017-03-20):

Nếu giá trị được chỉ định bắt đầu bằng ký tự '+', thì các mật mã được chỉ định sẽ được thêm vào bộ mặc định thay vì thay thế chúng. Nếu giá trị được chỉ định bắt đầu bằng ký tự '-', thì các mật mã được chỉ định (bao gồm cả ký tự đại diện) sẽ bị xóa khỏi bộ mặc định thay vì thay thế chúng.

Điều này cũng áp dụng cho các tùy chọn KexAlacticmsMAC .


2

cho phép / vô hiệu hóa mật mã cần thêm / xóa nó trong tệp / etc / ssh / sshd_config Sau khi chỉnh sửa tệp này, dịch vụ phải được tải lại

systemctl reload sshd
/etc/init.d/sshd reload

Sau đó, chạy lệnh này từ máy khách sẽ cho bạn biết chương trình nào hỗ trợ

ssh -Q cipher

Để kiểm tra xem mật mã arcfour có được bật hay không trên máy chủ chạy lệnh này

ssh localhost -c arcfour

Để kiểm tra xem mật mã arcfour128 có được bật hay không trên máy chủ, hãy chạy lệnh này

ssh localhost -c arcfour128

Bước này đã bị thiếu trong các câu trả lời ở trên
Saras Arya

1

Cách vô hiệu hóa mật mã ssh yếu, hoạt động 100% đã được thử nghiệm trên Fedora 29. Vấn đề: Nessus báo cáo máy chủ samba4 của tôi sử dụng mật mã không mạnh aes256-cbc và aes128-cbc. Vì vậy, tôi đặt những dòng đó vào/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,curve25519-sha256@libssh.org

Et voilà! .. nó vẫn sử dụng mật mã cbc vì lệnh này hoạt động :(

ssh -c aes256-cbc samba4

Vì vậy, tôi kiểm tra systemd hữu ích và tôi phát hiện ra dịch vụ sshd đang sử dụng một tệp khác cho mật mã

/etc/crypto-policies/back-ends/opensshserver.config

Sao lưu tập tin cho an toàn

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Chỉnh sửa nó và loại bỏ mật mã cbc. Khởi động lại dịch vụ

systemctl restart sshd

Và cuối cùng kiểm tra, hoạt động tốt..cbc bị vô hiệu hóa.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr
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.