Ebpf Linux Observability Security Security

Ebpf Linux Observability Security

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Ebpf Linux Observability Security คืออะไร / ทำไมถึงสำคัญ

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

eBPF (Extended Berkeley Packet Filter) มันคือเทคโนโลยีที่ทำให้เราสามารถรันโปรแกรมเล็กๆ ใน kernel ของ Linux ได้โดยไม่ต้องแก้ kernel เอง ฟังดูยากใช่ไหม? ลองนึกภาพว่า kernel คือบ้านของเรา แล้ว eBPF คือแขกที่เราอนุญาตให้เข้ามาดูลาดเลาในบ้านได้ แต่แขกคนนี้ทำอะไรนอกเหนือจากที่บอกไม่ได้นะ เพราะเราควบคุมเขาอยู่

ทีนี้พอเรามี eBPF เราก็สามารถใช้มันเพื่อ Observability (การสังเกตการณ์) และ Security (ความปลอดภัย) ได้อย่างมีประสิทธิภาพ เพราะมันทำงานใน kernel เลย ทำให้เราเห็นข้อมูลที่ละเอียดมากๆ และตอบสนองต่อเหตุการณ์ต่างๆ ได้อย่างรวดเร็ว

พื้นฐานที่ต้องรู้

ก่อนจะไปถึงการใช้งานจริง เรามาดูกันก่อนว่ามีอะไรที่เราต้องรู้บ้างเกี่ยวกับ eBPF

Kernel

kernel คือหัวใจของระบบปฏิบัติการ Linux มันเป็นตัวกลางที่คอยจัดการทรัพยากรต่างๆ ของเครื่อง เช่น CPU, memory, disk และ network สมัยก่อนถ้าเราอยากจะแก้ kernel เราต้อง compile ใหม่หมด ซึ่งมันยุ่งยากและเสี่ยงมาก แต่ eBPF ทำให้เราสามารถเพิ่ม functionality เข้าไปใน kernel ได้โดยไม่ต้อง compile ใหม่

BPF Map

BPF Map คือ data structure ที่ใช้เก็บข้อมูลระหว่าง eBPF program กับ user space program (โปรแกรมที่เราเขียนขึ้นมาเอง) ลองนึกภาพว่ามันคือกระดานที่เราใช้เขียนข้อความให้ eBPF program กับ user space program อ่านกันได้


// Example of a BPF map
BPF_HASH(my_map, u32, u64);

BPF Program Types

eBPF program มีหลายประเภท แต่ละประเภทก็มีหน้าที่แตกต่างกันไป เช่น:

วิธีใช้งาน / เริ่มต้นยังไง

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

ขั้นตอนปฏิบัติจริง

ติดตั้ง BPF Compiler Collection (BCC)

BCC คือ toolset ที่ช่วยให้เราเขียน eBPF program ได้ง่ายขึ้น มันมี library และ compiler ที่จำเป็นสำหรับการพัฒนา eBPF program


sudo apt-get update
sudo apt-get install bpfcc-tools linux-headers-$(uname -r)

เขียน eBPF Program

เราจะเขียน eBPF program ด้วยภาษา C แล้ว compile ด้วย BCC ตัวอย่างนี้เราจะเขียนโปรแกรมที่ print ข้อความ "Hello, eBPF!" ทุกครั้งที่มีการเรียก function sys_enter_open ใน kernel


#include <uapi/linux/ptrace.h>

int kprobe__sys_enter_open(struct pt_regs *ctx) {
  bpf_trace_printk("Hello, eBPF!\\n");
  return 0;
}

save เป็นไฟล์ hello.c

Compile และ Run eBPF Program

ใช้ BCC compile และ run eBPF program ของเรา


sudo /usr/share/bcc/tools/kp  robe -r p:sys_enter_open hello.c

ถ้าทุกอย่างเรียบร้อย เราจะเห็นข้อความ "Hello, eBPF!" ปรากฏใน terminal ทุกครั้งที่เราเปิดไฟล์

