การรับรองความถูกต้องด้วยสองปัจจัยสำหรับ SSH

“Secure Shell” SSH เป็นโปรโตคอลเครือข่ายสำหรับสร้างการเชื่อมต่อที่ปลอดภัยระหว่างโฮสต์ ตามมาตรฐานบนพอร์ต 22 (ซึ่งควรเปลี่ยนดีกว่า) ไคลเอนต์ SSH และเซิร์ฟเวอร์ SSH พร้อมใช้งานสำหรับระบบปฏิบัติการส่วนใหญ่ โปรโตคอลเครือข่ายอื่น ๆ เกือบทั้งหมดทำงานได้ภายใน SSH นั่นคือคุณสามารถทำงานจากระยะไกลบนคอมพิวเตอร์เครื่องอื่น ส่งสตรีมเสียงหรือวิดีโอผ่านช่องทางที่เข้ารหัส ฯลฯ นอกจาก, ผ่านพร็อกซี SOCKS บนโฮสต์ระยะไกล คุณสามารถเชื่อมต่อกับโฮสต์อื่นในนามของโฮสต์ระยะไกลนี้ได้

การรับรองความถูกต้องเกิดขึ้นโดยใช้รหัสผ่าน แต่นักพัฒนาและผู้ดูแลระบบมักจะใช้คีย์ SSH ปัญหาคือคีย์ส่วนตัวสามารถถูกขโมยได้ การเพิ่มข้อความรหัสผ่านในทางทฤษฎีจะป้องกันการโจรกรรมคีย์ส่วนตัว แต่ในทางปฏิบัติ เมื่อทำการส่งต่อและแคชคีย์ ยังสามารถใช้งานได้โดยไม่ต้องมีการยืนยัน. การรับรองความถูกต้องด้วยสองปัจจัยช่วยแก้ปัญหานี้ได้

วิธีการใช้การรับรองความถูกต้องด้วยสองปัจจัย

นักพัฒนาจาก Honeycomb เพิ่งเผยแพร่ คำแนะนำโดยละเอียดวิธีใช้โครงสร้างพื้นฐานที่เหมาะสมบนไคลเอนต์และเซิร์ฟเวอร์

คำแนะนำจะถือว่าคุณมีโฮสต์พื้นฐานบางตัวที่เปิดสู่อินเทอร์เน็ต (ป้อมปราการ) คุณต้องการเชื่อมต่อโฮสต์นี้จากแล็ปท็อปหรือคอมพิวเตอร์ผ่านทางอินเทอร์เน็ต และเข้าถึงอุปกรณ์อื่นๆ ทั้งหมดที่อยู่ด้านหลังโฮสต์นี้ 2FA ทำให้แน่ใจว่าผู้โจมตีไม่สามารถทำเช่นเดียวกันได้ แม้ว่าพวกเขาจะสามารถเข้าถึงแล็ปท็อปของคุณได้ เช่น โดยการติดตั้งมัลแวร์

ตัวเลือกแรกคือ OTP

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

ในกรณีนี้ ทางฝั่งเซิร์ฟเวอร์ บรรทัดต่อไปนี้จะถูกเขียนลงในการกำหนดค่า Chef:

  • metadata.rb
  • attributes/default.rb (ของ attributes.rb)
  • files/sshd
  • recipes/default.rb (คัดลอกมาจาก recipe.rb)
  • templates/default/users.oath.erb

แอปพลิเคชัน OTP ใด ๆ ได้รับการติดตั้งบนฝั่งไคลเอ็นต์: ติดตั้ง Google Authenticator, Authy, Duo, Lastpass แล้ว brew install oath-toolkit หรือ apt install oathtool opensslจากนั้นสตริง base16 (คีย์) แบบสุ่มจะถูกสร้างขึ้น จะถูกแปลงเป็นรูปแบบ Base32 ที่ผู้ตรวจสอบความถูกต้องบนมือถือใช้และนำเข้าไปยังแอปพลิเคชันโดยตรง

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

➜ ssh -A bastion
Enter passphrase for key '[snip]': 
One-time password (OATH) for '[user]': 
Welcome to Ubuntu 18.04.1 LTS...

ตัวเลือกที่สองคือการรับรองความถูกต้องของฮาร์ดแวร์

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

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

เจ้าของ iOS และ Android ยืนยันการเข้าสู่ระบบ โดยการกดปุ่มเดียวบนสมาร์ทโฟนของคุณ. นี่เป็นเทคโนโลยีพิเศษจาก Krypt.co ซึ่งมีความปลอดภัยมากกว่า OTP

บน Linux/ChromeOS มีตัวเลือกให้ทำงานกับโทเค็น YubiKey USB แน่นอนว่าผู้โจมตีสามารถขโมยโทเค็นของคุณได้ แต่เขาก็ยังไม่รู้ข้อความรหัสผ่าน

ที่มา: will.com

เพิ่มความคิดเห็น