Linux
น้องๆ เคยคิดไหมว่าข้อมูลสำคัญของเราที่เก็บไว้ในคอมพิวเตอร์เนี่ย ปลอดภัยแค่ไหน? สมัยผมทำร้านเน็ต SiamCafe นี่เจอลูกค้าลืม Log Out บ่อยมาก ถ้าเป็นสมัยนี้ ข้อมูลสำคัญรั่วไหลนี่เรื่องใหญ่เลยนะ ดังนั้นการเข้ารหัสข้อมูลใน Disk หรือที่เรียกว่า Disk Encryption เนี่ยจึงสำคัญมากๆ ครับ
LUKS หรือ Linux Unified Key Setup คือมาตรฐานการเข้ารหัส Disk ที่ได้รับความนิยมบน Linux ครับ มันช่วยปกป้องข้อมูลของเราจากการเข้าถึงโดยไม่ได้รับอนุญาต ไม่ว่าจะเป็นตอนที่เครื่องถูกขโมย หรือ Hard Disk เสียหายแล้วต้องส่งไปซ่อม
ลองนึกภาพว่ามีคนร้ายขโมย Laptop ของเราไป แล้วในนั้นมีข้อมูลส่วนตัว, ข้อมูลทางการเงิน หรือแม้แต่ความลับทางการค้าอยู่ ถ้าไม่ได้เข้ารหัสไว้ คนร้ายก็สามารถเข้าถึงข้อมูลเหล่านี้ได้ง่ายๆ เลยครับ การเข้ารหัส Disk จึงเหมือนเป็นการใส่กุญแจล็อคบ้านของเราอีกชั้นหนึ่งนั่นเอง
สมัยก่อนตอนทำร้านเน็ต ผมต้องระวังเรื่องข้อมูลลูกค้ามากๆ เพราะลูกค้าบางคนก็ใช้เครื่องทำธุรกรรมทางการเงิน หรือเก็บข้อมูลสำคัญไว้ ถ้าเกิดมี Hacker เข้ามาขโมยข้อมูลไปได้นี่ซวยเลยครับ ดังนั้นการเข้ารหัสข้อมูลจึงเป็นสิ่งที่สำคัญมากๆ โดยเฉพาะอย่างยิ่งในยุคปัจจุบันที่ข้อมูลมีค่ามากกว่าทองคำอีก
Encryption Algorithm ก็เหมือนสูตรลับที่เราใช้ในการเข้ารหัสข้อมูลครับ มีหลายสูตรให้เลือกใช้ เช่น AES, Serpent, Twofish แต่ละสูตรก็มีความแข็งแกร่งในการเข้ารหัสที่แตกต่างกันไป AES เป็นที่นิยมเพราะมีความปลอดภัยสูงและประสิทธิภาพดี
สมัยก่อนผมเคยลองเล่น Encryption Algorithm หลายตัว แต่สุดท้ายก็เลือกใช้ AES เพราะมัน Balance ทั้งเรื่องความปลอดภัยและความเร็วในการเข้ารหัส ถ้าน้องๆ สนใจลองศึกษาดูนะครับ
Key Management คือการจัดการกุญแจที่ใช้ในการเข้ารหัสและถอดรหัสข้อมูลครับ เราต้องเก็บรักษากุญแจนี้ไว้ให้ดี ห้ามทำหาย หรือให้ใครรู้เด็ดขาด เพราะถ้าไม่มีกุญแจ ก็จะไม่สามารถเข้าถึงข้อมูลที่เข้ารหัสไว้ได้เลย
เคยมีลูกค้าผมคนนึง ทำกุญแจหาย ทำให้เข้าถึงข้อมูลที่เข้ารหัสไว้ไม่ได้ สุดท้ายต้อง Format Hard Disk ทิ้ง เสียหายไปเยอะมาก ดังนั้นการจัดการกุญแจจึงเป็นเรื่องสำคัญมากๆ ครับ
LUKS Header คือส่วนหัวของ Partition ที่ถูกเข้ารหัสครับ มันเก็บข้อมูลเกี่ยวกับการเข้ารหัส Algorithm ที่ใช้, Key Slot ที่ใช้เก็บ Password หรือ Keyfile และข้อมูลอื่นๆ ที่จำเป็นในการถอดรหัส
ถ้า LUKS Header เสียหาย จะทำให้ไม่สามารถถอดรหัสข้อมูลได้ ดังนั้นการ Backup LUKS Header จึงเป็นสิ่งที่ควรทำเป็นประจำครับ
การใช้งาน LUKS ไม่ยากอย่างที่คิดครับ แต่ต้องทำตามขั้นตอนอย่างระมัดระวัง เพื่อป้องกันความผิดพลาดที่อาจทำให้ข้อมูลเสียหายได้
สมัยผมทำร้านเน็ต ผมจะทำ Script เอาไว้ให้พนักงานใช้ เพื่อความสะดวกและป้องกันความผิดพลาดในการตั้งค่าระบบครับ
สำคัญมาก: ก่อนที่จะเริ่มทำการเข้ารหัส Disk น้องๆ ต้อง Backup ข้อมูลสำคัญทั้งหมดเอาไว้ก่อนนะครับ เพราะถ้าเกิดอะไรผิดพลาดขึ้นมา จะได้ไม่เสียใจภายหลัง
เคยมีลูกค้าผมคนนึง ไม่ได้ Backup ข้อมูลก่อนทำการเข้ารหัส แล้วเกิด Error ขึ้นมา ทำให้ข้อมูลทั้งหมดหายไป สุดท้ายต้องเสียเงินจ้างกู้ข้อมูล ซึ่งแพงมากๆ ครับ
cryptsetup คือ Tool ที่เราใช้ในการจัดการ LUKS ครับ ถ้ายังไม่ได้ติดตั้ง ให้ใช้คำสั่งต่อไปนี้:
sudo apt-get update
sudo apt-get install cryptsetup
สมัยก่อนตอนผมใช้ Linux ใหม่ๆ ก็งงๆ กับคำสั่งพวกนี้เหมือนกัน แต่พอใช้ไปเรื่อยๆ ก็จะชินเองครับ
สมมติว่าเราต้องการเข้ารหัส Partition ชื่อ `/dev/sda1` ให้ใช้คำสั่งต่อไปนี้:
sudo cryptsetup luksFormat /dev/sda1
คำสั่งนี้จะถาม Password ที่เราจะใช้ในการเข้ารหัส Disk ครับ เลือก Password ที่แข็งแกร่งและจำได้ง่ายนะครับ
คำเตือน: การ Format Partition จะลบข้อมูลทั้งหมดที่อยู่ในนั้น ดังนั้นตรวจสอบให้แน่ใจว่าได้ Backup ข้อมูลไว้แล้ว
หลังจากสร้าง LUKS Container แล้ว เราต้องเปิดมันก่อนถึงจะใช้งานได้ ใช้คำสั่งต่อไปนี้:
sudo cryptsetup luksOpen /dev/sda1 encrypted_disk
คำสั่งนี้จะถาม Password ที่เราตั้งไว้ตอนสร้าง LUKS Container จากนั้นจะสร้าง Device ใหม่ชื่อ `/dev/mapper/encrypted_disk` ที่เราสามารถ Mount เพื่อใช้งานได้
น้องๆ สามารถเปลี่ยนชื่อ `encrypted_disk` เป็นชื่ออื่นได้ตามต้องการครับ
นอกจาก LUKS แล้ว ยังมีทางเลือกอื่นในการเข้ารหัส Disk อีก เช่น eCryptfs, dm-crypt แต่ละทางเลือกก็มีข้อดีข้อเสียแตกต่างกันไป
สมัยก่อนผมเคยลองใช้ eCryptfs แต่พบว่ามันช้ากว่า LUKS พอสมควร เลยตัดสินใจใช้ LUKS แทน
| Feature | LUKS | eCryptfs |
|---|---|---|
| Encryption Level | Full Disk Encryption | File-Based Encryption |
| Performance | Higher | Lower |
| Complexity | More Complex | Simpler |
| Use Cases | Protecting entire disk or partition | Encrypting individual files or directories |
จากตารางจะเห็นว่า LUKS เหมาะกับการเข้ารหัสทั้ง Disk หรือ Partition ในขณะที่ eCryptfs เหมาะกับการเข้ารหัสเฉพาะ File หรือ Directory ครับ
น้องๆ สามารถเข้าไปอ่านบทความอื่นๆ ที่น่าสนใจได้ที่ SiamCafe Blog นะครับ
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะครับ ถ้ามีคำถามอะไรเพิ่มเติม สามารถสอบถามได้เลยครับ และอย่าลืมเข้าไปเยี่ยมชม SiamCafe Blog บ่อยๆ นะครับ มีบทความดีๆ อีกเพียบเลย
เอาล่ะน้อง สมัยผมทำร้านเน็ตนี่ เรื่องความปลอดภัยสำคัญสุดๆ เพราะงั้นเรื่อง Disk Encryption นี่ก็ต้องเน้นย้ำกันหน่อยนะ ไม่ใช่แค่ทำๆ ไปให้เสร็จๆ
ผมว่าหัวใจหลักเลยคือ "อย่าประมาท" ทุกอย่างต้องวางแผนและทดสอบให้ดีก่อนเอาไปใช้จริง ไม่งั้นตอนเครื่องมีปัญหาขึ้นมา จะปวดหัวกว่าเดิมเยอะ
1. Backup Header LUKS: สำคัญมากๆ! ไอ้ Header LUKS เนี่ย มันคือข้อมูลสำคัญที่ใช้ปลดล็อค Disk ถ้า Header เสียหาย ต่อให้มี Password ก็จบเห่กันเลยนะ Backup เก็บไว้หลายๆ ที่เลยน้อง
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file luks_header.img
2. ใช้ Keyfile ร่วมกับ Password: เพิ่มความปลอดภัยอีกชั้นสิครับน้อง Password อย่างเดียวมันไม่พอหรอก ยิ่ง Password สั้นๆ เดาง่ายๆ นี่ตัวดีเลย สร้าง Keyfile ยากๆ แล้วเอาไปเก็บไว้ใน USB Drive หรือที่ปลอดภัยๆ
dd if=/dev/urandom of=/path/to/keyfile bs=1024 count=4
chmod 400 /path/to/keyfile
cryptsetup luksAddKey /dev/sda2 /path/to/keyfile
3. เลือก Encryption Algorithm ที่เหมาะสม: สมัยก่อน Algorithm ไม่ค่อยมีให้เลือกเยอะ แต่สมัยนี้มีให้เลือกเพียบ เลือกตัวที่มันแข็งแรงๆ หน่อย AES-XTS นี่ก็ใช้ได้เลย
4. ทดสอบ Recovery Process: อันนี้สำคัญสุดๆ ทำเสร็จแล้วต้องลองกู้ข้อมูลดูด้วยนะ ไม่ใช่แค่ Encrypt ได้อย่างเดียว ถ้ากู้ไม่ได้ก็จบเห่ ทดสอบตั้งแต่ Boot Loader ยัน Data Recovery เลย
ถ้าลืม Password แล้วไม่ได้ Backup Header LUKS หรือ Keyfile ไว้... น้องเอ๊ย เตรียมตัว format ใหม่ได้เลยนะ ไม่มีทางกู้คืนได้เลยจริงๆ เพราะงั้น Backup สำคัญสุดๆ
ก็มีผลบ้างแหละ แต่สมัยนี้ CPU มันแรงขึ้นเยอะ ผลกระทบเลยไม่ค่อยเยอะเท่าเมื่อก่อน แต่ถ้าใช้ HDD รุ่นเก่าๆ อาจจะรู้สึกได้ชัดหน่อย SSD นี่แทบไม่รู้สึกเลย
ถ้าเป็นเครื่อง Server ผมแนะนำให้ Encrypt ทุก Partition เลย โดยเฉพาะ Partition ที่เก็บข้อมูลสำคัญๆ แต่ถ้าเป็นเครื่อง Desktop หรือ Laptop ก็แล้วแต่ความเสี่ยงที่เรายอมรับได้ อาจจะ Encrypt แค่ Partition ที่เก็บเอกสารสำคัญก็ได้
ใช้คำสั่ง cryptsetup luksChangeKey /dev/sda2 ได้เลยครับน้อง มันจะให้ใส่ Password เก่าก่อน แล้วค่อยใส่ Password ใหม่
เรื่อง Disk Encryption นี่ไม่ใช่เรื่องยาก แต่ก็ไม่ใช่เรื่องง่าย ต้องศึกษาและทำความเข้าใจให้ดีก่อนลงมือทำ ที่สำคัญที่สุดคือเรื่อง Backup และ Recovery Plan อย่าคิดว่า "คงไม่เกิดอะไรขึ้นหรอก" เพราะถ้าเกิดอะไรขึ้นมาจริงๆ มันแก้ไขอะไรไม่ได้เลยนะ
ถ้าอยากเก่งเรื่อง Linux มากขึ้น ลองเข้าไปดูที่ SiamCafe Blog ได้นะ มีบทความดีๆ เพียบเลย หรือถ้าสนใจเรื่อง Forex ลองดู iCafeForex สิ เผื่อรวย!