วิธีตั้งค่า Zero Trust SSH เข้าถึงระยะไกลด้วย OpenSSH Certificate Authority บน Linux อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีตั้งค่า Zero Trust SSH เข้าถึงระยะไกลด้วย OpenSSH Certificate Authority บน Linux อย่างปลอดภัย

⚡ สรุป 30 วิ

Zero Trust SSH เป็นแนวคิดที่ไม่ให้ความเชื่อใด ๆ โดยอัตโนมัติ การยืนยันตัวตนต้องอาศัยใบรับรอง (certificate) ที่ออกโดย CA เท่านั้น บน Linux เราสามารถใช้ OpenSSH Certificate Authority (CA) สร้างระบบนี้ได…

ภาพรวม — Overview

Zero Trust SSH เป็นแนวคิดที่ไม่ให้ความเชื่อใด ๆ โดยอัตโนมัติ การยืนยันตัวตนต้องอาศัยใบรับรอง (certificate) ที่ออกโดย CA เท่านั้น บน Linux เราสามารถใช้ OpenSSH Certificate Authority (CA) สร้างระบบนี้ได้อย่างง่ายและปลอดภัย

  • Zero Trust หมายถึง “ไม่เชื่อใครจนกว่าจะพิสูจน์”
  • OpenSSH CA ให้การจัดการคีย์แบบศูนย์กลาง ลดความซับซ้อนของ SSH keys ปกติ
  • ระบบนี้เหมาะกับองค์กรที่ต้องควบคุมการเข้าถึงเซิร์ฟเวอร์หลายเครื่อง
**Tip: เริ่มต้นด้วยระบบทดสอบก่อนนำไปใช้ใน production เพื่อหลีกเลี่ยงการตัดการเชื่อมต่อโดยไม่ตั้งใจ

สิ่งจำเป็นล่วงหน้า — Prerequisites

เพื่อทำตามขั้นตอนนี้ คุณต้องมีเครื่อง Linux ที่ติดตั้ง OpenSSH เวอร์ชัน 7.2 ขึ้นไป และสิทธิ์ `root` หรือ `sudo` บนเซิร์ฟเวอร์ที่ทำหน้าที่เป็น CA

  • ระบบปฏิบัติการ: Ubuntu 20.04+, CentOS 8+, Debian 10+ ฯลฯ
  • OpenSSH รุ่นล่าสุด (`ssh -V`)
  • พื้นฐานการใช้งาน Linux shell และไฟล์ระบบ

สร้างคู่คีย์ของ CA — Create CA Key Pair

CA ต้องมีคีย์ส่วนตัวหนึ่งคู่เพื่อออกใบรับรอง เราจะเก็บคีย์นี้ในตำแหน่งที่ปลอดภัยและจำกัดสิทธิ์การเข้าถึง

  • **ขั้นตอนที่ 1: สร้างคีย์ RSA 4096 บิต

``` sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ca_key -N ```

  • **ขั้นตอนที่ 2: ตั้งสิทธิ์ให้เฉพาะ root สามารถอ่านได้ (`chmod 600`)
**Tip: อย่าเก็บคีย์ CA ไว้ในโฟลเดอร์ผู้ใช้ทั่วไป เพื่อป้องกันการขโมย

สร้างใบรับรองสำหรับเซิร์ฟเวอร์ (Host Certificate) — Issue Host Certificates

แต่ละเครื่องที่ต้องให้บริการ SSH จะต้องมีใบรับรองจาก CA แทนคีย์ host ธรรมดา

  • **ขั้นตอนที่ 1: บนเครื่อง server ให้สร้างคีย์ host ปกติ

``` sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ```

  • **ขั้นตอนที่ 2: ใช้คีย์ CA sign ใบรับรอง host

``` sudo ssh-keygen -s /etc/ssh/ca_key \ -I $(hostname)-host \ -h -n $(hostname) \ -V +52w \ -z 1 \ /etc/ssh/ssh_host_rsa_key.pub ```

**Tip: ตัวเลือก `-V +52w` กำหนดอายุใบรับรองเป็น 52 สัปดาห์ ปรับตามนโยบายขององค์กร

สร้างใบรับรองสำหรับผู้ใช้ (User Certificate) — Issue User Certificates

