ฉันจะเพิ่มความปลอดภัยของ ssh ได้อย่างไร ฉันต้องการรหัสและรหัสผ่านหรือไม่


16

ฉันมีเครือข่ายเซิร์ฟเวอร์ขนาดเล็กและฉันต้องการเพิ่มความปลอดภัยทั่วไป ฉันมีเวลา / เงิน / หวาดระแวงไม่เพียงพอในการตั้งค่า VPN - วิธีพื้นฐานที่ฉันสามารถเพิ่มความปลอดภัยของระบบคืออะไร

มีอยู่สิ่งหนึ่งที่ต้องการให้ผู้ใช้ส่งรหัสและป้อนรหัสผ่าน นี่เป็นเรื่องยากสำหรับ Google เพราะทุกอย่างเกี่ยวกับ "รหัสผ่าน ssh สำคัญ" เป็นเรื่องเกี่ยวกับ sshing โดยไม่ต้องใช้รหัสผ่าน :-)

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

คุณคิดอย่างไร? มีอะไรอีกบ้าง?


นอกจากนี้คุณยังสามารถ จำกัด รายชื่อผู้ใช้ที่ได้รับอนุญาตให้เชื่อมต่อโดยใช้คำสั่ง AllowUsers หรือ DenyUsers รายละเอียดเพิ่มเติมเกี่ยวกับโพสต์นี้
Fred

คำตอบ:


8

การเข้าสู่ระบบด้วยรหัสผ่านและรหัสเป็นเช่นเดียวกับ "just with key" ในระหว่างการสร้างคีย์คุณจะถูกขอให้ป้อนข้อความรหัสผ่าน หากคุณเว้นว่างไว้คุณจะไม่ได้รับรหัสผ่าน หากคุณกรอกข้อความรหัสผ่านคุณจะถูกถามทุกครั้งเมื่อคุณต้องการเข้าสู่ระบบ

หากคุณกังวลเรื่องความปลอดภัยลองพิจารณาคำแนะนำเหล่านี้ที่กล่าวถึงล้านล้านครั้งในฟอรัมนี้:

  • ปิดใช้งานการล็อกอิน ssh สำหรับรูท
  • อนุญาตการเข้าถึง ssh จากที่อยู่ IP ที่กำหนดเท่านั้น (iptables, hosts.allow, ... )
  • ย้ายพอร์ต ssh ไปยังพอร์ตอื่น (เพิ่มความสับสนมากขึ้นแล้วเพิ่มความปลอดภัย แต่ใช้งานได้)
  • ตรวจสอบความพยายามเข้าสู่ระบบต่างประเทศและตอบสนองตาม
  • ปรับปรุงระบบของคุณให้ทันสมัย

ฯลฯ

อัปเดต: โปรดอ้างอิงคำตอบที่นี่สำหรับวิธีการต้องการรหัสสาธารณะและรหัสผ่านระบบท้องถิ่นด้วยเซิร์ฟเวอร์ OpenSSH


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

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

mkudlacek - ฉันไม่รู้เรื่อง hosts.allow มาก่อน - googling ไปรอบ ๆ ดูเหมือนว่าความคิดของฉันในรายการ whitelist dyndns ไม่ได้งี่เง่าเลยฉันคิดว่าฉันจะลองดู
John Bachir

1
200_ สำเร็จ - เป็นไปได้หรือไม่ที่จะต้องใช้ทั้งรหัสและรหัสผ่าน?
John Bachir

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

6

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

ฉันไม่ได้ลองด้วยตัวเอง แต่จากสิ่งที่ฉันได้ยิน (ซึ่งไม่มากจริง ๆ ) ค่าใช้จ่ายเล็กน้อยและลดโปรไฟล์การมองเห็นของคุณลงอย่างมาก


ฉันจะไปกับสิ่งนี้ถ้าคุณเพียงแค่ต้องการ "เพิ่มความปลอดภัยทั่วไป" แต่คุณควรพยายามแก้ไขปัญหาความปลอดภัยโดยเฉพาะแทน
Stefan Thyberg

ฉันใช้สิ่งนี้กับทุก ๆ ไซต์ที่ฉันมีอยู่และมันมีประสิทธิภาพมาก
Sirex

สิ่งนี้ไม่เหมือนกับการมีรหัสผ่านที่ยาวกว่า 4 ตัวอักษรใช่หรือไม่
John Bachir

ไม่ได้จริงๆ มี 65536 พอร์ตและ 26 ตัวอักษร นอกจากนี้คุณยังมีลำดับการน็อคไม่ว่าจะยาวเท่าใดและคุณสามารถ จำกัด การลองใหม่ได้โดยใช้เทคนิคไฟร์วอลล์มาตรฐาน มันไม่ปลอดภัยต่อ se แต่มันดีที่จะมี
Sirex

