SSH: วิธีการปิดการใช้งานยันต์อ่อนแอ


47

ทีมรักษาความปลอดภัยขององค์กรของฉันบอกให้เราปิดการใช้งานระบบรหัสอ่อนเนื่องจากพวกเขาออกคีย์ที่อ่อนแอ

  arcfour
  arcfour128
  arcfour256

แต่ฉันพยายามค้นหา ciphers เหล่านี้ในไฟล์ ssh_config และ sshd_config แต่พบว่าพวกเขาแสดงความคิดเห็น

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

ฉันควรตรวจสอบการปิดการใช้งาน ciphers เหล่านี้จากที่ใด


สำหรับเซิร์ฟเวอร์ SSH จะอยู่ใน/etc/ssh/sshd_configและสำหรับไคลเอ็นต์ SSH จะอยู่ใน/etc/ssh/ssh_configนั้น คุณต้องการค้นหาCipherบรรทัดในแต่ละบรรทัดและตัวอย่างได้Cipher aes256-ctrระบุไว้ จากนั้นรีสตาร์ท SSH ผ่าน/etc/init.d/sshd restartหรือผ่านคำสั่ง systemd ที่เทียบเท่า
ron

1
คุณต้องการที่จะมีความรู้เกี่ยวกับพารามิเตอร์ทั้งหมดในsshd_configถ้าคุณสนใจเกี่ยวกับความปลอดภัยของ SSH จริง ๆ ไม่เช่นนั้นมันอาจเป็นโรงละครความปลอดภัยทั้งหมด
ron

@ron ความคิดเห็นที่สองเป็นสิ่งที่น่าสนใจคุณสามารถอธิบายตัวอย่างที่คุณต้องการได้หรือไม่?
เจอโรม

ciphersรายการเป็นเพียงหนึ่งในการออกของหลายมี SSH ดำเนินการอย่างถูกต้อง ... พิธีสาร PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel และอื่น ๆ คุณสามารถพึ่งพาตั้งค่าเริ่มต้นของพวกเขาเป็นดำเนินการในการจัดจำหน่ายลินุกซ์ของคุณ แต่Ignornance is bliss only up until you have a problem
รอน

คำตอบ:


40

หากคุณไม่มีรายการ ciphers ที่ชัดเจนในการssh_configใช้Ciphersคำสำคัญค่าเริ่มต้นตามman 5 ssh_config(ฝั่งไคลเอ็นต์) และman 5 sshd_config(ฝั่งเซิร์ฟเวอร์) คือ:

            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

สังเกตการมีอยู่ของยันต์ arcfour Ciphersดังนั้นคุณอาจจะต้องตั้งค่าที่เข้มงวดมากขึ้นสำหรับการอย่างชัดเจน

ssh -Q cipherจากลูกค้าจะบอกคุณว่าลูกค้าของคุณสามารถรองรับแผนการแบบไหน ssh_configทราบว่ารายการนี้ไม่ได้รับผลกระทบจากรายชื่อของยันต์ที่ระบุไว้ใน การลบตัวเลขจากจะไม่ลบออกจากการส่งออกของssh_config ssh -Q cipherนอกจากนี้การใช้sshพร้อม-cตัวเลือกเพื่อระบุตัวเลขจะแทนที่รายการที่ จำกัด ของเลขศูนย์ที่คุณตั้งค่าssh_configและอาจอนุญาตให้คุณใช้รหัสตัวเลขที่อ่อนแอ นี่คือคุณลักษณะที่ช่วยให้คุณใช้sshไคลเอ็นต์ของคุณในการสื่อสารกับเซิร์ฟเวอร์ SSH ที่ล้าสมัยซึ่งไม่สนับสนุน ciphers ที่ใหม่กว่า

nmap --script ssh2-enum-algos -sV -p <port> <host> จะบอกคุณว่าเซิร์ฟเวอร์ของคุณรองรับรูปแบบใด


สวัสดีฉันพูดถึง ciphers เฉพาะใน ssh_config และเริ่มบริการ ssh ใหม่ แต่เมื่อฉันทำ ssh -Q cipher <hostname> ฉันยังคงได้รับ ciphers ทั้งหมดที่ฉันได้รับก่อนหน้านี้โดยไม่คำนึงถึงการกำหนดค่าของฉัน
r 30dʒɑ

1
ขออภัยssh_configการกำหนดค่าฝั่งไคลเอ็นต์คือการกำหนดค่าฝั่งเซิร์ฟเวอร์sshd_configโปรดลองทำเช่นนั้น (เรียกอีกอย่างว่าCiphersนั่น)
Ulrich Schwarz

ใช่ฉันรู้ แต่เมื่อฉัน grep สำหรับ ciphers ฉันพบพวกเขาที่ ssh_config ดังนั้นฉันจึงทำการเปลี่ยนแปลงที่นั่น ในฐานะเซิร์ฟเวอร์การผลิตฉันไม่ได้ทำอะไรเลยฉันไม่แน่ใจ
2559