ผู้ใช้ต้องมีคีย์ส่วนตัวและใบรับรองที่ CA ลงนามเพื่อให้เข้าสู่ระบบได้

  • **ขั้นตอนที่ 1: ผู้ใช้สร้างคีย์ส่วนตัวบนเครื่องของตนเอง

``` ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ```

  • **ขั้นตอนที่ 2: ผู้ดูแล CA sign คีย์ผู้ใช้และกำหนดสิทธิ์ (principals)

``` sudo ssh-keygen -s /etc/ssh/ca_key \ -I user1-cert \ -n user1 \ -V +30d \ -z 1 \ ~/.ssh/id_ed25519.pub ```

**Tip: สามารถใส่หลาย `-n` เพื่อให้ใบรับรองใช้ได้กับหลายผู้ใช้ในครั้งเดียว

ตั้งค่า SSH Daemon ให้ยอมรับ CA — Configure sshd

เซิร์ฟเวอร์ต้องรู้ตำแหน่งไฟล์ CA public key และบังคับให้ใช้ certificate เท่านั้น

  • แก้ไข `/etc/ssh/sshd_config` เพิ่มบรรทัดต่อไปนี้

``` TrustedUserCAKeys /etc/ssh/ca_key.pub HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub PasswordAuthentication no PubkeyAuthentication yes ```

  • รีสตาร์ทบริการ SSH

``` sudo systemctl restart sshd ```

**Tip: ตรวจสอบไฟล์ config ด้วย `sshd -t` ก่อนรีสตาร์ทเพื่อหลีกเลี่ยง syntax error

ตั้งค่า client ให้ใช้ certificate — Configure SSH Client

ผู้ใช้ต้องบอก SSH ว่าให้ใช้คีย์ส่วนตัวและใบรับรองที่สร้าง

  • แก้ไขหรือสร้างไฟล์ `~/.ssh/config`

``` Host *.example.com IdentityFile ~/.ssh/id_ed25519 CertificateFile ~/.ssh/id_ed25519-cert.pub IdentitiesOnly yes ```

  • ตรวจสอบการเชื่อมต่อด้วยคำสั่ง

``` ssh -vv [email protected] ```

**Tip: หากเห็น `Authentication succeeded (publickey)` แสดงว่า certificate ทำงานเรียบร้อย

เปรียบเทียบการยืนยันแบบ Password vs Certificate — Comparison Table

คุณลักษณะการใช้ Passwordการใช้ SSH Certificate
ความปลอดภัยเสี่ยงต่อ brute‑force, phishingคีย์และ CA ทำให้โจมตีได้ยากกว่า
การจัดการต้องบังคับเปลี่ยน password ทุกคนเพียงอัปเดตหรือ revoke ใบรับรอง
ประสิทธิภาพต้องตรวจสอบรหัสผ่านทุกครั้งตรวจสอบลายเซ็นหนึ่งครั้งต่อ session
ความสะดวกผู้ใช้จำ/พิมพ์หลายรอบใช้คีย์เดียวกับ certificate

การทดสอบและการบำรุงรักษา — Testing & Maintenance

หลังตั้งค่าเสร็จ ควรทำการตรวจสอบอย่างละเอียดเพื่อให้แน่ใจว่าไม่มีช่องโหว่

  • ทดสอบจากเครื่อง client ที่ไม่ได้รับใบรับรอง จะต้องเชื่อมต่อไม่สำเร็จ
  • ตรวจสอบ log ของ sshd (`/var/log/auth.log` หรือ `journalctl -u sshd`) เพื่อหา error ใด ๆ
  • ตั้ง cron job เพื่อตรวจสอบวันหมดอายุของ certificate และแจ้งเตือนล่วงหน้า
**Tip: ใช้คำสั่ง `ssh-keygen -L -f /etc/ssh/ca_key.pub` ตรวจดูรายละเอียดใบรับรองทั้งหมด

สรุป — Summary

