ตู้เซิร์ฟเวอร์ในห้องดาต้าเซ็นเตอร์ สายเคเบิลเรืองแสงโยงไปยังลูกโลกแก้วหลายลูกที่เชื่อมกันเป็นเครือข่าย

Cyber 101 · บทที่ 1

พื้นฐานระบบ เครือข่าย และคอมมานด์ไลน์

ระบบปฏิบัติการและสิทธิไฟล์: รากฐานที่ผู้ป้องกันต้องแม่น

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

ระบบปฏิบัติการ (OS) คืออะไร

ระบบปฏิบัติการคือซอฟต์แวร์ที่คั่นกลางระหว่างฮาร์ดแวร์กับโปรแกรมที่เราใช้ หัวใจของมันเรียกว่า kernel ทำหน้าที่จัดสรรหน่วยความจำ ซีพียู และควบคุมว่าใครมีสิทธิเข้าถึงอะไร ส่วนที่เราคลิกใช้งานทั่วไปเรียกว่า user space คนสายความปลอดภัยนิยมใช้ Linux เพราะเปิดเผยการทำงานภายใน ปรับแต่งได้ลึก และเซิร์ฟเวอร์ส่วนใหญ่ในโลกก็รันบน Linux การเข้าใจมันจึงเท่ากับเข้าใจเป้าหมายที่เราต้องป้องกัน

Windows

ใช้แพร่หลายบนเครื่องผู้ใช้ทั่วไป มีระบบสิทธิแบบ Administrator กับ Standard user และไฟล์ระบบสำคัญที่ต้องปกป้อง

Linux

เปิดเผยและปรับแต่งได้สูง เป็นระบบของเซิร์ฟเวอร์ส่วนใหญ่ ใช้แนวคิดผู้ใช้ กลุ่ม และสิทธิไฟล์ที่ชัดเจน

macOS

สร้างบนรากฐานตระกูล Unix เหมือน Linux จึงมีเทอร์มินัลและคำสั่งคล้ายกันมาก เรียนรู้ข้ามกันได้ง่าย

ผู้ใช้และสิทธิ (users และ permissions)

ทุกไฟล์และทุกโปรเซสมีเจ้าของเสมอ บน Linux ผู้ใช้พิเศษชื่อ root ทำได้ทุกอย่าง ส่วนผู้ใช้ทั่วไปถูกจำกัดสิทธิไว้ ระบบสิทธิไฟล์แบ่งเป็นสามชุด คือ เจ้าของ (owner) กลุ่ม (group) และคนอื่น (others) แต่ละชุดกำหนดได้ว่าอ่านได้ (r) เขียนได้ (w) หรือรันได้ (x) แนวคิดนี้คือด่านแรกของการควบคุมการเข้าถึง ถ้าตั้งสิทธิหลวมเกินไป ไฟล์สำคัญอาจถูกอ่านหรือแก้ไขโดยคนที่ไม่ควรมีสิทธิ

อ่านผลคำสั่ง ls -l เพื่อดูสิทธิของไฟล์ในเครื่องเราเอง

$ ls -l note.txt
-rw-r--r--  1 student  staff  1024  note.txt
# rw- = เจ้าของอ่านและเขียนได้
# r-- = กลุ่มอ่านได้อย่างเดียว
# r-- = คนอื่นอ่านได้อย่างเดียว

🛡️ วิธีป้องกัน: หลัก least privilege

ให้สิทธิเท่าที่จำเป็นเท่านั้น อย่าใช้บัญชี root หรือ Administrator ทำงานประจำวัน สร้างผู้ใช้ธรรมดาไว้ใช้ และยกระดับสิทธิเฉพาะตอนจำเป็น หลีกเลี่ยงการตั้งไฟล์เป็นสิทธิเปิดกว้างสุด (เช่น chmod 777) เพราะเท่ากับอนุญาตให้ทุกคนเขียนทับได้ ตรวจไฟล์สำคัญเสมอว่ามีเฉพาะเจ้าของที่เขียนได้

🧪 ลองในแล็บของคุณ

ในเครื่องหรือ VM ของคุณเอง ลองสร้างไฟล์ทดลองแล้วดูสิทธิด้วย ls -l จากนั้นเปลี่ยนสิทธิด้วย chmod แล้วสังเกตว่าค่าที่แสดงเปลี่ยนไปอย่างไร เป้าหมายคือให้คุ้นกับการอ่านสิทธิไฟล์ ทำเฉพาะไฟล์ที่คุณสร้างเองในเครื่องตัวเองเท่านั้น

เครือข่ายเบื้องต้น: IP พอร์ต DNS และ HTTP กับ HTTPS

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

IP address คืออะไร

