ฉันต้องมีข้อความรหัสผ่านสำหรับคีย์ SSH RSA ของฉันหรือไม่


71

ก่อนที่ฉันจะเริ่มงานปัจจุบัน (ที่ธุรกิจขนาดเล็ก) สำนักงานของฉันไม่มีไฟร์วอลล์บนเครือข่ายและไม่มีการสำรองข้อมูลใด ๆ เลย ตอนนี้ฉันได้ลงชื่อเข้าใช้ในระบบดูแลระบบ / แผนกหนึ่งคนไอทีฉันได้ทำสิ่งที่ฉันสามารถทำได้เพื่อเปลี่ยนสิ่งนี้ หลังจากอธิบายกับเจ้านายว่าเราเปราะบางอย่างไรเขาอนุญาตให้ฉันตั้งค่าเซิร์ฟเวอร์สำรองบางแห่งซึ่งหนึ่งในนั้นอยู่ที่บ้านของเขา

ตอนนี้ฉันกำลังพยายามตั้งค่าทุกอย่างเพื่อให้สามารถสำรองข้อมูลรายวันโดยอัตโนมัติ ฉันวางแผนที่จะใช้ rsync ผ่าน ssh เพื่อทำสิ่งนี้ เพื่อความปลอดภัยและเพื่อความสะดวกในการดำเนินการอัตโนมัติฉันวางแผนที่จะปิดใช้งานการเข้าสู่ระบบรหัสผ่าน ssh และใช้การตรวจสอบคีย์ rsa เท่านั้น ถ้าฉันมีชุดข้อความรหัสผ่าน rsa แล้วฉันจะต้องป้อนรหัสผ่านและนั่นก็เป็นปัญหา

การไม่มีข้อความรหัสผ่าน rsa ทำให้สิ่งต่าง ๆ มีความปลอดภัยน้อยลงหรือไม่? ฉันเป็นคนเดียวใน บริษัท ที่มีเบาะแสเกี่ยวกับสิ่งนี้ดังนั้นฉันจึงไม่กังวลเกี่ยวกับบางคนที่เรียกสถานีในเครื่องของฉัน (ซึ่งมักจะถูกล็อคเมื่อฉัน AFK อยู่แล้ว) ) และ ssh-ing เป็นหนึ่งในเซิร์ฟเวอร์สำรองและทำความเสียหายใด ๆ ฉันยังใหม่มากสำหรับโลกแห่งการบริหารระบบและนี่เป็นครั้งแรกที่ฉันทำสิ่งนี้และฉันไม่ต้องการออกจากช่องใด ๆ ในการตั้งค่าความปลอดภัย

คอมพิวเตอร์ที่มีปัญหาในที่นี้กำลังเรียกใช้ Ubuntu 10.10, SME Server และ OSX 10.6 ถ้าอย่างใดที่สร้างความแตกต่าง


5
ไม่ควรสูญเสียความปลอดภัยอย่างแท้จริงโดยไม่ต้องใส่รหัสผ่านในคีย์ของคุณ การรักษาความสมบูรณ์ของความปลอดภัยของคีย์ ณ จุดนี้จะกลายเป็นสิ่งสำคัญเนื่องจากถ้ามีใครสามารถคัดลอกได้ไม่มีรหัสลับที่จะป้องกันไม่ให้พวกเขาใช้มัน
Chris Marisic

1
อาจเป็นเพียงฉัน แต่ฉันไม่รู้ว่าสิ่งที่ความคิดเห็นข้างต้นพยายามจะพูด
underscore_d

3
@underscore_d โดยทั่วไปเขากำลังพูดว่า: ไม่มีผลกระทบต่อความปลอดภัยของ SSH ที่จะมีหรือไม่มีข้อความรหัสผ่านสำหรับคีย์ของคุณ แต่คุณต้องรักษาความปลอดภัยให้กับรหัสของคุณ
Hartator

คำตอบ:


89

