วิธีการตั้งค่าการรับรองความถูกต้องแบบสองปัจจัยสำหรับ SSH บน Fedora
ทุกวันดูเหมือนจะมีการรายงานการละเมิดความปลอดภัยจำนวนมากซึ่งข้อมูลของเราตกอยู่ในอันตราย แม้ว่า SSH จะเป็นวิธีที่ปลอดภัยในการสร้างการเชื่อมต่อกับระบบ Linux จากระยะไกล แต่ผู้ใช้ที่ไม่รู้จักสามารถเข้าถึงเครื่อง Linux ของคุณได้หากพวกเขาขโมยคีย์ SSH ของคุณ แม้ว่าคุณจะปิดใช้งานรหัสผ่านหรืออนุญาตเฉพาะการเชื่อมต่อ SSH ผ่าน กุญแจสาธารณะและส่วนตัว
ในบทความนี้ เราจะอธิบายวิธีตั้งค่าการตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) สำหรับ SSH บน Fedora Linux โดยใช้ Google Authenticator เพื่อเข้าถึง ระบบ Linux ระยะไกลในวิธีที่ปลอดภัยยิ่งขึ้นโดยระบุหมายเลข TOTP (รหัสผ่านแบบใช้ครั้งเดียวตามเวลา) ที่สร้างขึ้นแบบสุ่มโดยแอปพลิเคชันตรวจสอบความถูกต้องบนอุปกรณ์เคลื่อนที่
อ่านเพิ่มเติม: วิธีตั้งค่าการตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับการเข้าสู่ระบบ SSH ใน CentOS และ Debian
โปรดทราบว่า คุณสามารถใช้แอปพลิเคชันการตรวจสอบสิทธิ์แบบสองทางสำหรับอุปกรณ์เคลื่อนที่ของคุณที่เข้ากันได้กับอัลกอริทึม TOTP มีแอปฟรีมากมายสำหรับ Android หรือ IOS ที่รองรับ TOTP และ Google Authenticator แต่บทความนี้ใช้ Google Authenticator เป็นตัวอย่าง
การติดตั้ง Google Authenticator บน Fedora
ขั้นแรก ติดตั้งแอปพลิเคชัน Google Authenticator บนเซิร์ฟเวอร์ Fedora ของคุณโดยใช้คำสั่ง dnf ต่อไปนี้
sudo dnf install -y google-authenticator
เมื่อติดตั้ง Google Authenticator แล้ว คุณสามารถเรียกใช้แอปพลิเคชันได้ทันที
google-authenticator
แอปพลิเคชันจะแจ้งให้คุณมีคำถามหลายข้อ ตัวอย่างต่อไปนี้แสดงวิธีตอบคำถามสำหรับการตั้งค่าที่ปลอดภัยพอสมควร
Do you want authentication tokens to be time-based (y/n) y
Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y
แอปพลิเคชันจะให้รหัสลับ รหัสยืนยัน และรหัสกู้คืนแก่คุณ เก็บคีย์เหล่านี้ไว้ในตำแหน่งที่ปลอดภัย เนื่องจากคีย์เหล่านี้เป็นวิธีเดียวในการเข้าถึงเซิร์ฟเวอร์ของคุณหากคุณทำอุปกรณ์เคลื่อนที่หาย
การตั้งค่าการตรวจสอบสิทธิ์โทรศัพท์มือถือ
บนโทรศัพท์มือถือของคุณ ไปที่ App Store Google Play หรือ iTunes และค้นหา Google Authenticator และติดตั้งแอปพลิเคชัน
ตอนนี้ให้เปิดแอปพลิเคชัน Google Authenticator บนโทรศัพท์มือถือของคุณ และสแกนโค้ด QR ที่แสดงบนหน้าจอเทอร์มินัลของ Fedora เมื่อการสแกนโค้ด QR เสร็จสิ้น คุณจะได้รับหมายเลขที่สร้างขึ้นแบบสุ่มโดยแอปพลิเคชันตรวจสอบความถูกต้อง และใช้หมายเลขนี้ทุกครั้งที่คุณเชื่อมต่อกับเซิร์ฟเวอร์ Fedora ของคุณจากระยะไกล
เสร็จสิ้นการกำหนดค่า Google Authenticator
แอปพลิเคชัน Google Authenticator จะถามคำถามเพิ่มเติม และตัวอย่างต่อไปนี้จะแสดงวิธีตอบคำถามเพื่อตั้งค่าการกำหนดค่าที่ปลอดภัย
ตอนนี้คุณต้องกำหนดค่า SSH เพื่อใช้การตรวจสอบสิทธิ์แบบสองทางใหม่ตามที่อธิบายไว้ด้านล่าง
กำหนดค่า SSH เพื่อใช้ Google Authenticator
หากต้องการกำหนดค่า SSH ให้ใช้แอปพลิเคชัน ตัวตรวจสอบสิทธิ์ ขั้นแรกคุณต้องมีการเชื่อมต่อ SSH ที่ใช้งานได้โดยใช้คีย์ SSH สาธารณะ เนื่องจากเราจะปิดใช้งานการเชื่อมต่อด้วยรหัสผ่าน
เปิดไฟล์ /etc/pam.d/sshd บนเซิร์ฟเวอร์ของคุณ
sudo vi /etc/pam.d/sshd
ใส่เครื่องหมายความคิดเห็นในบรรทัด auth substackpassword-auth
ในไฟล์
#auth substack password-auth
จากนั้นวางบรรทัดต่อไปนี้ที่ส่วนท้ายของไฟล์
auth sufficient pam_google_authenticator.so
บันทึกและปิดไฟล์
จากนั้น เปิดและแก้ไขไฟล์ /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
ค้นหาบรรทัด ChallengeResponseAuthentication
และเปลี่ยนเป็น yes
ChallengeResponseAuthentication yes
ค้นหาบรรทัด PasswordAuthentication
และเปลี่ยนเป็น no
PasswordAuthentication no
จากนั้นวางบรรทัดต่อไปนี้ที่ส่วนท้ายของไฟล์
AuthenticationMethods publickey,password publickey,keyboard-interactive
บันทึกและปิดไฟล์ จากนั้นรีสตาร์ท SSH
sudo systemctl restart sshd
ทดสอบการรับรองความถูกต้องด้วยสองปัจจัยบน Fedora
ตอนนี้ลองเชื่อมต่อกับเซิร์ฟเวอร์ของคุณจากระยะไกล ระบบจะขอให้คุณป้อนรหัสยืนยัน
ssh [email
Verification code:
รหัสยืนยันถูกสร้างขึ้นแบบสุ่มบนโทรศัพท์มือถือของคุณโดยแอปพลิเคชันตรวจสอบสิทธิ์ของคุณ เนื่องจากโค้ดที่สร้างขึ้นเปลี่ยนแปลงทุกๆ สองสามวินาที คุณต้องป้อนอย่างรวดเร็วก่อนจึงจะสร้างโค้ดใหม่ได้
หากคุณป้อนรหัสยืนยันผิด คุณจะไม่สามารถเชื่อมต่อกับระบบได้ และคุณจะได้รับข้อผิดพลาดการอนุญาตถูกปฏิเสธดังต่อไปนี้
ssh [email
Verification code:
Verification code:
Verification code:
Permission denied (keyboard-interactive).
บทสรุป
ด้วยการใช้การรับรองความถูกต้องสองทางที่ง่ายดายนี้ คุณได้เพิ่มการรักษาความปลอดภัยอีกชั้นหนึ่งให้กับระบบของคุณ และยังทำให้ผู้ใช้ที่ไม่รู้จักเข้าถึงเซิร์ฟเวอร์ของคุณได้ยากขึ้นอีกด้วย