มีหลายวิธีในการเข้าสู่เซิร์ฟเวอร์ผ่าน SSH วิธีการรวมถึงการเข้าสู่ระบบด้วยรหัสผ่านการเข้าสู่ระบบด้วยคีย์และการรับรองความถูกต้องด้วยสองปัจจัย
การพิสูจน์ตัวตนแบบสองปัจจัยเป็นการป้องกันที่ดีกว่ามาก ในกรณีที่คอมพิวเตอร์ของคุณถูกโจมตีผู้โจมตีจะต้องใช้รหัสเข้าสู่ระบบเพื่อเข้าสู่ระบบ
ในบทช่วยสอนนี้คุณจะได้เรียนรู้วิธีตั้งค่าการตรวจสอบความถูกต้องด้วยสองปัจจัยบนเซิร์ฟเวอร์ Ubuntu โดยใช้ Google Authenticator และ SSH
ขั้นตอนที่ 1: ข้อกำหนดเบื้องต้น
- เซิร์ฟเวอร์ Ubuntu 14.04 (หรือใหม่กว่า)
- ผู้ใช้ที่ไม่ใช่รูทด้วยการเข้าถึง sudo
- โทรศัพท์สมาร์ทโฟน (Android หรือ iOS) ที่ติดตั้ง Google Authenticator App คุณยังสามารถใช้ Authy หรือแอพอื่น ๆ ที่สนับสนุนการลงชื่อเข้าใช้ TOTP
ขั้นตอนที่ 2: การติดตั้ง Google Authenticator Library
เราจำเป็นต้องติดตั้งโมดูลห้องสมุด Google Authenticator สำหรับ Ubuntu ซึ่งจะอนุญาตให้เซิร์ฟเวอร์อ่านและตรวจสอบรหัส รันคำสั่งต่อไปนี้
sudo apt-get update
sudo apt-get install libpam-google-authenticator
ในการกำหนดค่าโมดูลให้เรียกใช้คำสั่งต่อไปนี้
google-authenticator
เมื่อคุณเรียกใช้คำสั่งคุณจะถูกถามคำถามบางอย่าง คำถามแรกจะเป็น:
Do you want authentication tokens to be time-based (y/n)
กดy
และคุณจะได้รับรหัส QR, รหัสลับ, รหัสยืนยันและรหัสสำรองฉุกเฉิน
นำโทรศัพท์ออกและเปิดแอป Google Authenticator คุณสามารถสแกนรหัส QR หรือเพิ่มรหัสลับเพื่อเพิ่มรายการใหม่ เมื่อคุณทำเช่นนั้นแล้วให้จดรหัสสำรองไว้และเก็บไว้ในที่ปลอดภัย ในกรณีที่โทรศัพท์ของคุณถูกวางผิดที่หรือเสียหายคุณสามารถใช้รหัสเหล่านั้นเพื่อเข้าสู่ระบบ
สำหรับคำถามที่เหลือให้กดy
เมื่อถูกขอให้อัปเดต.google_authenticator
ไฟล์y
เพื่อไม่อนุญาตให้ใช้โทเค็นเดียวกันหลายครั้งn
เพื่อเพิ่มเวลาหน้าต่างและy
เปิดใช้งานการ จำกัด อัตรา
คุณจะต้องทำซ้ำขั้นตอนที่ 3 สำหรับผู้ใช้ทั้งหมดในเครื่องของคุณไม่เช่นนั้นพวกเขาจะไม่สามารถเข้าสู่ระบบได้เมื่อคุณผ่านบทช่วยสอนนี้
ตอนนี้ผู้ใช้ทุกคนในเครื่องของคุณได้ติดตั้งแอป Google authenticator แล้วถึงเวลาที่จะกำหนดค่า SSH ให้ใช้วิธีการตรวจสอบสิทธิ์นี้กับแอพที่ใช้อยู่
ป้อนคำสั่งต่อไปนี้เพื่อแก้ไขsshd
ไฟล์
sudo nano /etc/pam.d/sshd
ค้นหาบรรทัด@include common-auth
และแสดงความคิดเห็นเช่นด้านล่าง
# Standard Un*x authentication.
#@include common-auth
เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์นี้
auth required pam_google_authenticator.so
กดCtrl + X
เพื่อบันทึกและออก
จากนั้นป้อนคำสั่งต่อไปนี้เพื่อแก้ไขsshd_config
ไฟล์
sudo nano /etc/ssh/sshd_config
ค้นหาคำและการตั้งค่าของChallengeResponseAuthentication
yes
ยังหาคำPasswordAuthentication
, uncomment no
มันและเปลี่ยนค่าของ
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
ขั้นตอนต่อไปคือการเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์
AuthenticationMethods publickey,keyboard-interactive
Ctrl + X
บันทึกและปิดแฟ้มโดยการกด ตอนนี้เราได้กำหนดค่าเซิร์ฟเวอร์ SSH ให้ใช้ Google Authenticator แล้วถึงเวลาที่ต้องรีสตาร์ท
sudo service ssh restart
ลองเข้าสู่ระบบกลับสู่เซิร์ฟเวอร์ ครั้งนี้คุณจะถูกขอรหัส Authenticator ของคุณ
ssh user@serverip
Authenticated with partial success.
Verification code:
ป้อนรหัสที่แอปของคุณสร้างขึ้นและคุณจะลงชื่อเข้าใช้ได้สำเร็จ
บันทึก
ในกรณีที่คุณทำโทรศัพท์หายให้ใช้รหัสสำรองจากขั้นตอนที่ 2 หากคุณทำรหัสสำรองหายคุณสามารถค้นหาได้ใน.google_authenticator
ไฟล์ภายใต้โฮมไดเร็กตอรี่ของผู้ใช้หลังจากคุณเข้าสู่ระบบผ่านคอนโซล Vultr
ข้อสรุป
การมีการพิสูจน์ตัวตนแบบหลายปัจจัยช่วยปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ของคุณอย่างมากและช่วยให้คุณสามารถป้องกันการโจมตีแบบเดรัจฉาน
รุ่นอื่น ๆ