อย่างที่คุณทราบข้อดีของข้อความรหัสผ่านนั้นคือถ้ามีใครสามารถอ่านรหัสส่วนตัวของคุณได้พวกเขาจะ 'ไม่สามารถใช้' ได้

หากใครบางคนสามารถเข้าถึงคีย์ส่วนตัวนั้นได้คุณควรรับมันเพื่อรับสิทธิ์ว่าพวกเขามีการเข้าถึง (ed) / ทำอันตรายต่ออะไรก็ตามที่ตั้งค่าเครื่องด้วยกุญแจสาธารณะ สิ่งที่ต้องการ. bash_history หรือ. ssh / config ทำให้สิ่งนี้ง่ายยิ่งขึ้นแม้ว่า. ssh / known_hosts ของคุณจะสับสน

การไม่มีรหัสผ่านในคีย์ของคุณไม่ใช่จุดจบของโลกนี่คือแนวคิด 3 ข้อที่จะลองและช่วยให้คุณปลอดภัยยิ่งขึ้นไปอีกเล็กน้อย ( ตัวใหญ่เป็นที่สองอ่านว่าถ้าไม่มีอะไรอื่น )


  1. อย่าใช้คีย์เดียวกันในทุกเครื่องและผู้ใช้ สร้างผู้ใช้แต่ละคนในแต่ละเครื่อง (ที่ต้องทำสิ่งนี้) คู่กุญแจของตัวเอง สิ่งนี้จะช่วยให้คุณสามารถควบคุมสิ่งเล็ก ๆ น้อย ๆ ได้ดี

  2. เมื่อเพิ่มคีย์ลงในไฟล์ authorized_keys ของคุณคุณสามารถล็อคมันลงไปเพื่อให้สามารถเรียกใช้คำสั่งเฉพาะหรือใช้เฉพาะจากโฮสต์ที่ระบุเท่านั้น

    ดูman sshและค้นหาคำสั่ง =และจาก =

    ไวยากรณ์เป็นดังนี้:

    from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name

    นั่นคือ pop 'rsync' ที่นั่นและมีเพียง 'rsync' เท่านั้นที่สามารถถูกเรียกโดยคีย์ของคุณและเฉพาะจากที่อยู่ IP 1.2.3.4 IP ที่หลาย ๆ ,สามารถแยกออกจากกัน รองรับชื่อโฮสต์

  3. สิ่งที่ควรคำนึงถึงก็คือคำสั่ง 'AllowUser' ใน sshd_config ของคุณ

    AllowUsers

    คำหลักนี้สามารถตามด้วยรายการรูปแบบชื่อผู้ใช้คั่นด้วยช่องว่าง หากระบุการล็อกอินจะได้รับอนุญาตสำหรับชื่อผู้ใช้ที่ตรงกับหนึ่งในรูปแบบเท่านั้น '*' และ '?' สามารถใช้เป็นสัญลักษณ์แทนในรูปแบบ ชื่อผู้ใช้เท่านั้นที่ถูกต้อง; ไม่รู้จัก ID ผู้ใช้ที่เป็นตัวเลข โดยค่าเริ่มต้นอนุญาตให้เข้าสู่ระบบสำหรับผู้ใช้ทั้งหมด หากรูปแบบนั้นใช้รูปแบบ USER @ HOST ดังนั้น USER และ HOST จะถูกตรวจสอบแยกกัน จำกัด การเข้าสู่ระบบให้กับผู้ใช้เฉพาะจากโฮสต์ที่เฉพาะเจาะจง

    โดยทั่วไปแล้วจะทำให้แน่ใจได้ว่าผู้ใช้สามารถเข้าสู่ระบบได้จากตำแหน่งที่แน่นอน (แม้ว่ามันจะรับไวล์การ์ดด้วย) จะไม่แก้ปัญหาทั้งหมดของคุณ แต่อย่างน้อยมันก็จะทำให้คนอื่นยากขึ้น


1
สวย - นี่คือสิ่งที่ฉันต้องการรู้ ขอบคุณมาก!
eckza

