SSH: Bagaimana cara menonaktifkan cipher yang lemah?

47

Tim keamanan organisasi saya memberi tahu kami untuk menonaktifkan sandi yang lemah karena mereka mengeluarkan kunci yang lemah.

  arcfour
  arcfour128
  arcfour256

Tapi saya mencoba mencari cipher ini dalam file ssh_config dan sshd_config tetapi ternyata mereka berkomentar.

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

Di mana lagi saya harus memeriksa untuk menonaktifkan cipher ini dari SSH?

rɑːdʒɑ
sumber
untuk server SSH maka akan di /etc/ssh/sshd_configdan untuk klien SSH akan di /etc/ssh/ssh_config. Anda ingin mencari Cipherbaris di masing-masing, dan misalnya baru saja Cipher aes256-ctrditentukan. Kemudian restart SSH melalui /etc/init.d/sshd restartatau melalui perintah systemd yang setara.
ron
1
Anda ingin menjadi berpengetahuan tentang semua parameter sshd_configjika Anda benar-benar peduli tentang keamanan SSH, jika tidak, semua teater keamanan.
ron
@ron komentar kedua adalah yang menarik, bisakah Anda menggambarkan dengan contoh apa yang Anda inginkan?
Jerome
yang ciphersdaftar hanya satu pengaturan dari banyak memiliki SSH benar dilaksanakan ... Protokol, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, dan sebagainya. Anda dapat mengandalkan pengaturan default mereka seperti yang diterapkan dalam distribusi linux Anda, tetapiIgnornance is bliss only up until you have a problem
ron

Jawaban:

40

Jika Anda tidak memiliki daftar sandi yang ditetapkan ssh_configmenggunakan Cipherskata kunci, maka nilai defaultnya, menurut man 5 ssh_config(sisi klien) dan man 5 sshd_config(sisi server), adalah:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            [email protected],[email protected],
            [email protected],
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Perhatikan keberadaan cipher arcfour. Jadi, Anda mungkin harus secara eksplisit menetapkan nilai yang lebih ketat Ciphers.

ssh -Q cipherdari klien akan memberi tahu Anda skema mana yang dapat didukung klien Anda. Perhatikan bahwa daftar ini tidak terpengaruh oleh daftar sandi yang ditentukan dalam ssh_config. Menghapus cipher dari ssh_configtidak akan menghapusnya dari output ssh -Q cipher. Selain itu, menggunakan sshdengan -copsi untuk secara eksplisit menentukan sebuah cipher akan menimpa daftar cipher yang dibatasi yang Anda atur ssh_configdan mungkin memungkinkan Anda untuk menggunakan cipher yang lemah. Ini adalah fitur yang memungkinkan Anda untuk menggunakan sshklien Anda untuk berkomunikasi dengan server SSH usang yang tidak mendukung sandi yang lebih baru dan lebih kuat.

nmap --script ssh2-enum-algos -sV -p <port> <host> akan memberi tahu Anda skema mana yang didukung server Anda.

Ulrich Schwarz
sumber
Hai, saya menyebutkan cipher spesifik di ssh_config dan memulai kembali layanan ssh tetapi ketika saya melakukan ssh -Q cipher <hostname> saya masih mendapatkan semua cipher yang saya peroleh sebelumnya terlepas dari konfigurasi saya.
rɑːdʒɑ
1
Maaf, ssh_configadalah konfigurasi sisi klien, konfigurasi sisi server sshd_config, silakan coba. (Disebut juga di Cipherssana.)
Ulrich Schwarz
Ya saya tahu tetapi ketika saya mengambil cipher saya menemukan mereka di ssh_config jadi saya melakukan perubahan di sana. Sebagai server produksi saya tidak melakukan apa pun saya tidak yakin
rɑːdʒɑ
Perhatikan bahwa standarnya mungkin berbeda di antara distribusi.
Jonas Schäfer
Sepertinya tidak ada ssh -Qpada versi yang lebih lama. (misalnya openssh v5.3p1 CentOS 6)
Tomofumi
30

Untuk menonaktifkan RC4 dan menggunakan sandi aman di server SSH, masukkan kode berikut di hard /etc/ssh/sshd_config

ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

ATAU jika Anda memilih untuk tidak mendikte cipher tetapi hanya ingin menghapus cipher yang tidak aman, jalankan ini pada baris perintah saja (dalam mode sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|[email protected]\)\,\?//g" >> /etc/ssh/sshd_config

Anda dapat memeriksa sandi yang saat ini digunakan oleh server Anda dengan:

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

Pastikan klien ssh Anda dapat menggunakan cipher ini, jalankan

ssh -Q cipher | sort -u

untuk melihat daftar.

Anda juga dapat menginstruksikan klien SSH Anda untuk hanya menegosiasikan sandi aman dengan server jarak jauh. Di /etc/ssh/ssh_configset:

Host *
    ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

Cuplikan di atas datang dari sini
Untuk menguji pengaturan server Anda, Anda dapat menggunakan ssh-audit

buasBum
sumber
20

Masalah dengan menentukan daftar sandi secara eksplisit adalah bahwa Anda harus secara manual menambahkan sandi baru saat mereka keluar. Alih-alih, cukup daftarkan cipher yang ingin Anda hapus, tambahkan daftar (tidak setiap cipher individu) dengan karakter '-'. Jadi dalam hal ini, baris Cipher harus membaca:

Ciphers -arcfour*

Atau jika Anda lebih suka:

Ciphers -arcfour,arcfour128,arcfour256

Dari halaman manual sshd_config pada opsi Ciphers (sejak OpenSSH 7.5, dirilis 2017-03-20):

Jika nilai yang ditentukan dimulai dengan karakter '+', maka sandi yang ditentukan akan ditambahkan ke set default alih-alih menggantinya. Jika nilai yang ditentukan dimulai dengan karakter '-', maka sandi yang ditentukan (termasuk wildcard) akan dihapus dari set default alih-alih menggantinya.

Ini juga berlaku untuk KexAlgorithms dan Mac pilihan.

Spacedog
sumber
2

aktifkan / nonaktifkan cipher perlu menambahkan / menghapusnya di file / etc / ssh / sshd_config Setelah mengedit file ini layanan harus dimuat ulang

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

Kemudian, menjalankan perintah ini dari klien akan memberi tahu Anda skema mana yang didukung

ssh -Q cipher

Untuk memeriksa apakah arcfour cipher diaktifkan atau tidak di server jalankan perintah ini

ssh localhost -c arcfour

Untuk memeriksa apakah cipher arcfour128 diaktifkan atau tidak di server, jalankan perintah ini

ssh localhost -c arcfour128
Kumar
sumber
Langkah ini tidak ada dalam jawaban di atas
Saras Arya
1

Cara menonaktifkan ssh cipher yang lemah, 100% berfungsi diuji pada Fedora 29. Masalahnya: Nessus melaporkan server samba4 saya menggunakan cipher yang tidak kuat aes256-cbc dan aes128-cbc. Jadi saya masukkan kalimat itu/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,[email protected]

Et voilà! .. masih menggunakan cbc cipher karena perintah ini berfungsi :(

ssh -c aes256-cbc samba4

Jadi saya memeriksa systemd yang berguna dan saya menemukan layanan sshd menggunakan file lain untuk sandi

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

Cadangkan file untuk keamanan

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

Edit, dan hapus cipher cbc. Mulai ulang layanan

systemctl restart sshd

Dan akhirnya tes, berfungsi dengan baik..cbc dinonaktifkan.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
elbarna
sumber