ข้อกังวลที่ใหญ่ที่สุดคือคนที่ลงชื่อเข้าใช้ในฐานะผู้ดูแลระบบของคอมพิวเตอร์ผ่าน SSH สิ่งนี้สามารถทำได้โดยการใช้กำลังดุร้ายถ้าคุณเดารหัสผ่านได้ง่าย
มีมาตรการด้านความปลอดภัยหลายประการที่คุณสามารถทำได้ด้านล่างคือมาตรการบางอย่างที่ฉันมักจะทำเมื่อตั้งค่าเซิร์ฟเวอร์ SSH และพิเศษบางอย่าง
ใช้รหัสผ่านที่คาดเดายากซึ่งประกอบด้วยตัวอักษรตัวเล็กและตัวใหญ่ตัวเลขและตัวอักษรอื่น ๆ อย่างน้อย 10 ตัว
ผู้ใช้คุกไปยังไดเรกทอรีบ้านของพวกเขา ผู้ใช้ที่ถูกคุมขังจะไม่สามารถเข้าถึง / แก้ไขไฟล์ที่อยู่นอกโฮมไดเร็กตอรี่ของพวกเขาได้ ดังนั้นผู้ใช้ของคุณจะไม่สามารถเข้าถึง / แก้ไขไฟล์ระบบกุญแจ บทเรียนจำนวนมากสามารถพบได้ทั่วไปในการจำคุกผู้ใช้ ส่วนใหญ่ของพวกเขาใช้JailKit ตัวอย่างของการกวดวิชาดังกล่าวสามารถพบได้ที่นี่ หรือคุณสามารถใช้ChrootDirectory
คำสั่งพื้นฐานของ OpenSSH- เซิร์ฟเวอร์ ตัวอย่างของการกวดวิชาเกี่ยวกับเรื่องนี้สามารถพบได้ที่นี่
ติดตั้งfail2ban Fail2Ban เป็นโปรแกรมที่ตรวจสอบบันทึกการรับรองความถูกต้องสำหรับรายการที่ไม่ถูกต้อง เมื่อถึงขีด จำกัด ที่กำหนดไว้แล้วมันจะเพิ่มบล็อกไฟร์วอลล์สำหรับ IP นั้น ๆ ตามระยะเวลาที่กำหนดไว้ มีพบได้ทั่วไปนอกจากนี้ยังมีบทเรียนออนไลน์หลายประการเกี่ยวกับวิธีการตั้งค่า fail2ban กับ SSH ตัวอย่างจะเป็นคนนี้ โฮมเพจ Fail2Ban มี HOWTO ที่สมบูรณ์และสวยงามเช่นกัน
ปิดใช้งานการล็อกอินรูทผ่าน SSH นี่คือผู้ใช้ที่มีการเข้าถึงไฟล์ในระบบของคุณได้ค่อนข้างดีดังนั้นจึงขอแนะนำให้ปิดการใช้งานเชลล์ล็อกอิน ใน Ubuntu รุ่นล่าสุดผู้ใช้รูทจะถูกปิดการใช้งานโดยอัตโนมัติ แต่ก็ไม่เจ็บที่จะปิดการใช้งานการเข้าถึง SSH /etc/ssh/sshd_config
นี้จะกระทำโดยการแก้ไขไฟล์ ✝ค้นหาบรรทัดต่อไปนี้และตรวจสอบให้แน่ใจว่าไม่มี # อยู่ด้านหน้า
#PermitRootLogin no
ใช้พอร์ตที่ไม่ได้มาตรฐาน (เช่นไม่ใช่ 22) สิ่งนี้ทำได้ผ่านการส่งต่อพอร์ตในเราเตอร์ของคุณ (เช่น 16121 -> 22 แทนที่จะเป็น 22 -> 22) หรือโดยทำให้ SSH daemon ฟังพอร์ตอื่น สิ่งนี้จะทำให้บริการ SSH ของคุณตรวจจับผู้ใช้ที่เป็นอันตรายได้ง่ายขึ้น /etc/ssh/sshd_config
นี้จะกระทำโดยการแก้ไขไฟล์ ✝ค้นหาบรรทัดต่อไปนี้และเปลี่ยน 22 เป็นพอร์ตใดก็ได้ที่คุณต้องการ อย่าลืมส่งต่อพอร์ตที่ถูกต้องในเราเตอร์ของคุณในภายหลัง
Port 22
อย่าใช้รหัสผ่านเพื่อเข้าสู่ระบบนอกจากรหัสผ่าน SSH ยังอนุญาตการเข้าสู่ระบบโดยการใช้คีย์ส่วนตัว หมายความว่ามีการจัดเก็บคีย์ไว้ในคอมพิวเตอร์ที่คุณเข้าถึง SSH ของเครื่อง SSH เมื่อพยายามเชื่อมต่อไคลเอนต์ SSH ใช้คีย์เพื่อเข้าสู่เซิร์ฟเวอร์แทนการตรวจสอบรหัสผ่าน คีย์การรับรองความถูกต้องจะแข็งแกร่งกว่าการเข้ารหัสลับรหัสผ่านดังนั้นจึงไม่ง่ายที่จะถอดรหัส มีพบได้ทั่วไปนอกจากนี้ยังมีบทเรียนออนไลน์หลายประการเกี่ยวกับวิธีการตั้งค่าการตรวจสอบตามที่สำคัญกับ SSH ตัวอย่างจะเป็นคนนี้ (ถ้าคุณ SSH จากหน้าต่างฉาบตรวจสอบการเชื่อมโยงนี้สำหรับ HOWTO ฉาบ.) /etc/ssh/sshd_config
หลังจากที่คุณได้ตั้งค่าการตรวจสอบคีย์ตามที่คุณสามารถปิดการใช้งานตรวจสอบรหัสผ่านโดยการแก้ไขไฟล์ ✝ ค้นหาบรรทัดต่อไปนี้และตรวจสอบให้แน่ใจว่าไม่มี # อยู่ด้านหน้า
#PasswordAuthentication no
เป็นทางเลือกตามที่ @ Linker3000 พูดถึงในความคิดเห็นของเขาคุณสามารถตั้งค่าอุโมงค์ VPNไปยังพีซีที่คุณต้องการเข้าถึงผ่าน SSH จากนั้นไม่อนุญาตการเข้าถึงเครือข่ายที่ไม่ใช่แบบโลคัลบนเซิร์ฟเวอร์ SSH ด้วยวิธีนี้ไม่มีอุปกรณ์ภายนอกที่ไม่มีการเชื่อมต่อ VPN จะสามารถเข้าถึงเซิร์ฟเวอร์ SSH ของคุณ สิ่งนี้สามารถทำได้โดยการปฏิเสธโฮสต์ทั้งหมดจากนั้นอนุญาตเฉพาะ IP เครือข่ายท้องถิ่นเพื่อเข้าสู่ระบบ สิ่งนี้ทำได้โดยการแก้ไข/etc/hosts.deny
และเพิ่มสิ่งต่อไปนี้:
sshd: ALL
และเพื่อ/etc/hosts.allow
เพิ่มสิ่งต่อไปนี้:
sshd: 192.168.1.*
ที่ IP ตรงกับเครือข่ายท้องถิ่นของคุณ *
เป็นสัญลักษณ์แทนดังนั้นที่อยู่ IP ทั้งหมดที่เริ่มต้นด้วย192.168.1.
จะได้รับการยอมรับ หากยังไม่สามารถทำงานการกระจายของคุณอาจใช้แทนssh
sshd
ในกรณีที่คุณควรลองssh: 192.168.1.*
และssh: ALL
แทน
คุณสามารถอนุญาตโฮสต์ที่เจาะจงเท่านั้นให้ทำเช่นเดียวกันกับ/etc/hosts.allow
และ/etc/hosts.deny
ตามที่อธิบายไว้ใน 6 แต่ในการ/etc/hosts.allow
เพิ่มบรรทัดต่อไปนี้และทุกโฮสต์จะอนุญาตให้แยกด้วยช่องว่าง:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
อนุญาตให้เฉพาะผู้ใช้เฉพาะในการเข้าถึงเซิร์ฟเวอร์ SSH ของคุณ /etc/ssh/sshd_config
นี้จะกระทำโดยการแก้ไขไฟล์ ✝ค้นหาบรรทัดต่อไปนี้และตรวจสอบให้แน่ใจว่าไม่มี # อยู่ด้านหน้า หากไม่มีอยู่ให้สร้างขึ้น ตัวอย่างเช่นหากคุณต้องการอนุญาตให้ john, tom and mary เท่านั้นเพิ่ม / แก้ไขบรรทัดนี้:
AllowUsers john tom mary
คุณสามารถปฏิเสธผู้ใช้ที่เฉพาะเจาะจงได้เช่นหากคุณต้องการปฏิเสธการเข้าถึง john, tom and mary ให้เพิ่ม / แก้ไขบรรทัดนี้:
DenyUsers john tom mary
อนุญาตโปรโตคอล SSH2 สำหรับการเชื่อมต่อขาเข้าเท่านั้น โปรโตคอล SSH มีสองรุ่น SSH1 ขึ้นอยู่กับปัญหาด้านความปลอดภัยดังนั้นแนะนำให้ใช้ SSH 2 /etc/ssh/sshd_config
นี้สามารถบังคับโดยการแก้ไขไฟล์ ✝ค้นหาบรรทัดต่อไปนี้และตรวจสอบให้แน่ใจว่าไม่มี # อยู่ด้านหน้า หากไม่มีอยู่ให้สร้างขึ้น
Protocol 2,1
ลบ 1 ดังนั้นบรรทัดจะเป็น
Protocol 2
ไม่อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้ที่ไม่มีการตั้งรหัสผ่าน /etc/ssh/sshd_config
นี้สามารถบังคับโดยการแก้ไขไฟล์ ✝ค้นหาบรรทัดต่อไปนี้และตรวจสอบให้แน่ใจว่าไม่มี # อยู่ด้านหน้า หากไม่มีอยู่ให้สร้างขึ้น
PermitEmptyPasswords no
และถึงแม้ว่าจะง่ายและไม่จำเป็นต้องพูด แต่ได้พิสูจน์แล้วว่ามีความสำคัญในหลาย ๆ กรณีให้ปรับปรุงซอฟต์แวร์ของคุณให้ทันสมัยอยู่เสมอ อัปเดตแพคเกจ / ซอฟต์แวร์ที่ติดตั้งเป็นประจำ