IP address คือหมายเลขประจำตัวของอุปกรณ์บนเครือข่าย เปรียบเหมือนบ้านเลขที่ แบบที่พบบ่อยคือ IPv4 เช่น 192.168.1.10 และแบบใหม่ที่ยาวกว่าคือ IPv6 IP ยังแบ่งเป็นแบบส่วนตัว (private เช่นช่วง 192.168.x.x ที่ใช้ในบ้าน) กับแบบสาธารณะ (public ที่มองเห็นได้จากอินเทอร์เน็ต) ยิ่งอุปกรณ์เปิดสู่สาธารณะมากเท่าไร พื้นที่ที่อาจถูกโจมตีก็ยิ่งกว้างขึ้น

TCP

โปรโตคอลที่เน้นความถูกต้อง มีการจับมือและยืนยันว่าข้อมูลถึงครบ ใช้กับเว็บ อีเมล และการโอนไฟล์

UDP

เน้นความเร็ว ไม่ยืนยันการรับ เหมาะกับสตรีมมิงหรือเกมที่ยอมสูญเสียบางส่วนได้เพื่อความลื่น

Port

ช่องหมายเลขบนอุปกรณ์เดียวกัน ให้แต่ละบริการมีประตูของตัวเอง เช่นเว็บอยู่พอร์ต 80 หรือ 443

พอร์ตและบริการที่พบบ่อย

ถ้า IP คือบ้านเลขที่ พอร์ตก็คือประตูแต่ละบานของบ้านหลังนั้น แต่ละบริการฟังอยู่ที่พอร์ตของตัวเอง พอร์ตที่เปิดทิ้งไว้โดยไม่จำเป็นคือประตูที่ผู้โจมตีอาจลองงัด การรู้จักพอร์ตมาตรฐานช่วยให้เราตรวจได้ว่าเครื่องของเราเปิดอะไรไว้บ้าง

พอร์ตบริการหมายเหตุด้านความปลอดภัย
22SSHรีโมตเข้าเครื่อง ควรปิดหากไม่ใช้
80HTTPไม่เข้ารหัส ข้อมูลถูกดักอ่านได้
443HTTPSเข้ารหัสด้วย TLS ปลอดภัยกว่า
53DNSแปลงชื่อโดเมนเป็น IP

DNS: สมุดโทรศัพท์ของอินเทอร์เน็ต

คนจำชื่อโดเมนอย่าง example.com ได้ง่ายกว่าตัวเลข IP ระบบ DNS ทำหน้าที่แปลชื่อโดเมนให้เป็น IP ที่เครื่องใช้ติดต่อกันจริง เมื่อเราพิมพ์เว็บ เครื่องจะถาม DNS ก่อนว่า IP ปลายทางคืออะไร แล้วจึงส่งคำขอไป ความเข้าใจตรงนี้สำคัญ เพราะถ้าการแปลชื่อถูกบิดเบือน ผู้ใช้อาจถูกพาไปเว็บปลอมโดยไม่รู้ตัว

HTTP กับ HTTPS ต่างกันอย่างไร

HTTP ส่งข้อมูลเป็นข้อความธรรมดา ใครที่อยู่บนเส้นทางเดียวกัน เช่นบนไวไฟสาธารณะที่ไม่ปลอดภัย อาจดักอ่านสิ่งที่เราส่งได้ ซึ่งเป็นแนวคิดของการดักฟังข้อมูล (sniffing) และการแทรกกลางการสื่อสาร (man-in-the-middle) ส่วน HTTPS ห่อข้อมูลด้วยการเข้ารหัส TLS ทำให้แม้จะถูกดักไปก็อ่านไม่ออก นี่คือเหตุผลที่เว็บสมัยใหม่ควรใช้ HTTPS เสมอ

🛡️ วิธีป้องกัน: เข้ารหัสและลดพื้นที่เปิด

ใช้ HTTPS เสมอเมื่อกรอกข้อมูลสำคัญ สังเกตว่าเว็บขึ้นต้นด้วย https และมีสัญลักษณ์ความปลอดภัย บนไวไฟสาธารณะให้ระวังเป็นพิเศษหรือใช้ VPN ที่เชื่อถือได้ สำหรับเครื่องหรือเซิร์ฟเวอร์ของเราเอง ให้ปิดพอร์ตและบริการที่ไม่ได้ใช้ เปิดเฉพาะเท่าที่จำเป็น และตั้งไฟร์วอลล์ให้จำกัดการเข้าถึงจากภายนอก ยิ่งประตูน้อย ยิ่งเฝ้าง่าย

🧪 ลองในแล็บของคุณ

บนเครื่องของคุณเอง ลองใช้คำสั่ง ping เพื่อดูว่าติดต่อปลายทางได้หรือไม่ และลองใช้คำสั่งค้น IP จากชื่อโดเมน (เช่น nslookup หรือ dig) เพื่อดูว่า DNS ตอบกลับเป็น IP อะไร จากนั้นสำรวจว่าเครื่องของคุณเองเปิดพอร์ตอะไรอยู่บ้าง เป้าหมายคือเข้าใจภาพเครือข่ายของเครื่องตัวเอง ไม่ใช่การไปสำรวจเครื่องคนอื่น