ถ้าเช่นนั้นก็จะยาว 8 หรือ 12 ตัวอักษร :-D
John Bachir

3

แพทช์ที่เกี่ยวข้องกับการเปิดใช้งานโดยตรงใน SSH และการสนทนาที่เกี่ยวข้องมากมาย:

สิ่งนี้สามารถทำได้โดยไม่ต้องแก้ไขโดยให้สคริปต์ตรวจสอบรหัสผ่านรวมกับการใช้ForceCommandตัวเลือกการกำหนดค่า

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


2

เพียงแค่ใช้

RequiredAuthentications publickey, password

ในsshd_configถ้าคุณใช้ sshd จาก ssh.com คุณลักษณะนี้ไม่สามารถใช้ได้ใน OpenSSH


RequiredAuthenticationsไม่ใช่ส่วนขยายมาตรฐานที่แน่นอนสำหรับ OpenSSH
Hubert Kario

คุณรู้หรือไม่ว่าการใช้งาน sshd รองรับสิ่งนี้?
John Bachir

Tectia SSH เซิร์ฟเวอร์ไม่รองรับ BTW: ใช้ @nameOfUser เมื่อตอบกลับความคิดเห็นด้วยวิธีนี้พวกเขาจะได้รับแจ้งเกี่ยวกับการตอบกลับ
Hubert Kario

ฟังก์ชันการทำงานที่คล้ายกันได้รับการสนับสนุนใน OpenSSH ตั้งแต่เวอร์ชัน 6.2: serverfault.com/a/562899
SørenLøvborg

1

คุณสามารถใช้รหัสผ่านครั้งเดียวเพื่อเพิ่มความปลอดภัยได้ สิ่งนี้จะอนุญาตให้ผู้ใช้เข้าสู่ระบบจากเทอร์มินัลที่ไม่ปลอดภัยซึ่งอาจมี keylogger หากก่อนหน้านี้พวกเขาสร้างรหัสผ่านถัดไป นอกจากนี้ยังมีตัวสร้างรหัสผ่านที่สามารถติดตั้งได้แม้บนโทรศัพท์ Java MIDP รุ่นเก่าที่คุณพกติดตัวตลอดเวลา


ใช่บนเซิร์ฟเวอร์ส่วนบุคคลของฉันฉันใช้โทเค็น Yubikey เพิ่มเติมจากรหัสผ่านของฉัน โทเค็นสร้างรหัสผ่านครั้งเดียว ทั้งสองจำเป็นต้องพิสูจน์ตัวตน อีกวิธีหนึ่งฉันอนุญาตให้มีการข้ามรหัสผ่าน / คู่ otp หากคุณรับรองความถูกต้องด้วยคีย์ SSH Yubikey มีราคาถูกและมีซอฟต์แวร์มากมายที่จะรวมเข้ากับ Pam ซึ่งเป็นระบบการตรวจสอบสิทธิ์ที่ขยายได้ของ Linux
Martijn Heemels

1

ฉันอยากจะแนะนำให้คุณไม่เคยใช้บริการการจัดการ sshd, rdp หรือดังกล่าวโดยไม่มีข้อ จำกัด IP ที่จริงแล้วฉันขอแนะนำให้ จำกัด การเข้าถึงบริการดังกล่าวให้กับผู้ดูแลระบบที่เชื่อมต่อผ่าน VPN


1

เกี่ยวกับคำถามดั้งเดิมของคุณเกี่ยวกับการขอคีย์และรหัสผ่านหากคุณใช้ RHEL หรือ CentOS 6.3 ตอนนี้ก็เป็นไปได้ บันทึก RHEL 6.3 ปล่อยอธิบายมันก็เป็นเรื่องของการเพิ่มนี้ sshd_config ของคุณ

RequiredAuthentications2 publickey,password

0

ฉันเห็นด้วยอย่างยิ่งกับ 3molo OpenSSH เป็นเซิร์ฟเวอร์ SSH เริ่มต้นของ Linux และ Unix ไม่มีเหตุผลที่เราจะเปลี่ยนโดยเฉพาะอย่างยิ่งเพื่อความปลอดภัย VPN ควรเป็นทางออกที่ดีที่สุดซึ่งสามารถเข้ารหัสการรับส่งข้อมูลของเราและให้การอนุญาตรหัสผ่าน 2 ขั้นตอน


0

ไม่แน่ใจว่าทำไมไม่มีใครพูดถึงมัน แต่คุณควรสร้างคีย์ให้ยาวกว่า 1024 บิตเริ่มต้นซึ่งไม่ปลอดภัยอีกต่อไป

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