ค้นหาเว็บไซต์

วิธีรักษาความปลอดภัยและทำให้เซิร์ฟเวอร์ OpenSSH แข็งแกร่งขึ้น


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

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

1. ตั้งค่าการตรวจสอบสิทธิ์แบบไม่ใช้รหัสผ่าน SSH

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

ขั้นตอนแรกคือการสร้างคู่คีย์ SSH ซึ่งประกอบด้วย คีย์สาธารณะ และ คีย์ส่วนตัว คีย์ส่วนตัว อยู่บนระบบโฮสต์ของคุณ ในขณะที่ คีย์สาธารณะ จะถูกคัดลอกไปยังเซิร์ฟเวอร์ระยะไกล

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

ขั้นตอนต่อไปคือการปิดใช้งานการตรวจสอบสิทธิ์ด้วยรหัสผ่าน เพื่อให้บรรลุเป้าหมายนี้ คุณจะต้องแก้ไขไฟล์การกำหนดค่า SSH

sudo vim /etc/ssh/sshd_config

ภายในไฟล์การกำหนดค่า ให้เลื่อนและค้นหาคำสั่งต่อไปนี้ ยกเลิกการแสดงความคิดเห็นและเปลี่ยนตัวเลือก 'yes' เป็น 'no'

PasswordAuthentication no

จากนั้นรีสตาร์ท SSH daemon

sudo systemctl restart sshd

ณ จุดนี้ คุณจะสามารถเข้าถึงเซิร์ฟเวอร์ระยะไกลได้โดยใช้การรับรองความถูกต้องของคีย์ SSH เท่านั้น

2. ปิดการใช้งานคำขอการเชื่อมต่อ SSH แบบไม่ต้องใช้รหัสผ่านของผู้ใช้

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

หากต้องการปฏิเสธคำขอจากผู้ใช้ที่ไม่มีรหัสผ่าน ให้ไปที่ไฟล์การกำหนดค่าที่ /etc/ssh/sshd_config และตรวจสอบว่าคุณมีคำสั่งด้านล่าง:

PermitEmptyPasswords no

จากนั้นรีสตาร์ทบริการ SSH เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart sshd

3. ปิดการใช้งานการเข้าสู่ระบบรูท SSH

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

ด้วยเหตุนี้ ขอแนะนำเสมอให้คุณปิดใช้งานการเข้าสู่ระบบรูทระยะไกลด้วย SSH และยึดติดกับผู้ใช้ที่ไม่ใช่รูททั่วไปแทน ตรงไปที่ไฟล์กำหนดค่าอีกครั้งและแก้ไขบรรทัดนี้ตามที่แสดง

PermitRootLogin no

เมื่อเสร็จแล้ว ให้รีสตาร์ทบริการ SSH เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart sshd

ต่อจากนี้ไป การเข้าสู่ระบบรูทระยะไกลจะถูกปิดใช้งาน

4. ใช้โปรโตคอล SSH 2

SSH มีสองเวอร์ชัน: SSH โปรโตคอล 1 และ โปรโตคอล 2 SSH โปรโตคอล 2 เปิดตัวในปี 2549 และมีความปลอดภัยมากกว่า โปรโตคอล 1 เนื่องจากการตรวจสอบการเข้ารหัสที่แข็งแกร่ง การเข้ารหัสจำนวนมาก และอัลกอริธึมที่แข็งแกร่ง

ตามค่าเริ่มต้น SSH จะใช้ โปรโตคอล 1 หากต้องการเปลี่ยนให้เป็น โปรโตคอล 2 ที่ปลอดภัยยิ่งขึ้น ให้เพิ่มบรรทัดด้านล่างลงในไฟล์การกำหนดค่า:

Protocol 2

เช่นเคย ให้รีสตาร์ท SSH เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart sshd

นับจากนี้ไป SSH จะใช้ โปรโตคอล 2 เป็นค่าเริ่มต้น

หากต้องการทดสอบว่ารองรับ SSH โปรโตคอล 1 อีกต่อไปหรือไม่ ให้รันคำสั่ง:

ssh -1 user@remote-IP

คุณจะได้รับข้อผิดพลาดแจ้งว่า “ไม่รองรับโปรโตคอล SSH v.1 อีกต่อไป

ในกรณีนี้ คำสั่งคือ:

ssh -1 [email 

นอกจากนี้ คุณยังสามารถระบุแท็ก -2 เพียงเพื่อให้แน่ใจว่า โปรโตคอล 2 เป็นโปรโตคอลเริ่มต้นที่ใช้งานอยู่

ssh -2 [email 

5. ตั้งค่าไม่ได้ใช้งานการหมดเวลาการเชื่อมต่อ SSH

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

เปิดไฟล์การกำหนดค่า SSH ของคุณอีกครั้งและค้นหาคำสั่ง “ClientAliveInterval” กำหนดค่าที่สมเหตุสมผล เช่น ฉันตั้งค่าขีดจำกัดไว้ที่ 180 วินาที

ClientAliveInterval 180

นี่หมายความว่าเซสชัน SSH จะหายไปหากไม่มีกิจกรรมใดถูกลงทะเบียนหลังจาก 3 นาที ซึ่งเท่ากับ 180 วินาที

จากนั้นรีสตาร์ท SSH daemon เพื่อให้การเปลี่ยนแปลงเกิดขึ้น

sudo systemctl restart sshd

6. จำกัดการเข้าถึง SSH ให้กับผู้ใช้บางราย

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

เช่นเคย ให้เปิดไฟล์การกำหนดค่าและเพิ่มคำสั่ง “AllowUsers” ตามด้วยชื่อผู้ใช้ที่คุณต้องการอนุญาต ในตัวอย่างด้านล่าง ฉันอนุญาตให้ผู้ใช้ 'tecmint' และ 'james' สามารถเข้าถึงระบบจากระยะไกลผ่าน SSH ผู้ใช้รายอื่นที่พยายามเข้าถึงระยะไกลจะถูกบล็อก

AllowUsers tecmint james

หลังจากนั้นให้รีสตาร์ท SSH เพื่อให้การเปลี่ยนแปลงยังคงอยู่

sudo systemctl restart sshd

7. กำหนดค่าขีดจำกัดสำหรับการพยายามใช้รหัสผ่าน

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

ในตัวอย่างนี้ ขีดจำกัดได้รับการตั้งค่าไว้ที่ 3 ครั้งดังที่แสดง

MaxAuthTries 3

และสุดท้าย ให้เริ่มบริการ SSH ใหม่เหมือนในสถานการณ์ก่อนหน้านี้

คุณอาจพบว่าบทความที่เกี่ยวข้องกับ SSH ต่อไปนี้มีประโยชน์:

  • วิธีการติดตั้งเซิร์ฟเวอร์ OpenSSH 8.0 จาก Source ใน Linux
  • วิธีการติดตั้ง Fail2Ban เพื่อปกป้อง SSH บน CentOS/RHEL 8
  • วิธีการเปลี่ยนพอร์ต SSH ใน Linux
  • วิธีสร้าง SSH Tunneling หรือการส่งต่อพอร์ตใน Linux
  • 4 วิธีในการเพิ่มความเร็วการเชื่อมต่อ SSH ใน Linux
  • วิธีค้นหาความพยายามเข้าสู่ระบบ SSH ที่ล้มเหลวทั้งหมดใน Linux
  • วิธียกเลิกการเชื่อมต่อ SSH ที่ไม่ได้ใช้งานหรือไม่ได้ใช้งานใน Linux
บทสรุป

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