เปรียบเทียบกับทางเลือกอื่น

แน่นอนว่า eBPF ไม่ใช่ทางเลือกเดียวสำหรับการทำ Observability และ Security แต่เมื่อเทียบกับทางเลือกอื่นๆ แล้ว eBPF มีข้อดีหลายอย่าง

Technology Pros Cons
Syscall Auditing ง่ายต่อการใช้งาน, built-in overhead สูง, ข้อมูลจำกัด
Kernel Modules flexible มาก, เข้าถึงข้อมูลได้เยอะ เสี่ยงต่อ kernel crash, ต้อง compile ใหม่
eBPF performance ดี, secure, ไม่ต้อง compile kernel learning curve สูง, ต้องเขียน code เอง

จากตารางจะเห็นว่า eBPF มีข้อดีในเรื่องของ performance และ security แต่ก็ต้องแลกมาด้วย learning curve ที่สูงกว่า ซึ่งก็เป็นเรื่องธรรมดาของเทคโนโลยีใหม่ๆ

ถ้าใครอยากศึกษาเพิ่มเติม ลองเข้าไปดูที่ SiamCafe Blog ได้เลยครับ ผมเขียนบทความเกี่ยวกับ eBPF ไว้เยอะเหมือนกัน

สมัยผมทำร้านเน็ต ผมเคยเจอเคสที่เครื่องลูกข่ายโดนแฮก แล้วเอาไปขุด Bitcoin ซึ่งกว่าจะรู้ตัวก็เสียเงินค่าไฟไปเยอะมาก ถ้าตอนนั้นมี eBPF ผมคงจับได้เร็วกว่านี้เยอะ

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

สำหรับใครที่อยากลองทำตาม tutorial นี้ แต่ขี้เกียจ setup environment เอง ลองใช้ SiamCafe Blog Docker container ก็ได้นะ ผมทำไว้ให้เรียบร้อยแล้ว

Best Practices / เคล็ดลับจากประสบการณ์

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

eBPF มันทรงพลังจริง แต่ถ้าใช้ไม่ถูกวิธี แทนที่จะป้องกัน กลับกลายเป็นเปิดช่องโหว่ให้ Hacker ซะงั้น

3 เทคนิคที่ใช้ได้จริง

1. จำกัดสิทธิ์การเข้าถึง eBPF Programs

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

หลักการง่ายๆ คือ Least Privilege ใครไม่จำเป็นต้องใช้ อย่าให้สิทธิ์! eBPF Programs ควรถูกจำกัดให้รันได้เฉพาะ User ที่ได้รับอนุญาตเท่านั้น

# ตัวอย่างการใช้ Capability เพื่อจำกัดสิทธิ์
setcap cap_bpf=ep your_ebpf_program

โค้ดด้านบนเป็นการใช้ `setcap` เพื่อให้ Program ของเรามีความสามารถ `cap_bpf` ซึ่งจำเป็นต่อการรัน eBPF Program โดยไม่ต้องใช้สิทธิ์ root

2. Code Review อย่างเข้มข้น

eBPF Programs เนี่ย มันเหมือนโค้ดที่เราเขียนขึ้นมาเองนั่นแหละ มีโอกาสที่จะมี Bug หรือช่องโหว่ได้ทั้งนั้น ดังนั้น ก่อนเอาขึ้น Production (หรือก่อนปล่อยให้ลูกค้าร้านเน็ตใช้) ต้อง Code Review อย่างละเอียด

สมัยก่อนพี่จะเรียกเพื่อนๆ ที่เก่งๆ มาช่วยกันดูโค้ด ช่วยกันหาจุดผิดพลาด หรือช่องโหว่ที่อาจเกิดขึ้นได้ ยิ่งมีคนช่วยกันดูเยอะ โอกาสที่จะเจอช่องโหว่ก็ยิ่งมากขึ้น