คอมมานด์ไลน์ Linux ที่จำเป็น

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

ทำไมต้องใช้คอมมานด์ไลน์

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

คำสั่งหน้าที่
lsแสดงรายชื่อไฟล์ในโฟลเดอร์
cdย้ายเข้าออกโฟลเดอร์
catแสดงเนื้อหาไฟล์
grepค้นหาข้อความในไฟล์
sshเชื่อมต่อเข้าเครื่องระยะไกลอย่างปลอดภัย
manเปิดคู่มือของแต่ละคำสั่ง

grep: เพื่อนคู่ใจของการอ่าน log

เมื่อไฟล์ log ยาวเป็นหมื่นบรรทัด การเลื่อนอ่านทีละบรรทัดไม่ไหว grep ช่วยดึงเฉพาะบรรทัดที่ตรงกับคำที่เราสนใจออกมา เช่นบรรทัดที่มีคำว่าเข้าสู่ระบบล้มเหลว ทำให้เห็นความผิดปกติได้เร็ว นี่คือทักษะฝั่งป้องกันโดยตรง

ค้นบรรทัดที่ล็อกอินล้มเหลวในไฟล์ log ของเครื่องเราเอง

$ grep "failed login" /var/log/auth.log
# แสดงเฉพาะบรรทัดที่มีคำว่า failed login
# ช่วยให้เห็นความพยายามเข้าถึงที่ผิดปกติได้เร็ว

SSH: ประตูรีโมตที่ต้องดูแลดี

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

🛡️ วิธีป้องกัน: ทำให้ SSH แข็งแรง

ใช้การยืนยันตัวด้วยกุญแจ (SSH key) แทนรหัสผ่าน ปิดการล็อกอินด้วยบัญชี root โดยตรง จำกัดว่าใครหรือ IP ใดเข้าได้ และตั้งเครื่องมือที่บล็อกอัตโนมัติเมื่อมีการเดารหัสซ้ำหลายครั้ง (เช่น fail2ban) หากไม่ได้ใช้ SSH จากภายนอกเลย ให้ปิดพอร์ตนั้นเสีย ทั้งหมดนี้ทดลองปรับตั้งได้บน VM ของเราเอง

🧪 ลองในแล็บของคุณ

ฝึกคอมมานด์ไลน์ฟรีอย่างถูกกฎหมายได้ที่ OverTheWire Bandit ซึ่งเป็นเกมสอน command line ที่ให้เราเชื่อมต่อเข้าเซิร์ฟเวอร์ฝึกของเขาโดยตรง แก้โจทย์ทีละด่านด้วยคำสั่งพื้นฐาน เริ่มที่ overthewire.org/wargames/bandit การฝึกบนสนามที่จัดไว้ให้เช่นนี้คือทางที่ปลอดภัยและถูกต้อง

⚠️ จริยธรรมและกฎหมาย

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

ตั้งแล็บของตัวเองอย่างปลอดภัย

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

ทำไมต้องมีแล็บของตัวเอง

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

VM และ VirtualBox

เครื่องเสมือน (Virtual Machine) คือคอมพิวเตอร์จำลองที่รันอยู่ในเครื่องเรา VirtualBox เป็นซอฟต์แวร์ฟรีที่สร้าง VM ได้ ทำให้มีเครื่องฝึกแยกต่างหากจากเครื่องหลัก

Snapshot

ภาพบันทึกสถานะของ VM ณ เวลาหนึ่ง ถ้าทดลองแล้วพัง ก็ย้อนกลับสู่จุดที่บันทึกไว้ได้ในไม่กี่คลิก เหมาะกับการลองสิ่งที่เสี่ยง

Host-only network

โหมดเครือข่ายที่ให้ VM คุยกันเองภายในเครื่อง แต่ไม่ทะลุออกอินเทอร์เน็ตหรือเครือข่ายบ้าน ช่วยกักการทดลองไว้ในกรอบ

แยกแล็บออกจากเครือข่ายบ้าน

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

🛡️ วิธีป้องกัน: กติกาความปลอดภัยของแล็บ

ตั้งแล็บให้แยกจากเครือข่ายจริงเสมอ ใช้ host-only หรือเครือข่ายภายในเมื่อทดลองสิ่งที่เสี่ยง สร้าง snapshot ก่อนเริ่มทุกครั้งเพื่อย้อนกลับได้ อย่านำข้อมูลจริงหรือข้อมูลส่วนตัวเข้าไปในเครื่องฝึก และอย่าเชื่อม VM ฝึกออกอินเทอร์เน็ตโดยไม่จำเป็น กติกาเหล่านี้ทำให้เราเรียนได้อย่างสบายใจ