3
ไม่มีปัญหาอย่าใช้เป็นรายการที่ละเอียดถี่ถ้วน! :-) สิ่งที่ต้องการตรวจสอบเป็นประจำ auth.log / ปลอดภัย ฯลฯ ฤดูใบไม้ผลิถึงใจ
PriceChild

3
ดังนั้นการตรวจสอบแทนที่จะกังวลว่าข้อความรหัสผ่านของคุณจะถูกขโมยหรือไม่
Ehtesh Choudhury

3
@shurane ทำทั้งสองอย่าง!
PriceChild

4

คุณสามารถใช้บางอย่างเช่นพวงกุญแจเพื่อทำให้ข้อความรหัสผ่านเจ็บปวดน้อยลง สิ่งนี้มีความปลอดภัยมากกว่าการใช้ล็อกอินแบบไม่มีรหัสผ่านเล็กน้อยและสามารถใช้ร่วมกับคำตอบอื่น ๆ ได้ที่นี่ คำตอบของ PriceChildค่อนข้างดี


-4

โดยส่วนตัวแล้วฉันใช้ DSA ไม่ใช่ RSA ส่วนใหญ่เป็นเพราะฉันใช้มาตลอดและฉันรู้ว่า 'ใช้งานได้ดี' แต่ทฤษฎีที่ฉันเดาเหมือนกัน คุณสามารถแทนที่dsaด้วยrsaในด้านล่าง

บนแหล่งที่มา:

$ ssh-keygen -t dsa

จากนั้นคัดลอกเนื้อหาของ.ssh/id_dsa.pubไฟล์ลง.ssh/authorized_keysในบัญชีผู้ใช้ปลายทาง

จากนั้นคุณควรจะสามารถ ssh ระหว่างแหล่งที่มาและปลายทางโดยไม่มีรหัสผ่าน


1
มีเหตุผลใดที่คุณสนับสนุน dsa มากกว่า rsa? ฉันเคยเห็นคำแนะนำที่ตรงกันข้าม
PriceChild

@PriceChild: AFAIK ความปลอดภัยของพวกเขานั้นเทียบเท่ากันมากกว่าหรือน้อยกว่า (สมมติว่ามีขนาดคีย์เพียงพอ) ไม่ใช่การเข้ารหัสด้วยตนเองฉันเชื่อมั่นในการตัดสินใจของ OpenSSH และ GnuPG เพื่อใช้ RSA เป็นอัลกอริทึมของคีย์เริ่มต้น ดูคำถามนี้ด้วย
grawity

ไม่มีเหตุผลจริง - ตัวเลือกส่วนบุคคลส่วนใหญ่ - และความจริงที่ว่า RSA ถูกแฮ็กเข้ามาเมื่อไม่นานมานี้และถูกขโมยรหัสที่ละเอียดอ่อน - วิธีการที่เกี่ยวข้องกับคีย์ RSA ที่ฉันไม่มีความคิด (ใครทำ?) .
Majenko

9
ฉันกลัวแฮ็คที่ "บริษัท RSA" ไม่มีผลต่อ "ความปลอดภัยของอัลกอริทึม RSA" ตรวจสอบที่secure.wikimedia.org/wikipedia/en/wiki/RSA_Security - "RSA ได้รับการตั้งชื่อตามอัลกอริธึมการเข้ารหัสคีย์สาธารณะของ RSA ซึ่งได้รับการตั้งชื่อตามชื่อย่อของนักประดิษฐ์ร่วม: Ron Rivest, Adi Shamir และ Len Adleman "
PriceChild

6
@ แมท: สิ่งเดียวที่พวกเขามีเหมือนกันคือชื่อ อัลกอริทึมการเข้ารหัสลับ RSA ไม่สมมาตรเป็นคณิตศาสตร์ที่บริสุทธิ์ไม่มีทางที่มันจะถูกทำให้อ่อนแอด้วยการบุกเข้าไปยังระบบของ บริษัท บางแห่ง
grawity
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.