Linux Agent
Agent เดียวจบสำหรับเซิร์ฟเวอร์ Linux — ไฟล์ปฏิบัติการเดียว (static binary) รันเป็น systemd service เก็บ log ไฟล์, เหตุการณ์ระบบ, และเมตริกของเครื่อง แล้วส่งเข้า L-Flow โดยไม่ต้องติดตั้งซอฟต์แวร์อื่นเพิ่ม
ติดตั้ง
ต้องรันด้วยสิทธิ์ sudo/root เสมอ เพราะ agent ต้องผูกกับ audit ระดับ kernel และติดตั้ง systemd service ของตัวเอง
- สร้าง Enrollment tokenไปที่ คอมพิวเตอร์และเซิร์ฟเวอร์ → Linux → ตั้งค่าเอเจนต์ Linux แล้วสร้าง token ใหม่ (กำหนดชื่อ วันหมดอายุ และจำนวนครั้งที่ใช้ได้)
- คัดลอกคำสั่งติดตั้งหน้าเดียวกันจะแสดงคำสั่งสำหรับเครื่องของคุณพร้อม URL ของ L-Flow เติมให้แล้ว
- รันบนเครื่อง Linuxวางคำสั่งลง terminal แล้วกด Enter — สคริปต์จะถามหา token แบบซ่อนอินพุต (ไม่ปรากฏบนหน้าจอหรือถูกบันทึกใน shell history)
- รอให้ enroll และเริ่มบริการสคริปต์จะดาวน์โหลด binary ที่ตรงกับสถาปัตยกรรมเครื่อง, ลงทะเบียนเครื่อง, ติดตั้ง systemd unit และสตาร์ทบริการให้อัตโนมัติ
สิ่งที่ Agent เก็บ
collector แต่ละตัวทำงานแยกอิสระจากกัน — ตัวหนึ่งขัดข้องจะไม่กระทบตัวอื่น เปิด/ปิดบางตัวได้ภายหลังจากหน้า Computers ของเครื่องนั้นๆ
| Collector | เก็บอะไร |
|---|---|
| File log | ไฟล์ log ของ Apache/Nginx (access และ error) แบบ tail แบบเรียลไทม์ |
| journald / syslog | log ของระบบปฏิบัติการ |
| Audit | เหตุการณ์ระดับ kernel เช่น process ที่ถูกเรียกใช้งาน (exec), การเปลี่ยนสิทธิ์ผู้ใช้, การโหลด kernel module, การเปลี่ยนกฎ firewall, การแก้ไข SSH key/PAM/ค่าตั้งค่า DNS, และร่องรอยการลบหลักฐาน (anti-forensics) |
| Host metrics | การใช้ CPU, หน่วยความจำ, พื้นที่ดิสก์ |
| Asset inventory | ข้อมูลเครื่อง เช่น เวอร์ชัน OS/kernel, จำนวนแพ็กเกจที่ติดตั้ง, พอร์ตที่เปิดรับการเชื่อมต่อ — อัปเดตทุก 6 ชั่วโมง |
| File-drop watcher | ไฟล์ใหม่ที่ถูกดาวน์โหลดลงเครื่อง (ใช้คู่กับการตรวจ hash ที่รู้จักว่าเป็นอันตราย) |
| Removable media | การเสียบ/ถอดอุปกรณ์เก็บข้อมูลแบบถอดได้ เช่น USB หรือ SD card |
| Container events | เหตุการณ์ container ของ Docker บนเครื่องนั้น (ถ้ามี Docker ติดตั้งอยู่) |
ไฟล์และไดเรกทอรีสำคัญที่ collector Audit เฝ้าดูโดยอัตโนมัติ (เช่น /etc/passwd, /etc/sudoers, authorized_keys) ดูรายการทั้งหมดได้ที่หน้า คอมพิวเตอร์และเซิร์ฟเวอร์ → Linux → การเฝ้าดูไฟล์ — รายการเหล่านี้ลบออกไม่ได้ แต่เพิ่มพาธของคุณเองเข้าไปเฝ้าดูเพิ่มเติมได้จากหน้าเดียวกัน
ตรวจสอบสถานะ collector
การตั้งค่าเปิด/ปิด collector เป็นแค่สิ่งที่“ตั้งใจให้เป็น” — ในทางปฏิบัติ collector บางตัวอาจไม่ได้ทำงานจริง เช่น เครื่องไม่มี Docker ติดตั้งจึงเปิด Container events ไม่ได้ หรือตัวอ่าน log ล่มไปเงียบๆ หน้า สถานะ collector (เข้าถึงจากเมนู “...” ของแต่ละเครื่องในหน้า คอมพิวเตอร์และเซิร์ฟเวอร์ → Linux → เครื่อง) เทียบให้เห็นทั้งสองด้าน — ค่าที่ตั้งไว้ กับสถานะที่ agent รายงานกลับมาจริงในการติดต่อครั้งล่าสุด — พร้อมเหตุผลสั้นๆ เมื่อไม่ตรงกัน
ความปลอดภัยของเครื่อง
Agent ถูกออกแบบให้ไม่เป็นความเสี่ยงต่อเครื่องที่ติดตั้ง แม้ต้องรันด้วยสิทธิ์สูง:
- ไม่ว่า log จะเยอะแค่ไหน agent จะไม่ทำให้เครื่องค้างหรือแฮงค์ — ระบบเฝ้าดูเหตุการณ์ระดับลึกถูกตั้งให้ “บันทึกไว้เฉยๆ” เมื่อรับข้อมูลไม่ทัน แทนที่จะหยุดเครื่องทั้งระบบ และเป็นค่าที่เปลี่ยนแปลงไม่ได้
- Agent ใช้ CPU และหน่วยความจำได้ไม่เกินเพดานที่ตั้งไว้ตายตัว จึงไม่แย่งทรัพยากรจนบริการอื่นบนเครื่องเดียวกันได้รับผลกระทบ
- ระหว่างทำงานปกติ agent เข้าถึงเฉพาะสิ่งที่จำเป็นต่อการเก็บ log เท่านั้น ไม่ใช่สิทธิ์ผู้ดูแลระบบเต็มรูปแบบตลอดเวลา — สิทธิ์เต็มรูปแบบใช้เฉพาะตอนติดตั้งหรืออัปเดตตัวเองเท่านั้น
การอัปเดต
ปัจจุบันการอัปเดต agent ให้เป็นเวอร์ชันล่าสุดทำโดยรันคำสั่งติดตั้งซ้ำตามหัวข้อ “ติดตั้ง” ด้านบน — ไม่ว่าจะติดตั้งครั้งแรกหรืออัปเดต ไฟล์ที่ได้รับจะถูกตรวจสอบว่าไม่ถูกแก้ไขระหว่างทางก่อนนำไปใช้งานเสมอ หากตรวจไม่ผ่าน agent จะไม่ใช้ไฟล์นั้นและคงเวอร์ชันเดิมไว้
ข้อกำหนดของเครื่อง
- สถาปัตยกรรม amd64 หรือ arm64
- ระบบปฏิบัติการที่ใช้ systemd — ตัวติดตั้งไม่รองรับดิสโทรที่ไม่มี systemd
- สิทธิ์ root/sudo สำหรับการติดตั้งและรันบริการ
- เชื่อมต่ออินเทอร์เน็ตออกไปยังโดเมนของ L-Flow ได้ (HTTPS)
แพ็กเกจที่ต้องมีบนเครื่อง
Agent เป็นไฟล์ปฏิบัติการเดียวแบบ static binary — ไม่ต้องติดตั้ง runtime หรือไลบรารีเพิ่มเพื่อให้ agent เองทำงาน มีเพียงเครื่องมือของระบบที่ตัวติดตั้ง (installer script) เองต้องใช้ตอนติดตั้ง/อัปเดต:
| แพ็กเกจ/เครื่องมือ | ใช้ทำอะไร |
|---|---|
| curl | ดาวน์โหลด binary และติดต่อ API ของ L-Flow ระหว่างการติดตั้ง/enroll — ต้องมีอยู่แล้วก่อนรันคำสั่งติดตั้ง (ปกติติดตั้งไว้แล้วในดิสโทรส่วนใหญ่ ถ้าไม่มีให้ลง apt install curl หรือ dnf install curl) |
| systemd / systemctl | ติดตั้งและควบคุม service ของ agent — ต้องมีอยู่แล้วในระบบ ไม่มีการติดตั้งเพิ่มให้ |
CAP_AUDIT_READ/CAP_AUDIT_CONTROL)การใช้ทรัพยากรของเครื่อง
ค่าเพดานด้านล่างถูกล็อกไว้ในระดับ systemd — agent ใช้ทรัพยากรเกินนี้ไม่ได้ไม่ว่ากรณีใด เพื่อไม่ให้แย่งทรัพยากรจนบริการอื่นบนเครื่องเดียวกันได้รับผลกระทบ
| ทรัพยากร | เพดาน |
|---|---|
| หน่วยความจำ (RAM) | 256 MB |
| CPU | 25% ของ 1 core |
| จำนวน process/thread ในตัว (Tasks) | 128 |
| ดิสก์ (log สำรองในเครื่อง) | ไม่เกินประมาณ 30 MB — ไฟล์ /var/log/l-flow-agent.log หมุนเวียนอัตโนมัติที่ 10 MB × 3 ชุด และเก็บไม่เกิน 7 วัน |
การใช้งานจริงต่ำกว่าเพดานมากในสภาวะปกติ ตัวเลขข้างต้นคือค่าสูงสุดที่เป็นไปได้เท่านั้น ไม่ใช่การใช้งานทั่วไป
ฟิลด์ ECS และตัวอย่างการค้นหา
Log จากทุก collector ถูกแปลงเป็นชื่อ field มาตรฐานเดียวกัน (ECS) ก่อนเก็บ — นำชื่อ field เหล่านี้ไปกรองต่อได้ทันทีที่หน้า Explore
| Collector | ฟิลด์ ECS หลัก | ตัวอย่างการค้นหา |
|---|---|---|
| File log | http.request.method, url.original, http.response.status_code, source.ip | type:webaccess AND http.response.status_code:>=500 |
| journald / syslog | process.name, event.action, user.name | type:auth AND process.name:sshd |
| Audit | event.action, process.name, file.path, user.name | event.action:privilege-escalation |
| Host metrics | host.cpu.usage, host.memory.used_pct, host.disk.used_pct | type:health AND host.memory.used_pct:>90 |
| Asset inventory | host.os.full, host.os.kernel, l_flow.package_count, l_flow.listening_tcp_ports | event.action:asset_inventory |
| File-drop watcher | file.hash.sha256, file.path, url.original | event.action:file_download |
| Removable media | event.action, file.path | event.action:usb_add |
| Container events | event.action, container.id, container.name | event.action:container_exec_start |
รายการฟิลด์ทั้งหมด ค่าของ event.action และความหมายของแต่ละค่า ดูที่ ฟิลด์ของ Linux