🧪 ลองในแล็บของคุณ

ติดตั้ง VirtualBox บนเครื่องของคุณ แล้วสร้าง VM ลง Linux สักตัว (เช่น Ubuntu) ตั้งค่าเครือข่ายเป็นแบบ host-only เมื่อเครื่องพร้อมใช้ ให้สร้าง snapshot แรกเก็บไว้ จากนั้นลองใช้คำสั่งพื้นฐานจากหัวข้อก่อนหน้าใน VM นี้ ทุกอย่างเกิดในเครื่องของคุณเองทั้งหมด

⚠️ จริยธรรมและกฎหมาย

กฎทองของคอร์สนี้คือฝึกได้เฉพาะระบบที่เป็นของเรา หรือสนามฝึกที่จัดไว้ให้ถูกกฎหมาย เช่น OverTheWire, OWASP Juice Shop, DVWA, picoCTF และ PortSwigger Academy การสแกนหรือเข้าถึงระบบของผู้อื่นแม้เพียงเพื่อลองดู ก็อาจเป็นความผิดตามกฎหมายไทยได้ เมื่อสงสัย ให้ถือว่าไม่มีสิทธิ จนกว่าจะได้รับอนุญาตเป็นลายลักษณ์อักษรและมีขอบเขตชัดเจน

ทบทวนท้ายบท

ลองตอบในใจก่อน แล้วค่อยกดดูเฉลย เพื่อตรวจว่าเข้าใจแนวคิดหลักของบทนี้ครบหรือยัง

❓ คำถาม: สิทธิไฟล์ rw-r--r-- หมายความว่าอย่างไร และเกี่ยวข้องกับหลัก least privilege อย่างไร
เฉลย: เจ้าของอ่านและเขียนได้ ส่วนกลุ่มและคนอื่นอ่านได้อย่างเดียว หลัก least privilege บอกให้เราให้สิทธิเท่าที่จำเป็น จึงไม่ควรตั้งไฟล์ให้ทุกคนเขียนได้ (เช่น 777) เพราะเปิดช่องให้คนที่ไม่ควรมีสิทธิแก้ไขไฟล์สำคัญ
❓ คำถาม: HTTP กับ HTTPS ต่างกันอย่างไร และทำไม HTTP จึงเสี่ยงบนไวไฟสาธารณะ
เฉลย: HTTP ส่งข้อมูลเป็นข้อความธรรมดาที่ถูกดักอ่านได้ ส่วน HTTPS เข้ารหัสด้วย TLS ทำให้แม้ถูกดักก็อ่านไม่ออก บนไวไฟสาธารณะที่ไม่ปลอดภัย คนบนเส้นทางเดียวกันอาจดักฟังข้อมูล (sniffing) หรือแทรกกลางการสื่อสารได้ จึงควรใช้ HTTPS หรือ VPN ที่เชื่อถือได้
❓ คำถาม: ทำไมการฝึกด้านความปลอดภัยจึงควรทำใน VM ที่ตั้งเป็น host-only แทนที่จะทำบนเครื่องหลัก
เฉลย: VM แยกการทดลองออกจากเครื่องหลัก ถ้าพังก็ย้อน snapshot ได้ ส่วน host-only กักไม่ให้การทดลองทะลุออกไปยังเครือข่ายบ้านหรืออินเทอร์เน็ต ลดโอกาสที่แล็บจะกลายเป็นจุดอ่อนหรือไปกระทบระบบอื่น
❓ คำถาม: ถ้าต้องเปิด SSH ไว้ใช้งาน ควรตั้งค่าอย่างไรให้ปลอดภัยขึ้น
เฉลย: ใช้การยืนยันตัวด้วยกุญแจแทนรหัสผ่าน ปิดการล็อกอินด้วย root โดยตรง จำกัดผู้ใช้หรือ IP ที่เข้าได้ และตั้งเครื่องมือบล็อกอัตโนมัติเมื่อมีการเดารหัสซ้ำหลายครั้ง (เช่น fail2ban) หากไม่ได้ใช้จากภายนอกก็ควรปิดพอร์ตไปเลย
❓ คำถาม: การใช้ nmap สแกนพอร์ตของเว็บบริษัทอื่นเพื่อ ลองดูเฉย ๆ ทำได้หรือไม่
เฉลย: ไม่ได้ การสแกนหรือเข้าถึงระบบของผู้อื่นโดยไม่ได้รับอนุญาตอาจเป็นความผิดตาม พ.ร.บ.คอมพิวเตอร์ พ.ศ.2560 แม้จะอ้างว่าแค่ลองดู ให้ฝึกเฉพาะเครื่องหรือแล็บของเราเอง หรือสนามฝึกที่จัดไว้ถูกกฎหมายเท่านั้น