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

วิธีการตั้งค่าการรับรองความถูกต้องแบบสองปัจจัยสำหรับ 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).
บทสรุป

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