โปรดทราบว่าค่าเริ่มต้นอาจแตกต่างกันระหว่างการแจกแจง
Jonas Schäfer

ดูเหมือนว่าไม่มีssh -Qในรุ่นเก่ากว่า (เช่น openssh v5.3p1 ของ CentOS 6)
Tomofumi

30

หากต้องการปิดการใช้งาน RC4 และใช้รหัสลับที่ปลอดภัยบนเซิร์ฟเวอร์ SSH ให้ใส่รหัสต่อไปนี้ /etc/ssh/sshd_config

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

หรือหากคุณไม่ต้องการสั่งการ ciphers แต่ต้องการแยก ciphers ที่ไม่ปลอดภัยออกให้รันสิ่งนี้บนบรรทัดคำสั่งแทน (ในโหมด 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

คุณสามารถตรวจสอบ ciphers ที่เซิร์ฟเวอร์ของคุณใช้อยู่ในปัจจุบันด้วย:

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

ตรวจสอบให้แน่ใจว่าไคลเอ็นต์ ssh ของคุณสามารถใช้ ciphers เหล่านี้ได้

ssh -Q cipher | sort -u

เพื่อดูรายการ

นอกจากนี้คุณยังสามารถสั่งให้ไคลเอ็นต์ SSH ของคุณเจรจาต่อรองเฉพาะ ciphers ที่ปลอดภัยกับเซิร์ฟเวอร์ระยะไกล ใน/etc/ssh/ssh_configชุด:

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

ตัวอย่างด้านบนมาจากที่นี่
เพื่อทดสอบการตั้งค่าเซิร์ฟเวอร์ของคุณคุณสามารถใช้ssh-audit


20

ปัญหาของการระบุรายการตัวเลขอย่างชัดเจนคือคุณต้องเพิ่มรหัสใหม่ด้วยตนเองเมื่อออกมา เพียงแค่แสดงรายการเลขศูนย์ที่คุณต้องการลบโดยใส่รายชื่อ (ไม่ใช่รหัสตัวเลขแต่ละอัน) ด้วยอักขระ '-' ดังนั้นในกรณีนี้บรรทัด Ciphers ควรอ่าน:

Ciphers -arcfour*

หรือถ้าคุณต้องการ:

Ciphers -arcfour,arcfour128,arcfour256

จากหน้า sshd_config บนตัวเลือกCiphers (ตั้งแต่ OpenSSH 7.5, เปิดตัว 2017-03-20):

หากค่าที่ระบุเริ่มต้นด้วยอักขระ '+' ระบบจะทำการผนวกเลขศูนย์ที่ระบุไว้กับชุดเริ่มต้นแทนการแทนที่ หากค่าที่ระบุเริ่มต้นด้วยอักขระ '-' ระบบจะลบ ciphers ที่ระบุ (รวมถึง wildcard) ออกจากชุดเริ่มต้นแทนการแทนที่

สิ่งนี้ยังใช้กับตัวเลือกKexAlgorithmsและMAC


2

เปิด / ปิดการเข้ารหัสต้องเพิ่ม / ลบมันในไฟล์ / etc / ssh / sshd_config หลังจากแก้ไขไฟล์นี้บริการจะต้องโหลดใหม่

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

จากนั้นการเรียกใช้คำสั่งนี้จากไคลเอนต์จะบอกคุณว่าแบบแผนสนับสนุน

ssh -Q cipher

ในการตรวจสอบว่ารหัส arcfour เปิดใช้งานอยู่หรือไม่บนเซิร์ฟเวอร์ให้รันคำสั่งนี้

ssh localhost -c arcfour

ในการตรวจสอบว่ารหัส arcfour128 เปิดใช้งานอยู่หรือไม่บนเซิร์ฟเวอร์ให้เรียกใช้คำสั่งนี้

ssh localhost -c arcfour128

ขั้นตอนนี้หายไปจากคำตอบข้างต้น
Saras Arya

1

วิธีปิดการใช้งาน ssh cipher อ่อนการทดสอบ 100% ทำงานบน Fedora 29 ปัญหา: Nessus รายงานว่าเซิร์ฟเวอร์ samba4 ของฉันใช้งานไม่แรง ciphers aes256-cbc และ aes128-cbc ดังนั้นฉันจึงใส่เส้นเหล่านั้นเข้าไป/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

และอื่น ๆ ! .. มันยังคงใช้รหัส cbc เพราะคำสั่งนี้ใช้งานได้ :(

ssh -c aes256-cbc samba4

ดังนั้นฉันจะตรวจสอบ systemd ที่มีประโยชน์และฉันค้นพบบริการ sshd กำลังใช้ไฟล์อื่นสำหรับเลขศูนย์

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

สำรองไฟล์เพื่อความปลอดภัย

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

แก้ไขและลบ cbc cipher เริ่มบริการใหม่

systemctl restart sshd

และสุดท้ายทดสอบทำงานได้ดี .. cbc ปิดใช้งาน

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.