มองหาจุดที่อาจเกิด Buffer Overflow, Integer Overflow, หรือ Race Condition พวกนี้อันตรายทั้งนั้น

3. ติดตั้งระบบ Monitoring และ Alerting

eBPF มันช่วยให้เรา Observability ระบบได้ดีขึ้นก็จริง แต่ถ้าเราไม่เฝ้าดูมันอย่างใกล้ชิด ก็เหมือนมีกล้องวงจรปิด แต่ไม่มีคนดู

พี่แนะนำให้ติดตั้งระบบ Monitoring ที่สามารถตรวจจับพฤติกรรมผิดปกติของ eBPF Programs ได้ เช่น CPU Usage สูงผิดปกติ, Memory Leak, หรือ Network Traffic ที่เปลี่ยนแปลงไปอย่างรวดเร็ว แล้วก็ตั้ง Alerting ไว้ ถ้าเจออะไรแปลกๆ จะได้รีบเข้าไปดูทันที

ลองใช้ Tools อย่าง Prometheus, Grafana, หรือ Elastic Stack มาช่วยก็ได้ พวกนี้มี Dashboard สำเร็จรูปให้ใช้เยอะแยะ

FAQ คำถามที่พบบ่อย

eBPF ป้องกัน Ransomware ได้ไหม?

ตอบ: ได้ครับ eBPF สามารถใช้ตรวจจับพฤติกรรมที่น่าสงสัยของ Ransomware ได้ เช่น การเข้าถึงไฟล์จำนวนมากในเวลาอันรวดเร็ว, การเข้ารหัสไฟล์, หรือการสร้างไฟล์แปลกๆ ขึ้นมา แต่ต้อง Config ให้ดีๆ นะ ไม่งั้นอาจ False Positive ได้

eBPF ทำให้ Kernel เสียหายได้ไหม?

ตอบ: มีโอกาสครับ ถ้า eBPF Program มี Bug หรือเขียนมาไม่ดี มันอาจทำให้ Kernel Crash ได้ ดังนั้น ต้อง Test ให้ละเอียดก่อนเอาไปใช้จริง แล้วก็อย่าลืม Backup ข้อมูลไว้ด้วย

eBPF ใช้ยากไหม? ต้องเป็น Programmer เก่งๆ ถึงจะใช้ได้หรือเปล่า?

ตอบ: eBPF มี Learning Curve ที่ค่อนข้างสูงครับ แต่ไม่ต้องถึงกับเป็นเทพ Programmer ก็ใช้ได้ เดี๋ยวนี้มี Tools และ Library ต่างๆ ที่ช่วยให้การเขียน eBPF Programs ง่ายขึ้นเยอะ ลองศึกษาดูครับ ไม่ยากอย่างที่คิด

ผมจะเริ่มศึกษา eBPF ได้จากที่ไหน?

ตอบ: เริ่มจาก Document ของ Cilium, BCC, หรือ bpftrace ก็ได้ครับ แล้วก็ลองหา Tutorial หรือ Workshop ที่สอนเรื่อง eBPF ดู สมัยนี้มี Content ฟรีๆ ให้เรียนเยอะแยะ

สรุป

eBPF เป็นเครื่องมือที่ทรงพลังมากในด้าน Security แต่ต้องใช้อย่างระมัดระวัง จำไว้เสมอว่า Security is a Process, not a Product มันไม่ใช่แค่การติดตั้งโปรแกรม แล้วจบ เราต้อง Monitor, Review, และปรับปรุงระบบของเราอยู่เสมอ

ถ้าใครอยากลงทุน Forex ลองดู iCafeForex นะครับ เผื่อจะได้เงินมาอัพเกรด Server ร้านเน็ต!

สุดท้ายนี้ ถ้าอยากอ่านเรื่อง IT สนุกๆ ก็แวะไปดูที่ SiamCafe Blog ได้นะ พี่เขียนไว้เยอะเลย