Zero Trust SSH ด้วย OpenSSH CA ช่วยให้การเข้าถึงระยะไกลบน Linux มีความปลอดภัยและจัดการง่ายขึ้น

  • สร้างคีย์ CA และกำหนดสิทธิ์เข้าถึงอย่างเคร่งครัด
  • ออกใบรับรอง host & user จาก CA พร้อมตั้งค่าอายุที่เหมาะสม
  • ปรับ `sshd_config` ให้ยอมรับเฉพาะ certificate เท่านั้น
  • ตั้งค่า client ใช้คีย์ + certificate เพื่อเชื่อมต่อโดยไม่มี password
**สิ่งที่ควรจำ: การรักษาความปลอดภัยของคีย์ CA เป็นหัวใจหลัก; หากคีย์นี้ถูกขโมย ระบบ Zero Trust ทั้งหมดอาจพังลงได้. จัดเก็บในฮาร์ดแวร์ security module (HSM) หรือเครื่องแยกที่เข้าถึงไม่ได้จากผู้ใช้ทั่วไป.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีตั้งค่า Zero Trust SSH เข้าถึงระยะไกลด้วย OpenSSH Certificate Authority บน Linux อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
26 สิงหาคม 2569 เวลา 10:50

Related

บทความที่เกี่ยวข้อง

วิธีสแกนหา Secrets อัตโนมัติในโค้ดด้วย Gitleaks บน GitHub Actions อย่างปลอดภัยGrowth
26 สิงหาคม 2569 เวลา 11:00

วิธีสแกนหา Secrets อัตโนมัติในโค้ดด้วย Gitleaks บน GitHub Actions อย่างปลอดภัย

การสแกนหา Secrets ที่อาจรั่วไหลในโค้ดเป็นงานสำคัญสำหรับทุกทีมพัฒนา บางครั้งเรามักมองข้ามไฟล์ config หรือ key ต่าง ๆ ที่ถูก commit ไปโดยไม่ได้ตั้งใจ Gitleaks เป็นเครื่องมือที่ออกแบบมาเพื่อค้นหา Secrets…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่าและใช้งาน SQLCipher เข้ารหัสฐานข้อมูล SQLite บน Android อย่างปลอดภัยGrowth
25 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่าและใช้งาน SQLCipher เข้ารหัสฐานข้อมูล SQLite บน Android อย่างปลอดภัย

การเข้ารหัสข้อมูลในแอป Android เป็นสิ่งจำเป็นเมื่อต้องจัดเก็บข้อมูลสำคัญ เช่น ข้อมูลผู้ใช้หรือรหัสผ่าน SQLCipher ให้วิธีง่าย ๆ ที่ทำให้ฐานข้อมูล SQLite ของคุณปลอดภัยโดยอัตโนมัติ บทความนี้จะพาคุณตั้งค่…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีสร้างและกำหนดค่า Cloudflare Tunnel (Argo Tunnel) เพื่อเปิดเผยแอปพลิเคชันภายใน LAN สู่สาธารณะอย่างปลอดภัยGrowth
25 สิงหาคม 2569 เวลา 19:00

วิธีสร้างและกำหนดค่า Cloudflare Tunnel (Argo Tunnel) เพื่อเปิดเผยแอปพลิเคชันภายใน LAN สู่สาธารณะอย่างปลอดภัย

Argo Tunnel ของ Cloudflare ช่วยให้คุณเปิดเผยแอปพลิเคชันที่อยู่ภายใน LAN ไปยังอินเทอร์เน็ตโดยไม่ต้องเปิดพอร์ตบนเร้าเตอร์หรือใช้ VPN แต่อย่างใด ทั้งหมดทำงานผ่านเอเย่นต์ **cloudflared** ที่เชื่อมต่อกับเค…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Tailwind CSS บน Vite เพื่อพัฒนาเว็บเร็วและปลอดภัยGrowth
25 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่า Tailwind CSS บน Vite เพื่อพัฒนาเว็บเร็วและปลอดภัย

การเริ่มต้นโครงการด้วย **Vite** ทำให้เรามีสภาพแวดล้อมพัฒนาเว็บที่เร็วทันใจ ส่วน **Tailwind CSS** จะช่วยลดเวลาการออกแบบ UI ด้วยคลาสยูทิลิตี้ การผสานสองเครื่องมือนี้อย่างถูกต้องจะทำให้คุณสร้างเว็บที่โหล…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
คัดลอกลิงก์แล้ว!