L-Flow›Agents›Linux

Linux Agent

Agent เดียวจบสำหรับเซิร์ฟเวอร์ Linux — ไฟล์ปฏิบัติการเดียว (static binary) รันเป็น systemd service เก็บ log ไฟล์, เหตุการณ์ระบบ, และเมตริกของเครื่อง แล้วส่งเข้า L-Flow โดยไม่ต้องติดตั้งซอฟต์แวร์อื่นเพิ่ม

ติดตั้ง

ต้องรันด้วยสิทธิ์ sudo/root เสมอ เพราะ agent ต้องผูกกับ audit ระดับ kernel และติดตั้ง systemd service ของตัวเอง

  1. สร้าง Enrollment tokenไปที่ คอมพิวเตอร์และเซิร์ฟเวอร์ → Linux → ตั้งค่าเอเจนต์ Linux แล้วสร้าง token ใหม่ (กำหนดชื่อ วันหมดอายุ และจำนวนครั้งที่ใช้ได้)
  2. คัดลอกคำสั่งติดตั้งหน้าเดียวกันจะแสดงคำสั่งสำหรับเครื่องของคุณพร้อม URL ของ L-Flow เติมให้แล้ว
  3. รันบนเครื่อง Linuxวางคำสั่งลง terminal แล้วกด Enter — สคริปต์จะถามหา token แบบซ่อนอินพุต (ไม่ปรากฏบนหน้าจอหรือถูกบันทึกใน shell history)
  4. รอให้ enroll และเริ่มบริการสคริปต์จะดาวน์โหลด binary ที่ตรงกับสถาปัตยกรรมเครื่อง, ลงทะเบียนเครื่อง, ติดตั้ง systemd unit และสตาร์ทบริการให้อัตโนมัติ
Tip:รันคำสั่งเดียวกันซ้ำบนเครื่องที่ enroll ไว้แล้วได้เสมอ — เป็นการรีเฟรช binary และการตั้งค่าให้ล่าสุด โดยไม่ต้อง enroll ใหม่
ผู้ดูแลระบบL-Flowเครื่อง Linux1. สร้าง enrollment token2. คำสั่งติดตั้ง (มี URL ของ L-Flow ฝังไว้)3. วางคำสั่งรันบนเครื่อง Linux4. ส่ง token ยืนยันตัวตน5. ติดตั้ง systemd service + เริ่มทำงาน
ขั้นตอนการ enroll เครื่องใหม่ ตั้งแต่สร้าง token จนบริการ agent เริ่มทำงาน

สิ่งที่ Agent เก็บ

collector แต่ละตัวทำงานแยกอิสระจากกัน — ตัวหนึ่งขัดข้องจะไม่กระทบตัวอื่น เปิด/ปิดบางตัวได้ภายหลังจากหน้า Computers ของเครื่องนั้นๆ

แหล่งข้อมูลในเครื่องไฟล์ log ระบบjournald / syslogKernel auditเมตริกเครื่อง + inventoryอ่านL-Flow Agentบัฟเฟอร์ในเครื่องส่งเป็นชุดเล็กๆต่อเนื่องHTTPSL-Flow Platformแปลงเป็นรูปแบบมาตรฐาน (ECS)จัดเก็บ ค้นหาและแจ้งเตือน
แหล่งข้อมูลในเครื่อง Linux ถูกอ่านโดย agent แล้วส่งต่อไปยัง L-Flow ผ่าน HTTPS เท่านั้น
Collectorเก็บอะไร
File logไฟล์ log ของ Apache/Nginx (access และ error) แบบ tail แบบเรียลไทม์
journald / sysloglog ของระบบปฏิบัติการ
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 รายงานกลับมาจริงในการติดต่อครั้งล่าสุด — พร้อมเหตุผลสั้นๆ เมื่อไม่ตรงกัน

Note:หน้านี้ใช้ได้เฉพาะเครื่องที่ลง agent แบบ native (ไฟล์ปฏิบัติการเดียวตามหัวข้อ “ติดตั้ง” ด้านบน) เท่านั้น

ความปลอดภัยของเครื่อง

Agent ถูกออกแบบให้ไม่เป็นความเสี่ยงต่อเครื่องที่ติดตั้ง แม้ต้องรันด้วยสิทธิ์สูง:

  • ไม่ว่า log จะเยอะแค่ไหน agent จะไม่ทำให้เครื่องค้างหรือแฮงค์ — ระบบเฝ้าดูเหตุการณ์ระดับลึกถูกตั้งให้ “บันทึกไว้เฉยๆ” เมื่อรับข้อมูลไม่ทัน แทนที่จะหยุดเครื่องทั้งระบบ และเป็นค่าที่เปลี่ยนแปลงไม่ได้
  • Agent ใช้ CPU และหน่วยความจำได้ไม่เกินเพดานที่ตั้งไว้ตายตัว จึงไม่แย่งทรัพยากรจนบริการอื่นบนเครื่องเดียวกันได้รับผลกระทบ
  • ระหว่างทำงานปกติ agent เข้าถึงเฉพาะสิ่งที่จำเป็นต่อการเก็บ log เท่านั้น ไม่ใช่สิทธิ์ผู้ดูแลระบบเต็มรูปแบบตลอดเวลา — สิทธิ์เต็มรูปแบบใช้เฉพาะตอนติดตั้งหรืออัปเดตตัวเองเท่านั้น

การอัปเดต

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

Note:Agent เชื่อมต่อกลับหา L-Flow ผ่าน HTTPS เท่านั้น เพื่อป้องกันไม่ให้ค่าที่ได้รับระหว่างทางถูกดักเปลี่ยน
รันคำสั่งติดตั้งซ้ำดาวน์โหลดไฟล์อัปเดตจาก L-Flowไฟล์ถูกแก้ไขระหว่างทางหรือไม่?ไม่ถูกแก้ไขติดตั้งไฟล์ใหม่ + รีสตาร์ทบริการถูกแก้ไขปฏิเสธไฟล์ คงเวอร์ชันเดิมไว้
ทุกครั้งที่มีการอัปเดต ไฟล์ใหม่ต้องผ่านการตรวจสอบก่อนนำไปใช้งานเสมอ

ข้อกำหนดของเครื่อง

  • สถาปัตยกรรม 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 — ต้องมีอยู่แล้วในระบบ ไม่มีการติดตั้งเพิ่มให้
Note:ไม่ต้องติดตั้ง auditd แยกต่างหาก — agent อ่านเหตุการณ์ระดับ kernel ผ่าน audit netlink โดยตรงด้วยสิทธิ์ที่ได้รับตอนติดตั้ง (CAP_AUDIT_READ/CAP_AUDIT_CONTROL)

การใช้ทรัพยากรของเครื่อง

ค่าเพดานด้านล่างถูกล็อกไว้ในระดับ systemd — agent ใช้ทรัพยากรเกินนี้ไม่ได้ไม่ว่ากรณีใด เพื่อไม่ให้แย่งทรัพยากรจนบริการอื่นบนเครื่องเดียวกันได้รับผลกระทบ

เครื่อง Linux เดียวกันL-Flow AgentRAM ≤ 256 MBCPU ≤ 25% ของ 1 coreTasks ≤ 128เพดานตายตัวบริการอื่นบนเครื่องเดียวกันเช่น เว็บเซิร์ฟเวอร์ ฐานข้อมูล แอปพลิเคชันของคุณใช้ทรัพยากรที่เหลือได้ตามปกติ ไม่ถูกแย่งไปโดย agent
เพดานถูกบังคับโดย systemd ระดับ OS — agent ข้ามเพดานนี้ไม่ได้ไม่ว่าปริมาณ log จะมากแค่ไหน
ทรัพยากรเพดาน
หน่วยความจำ (RAM)256 MB
CPU25% ของ 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 loghttp.request.method, url.original, http.response.status_code, source.iptype:webaccess AND http.response.status_code:>=500
journald / syslogprocess.name, event.action, user.nametype:auth AND process.name:sshd
Auditevent.action, process.name, file.path, user.nameevent.action:privilege-escalation
Host metricshost.cpu.usage, host.memory.used_pct, host.disk.used_pcttype:health AND host.memory.used_pct:>90
Asset inventoryhost.os.full, host.os.kernel, l_flow.package_count, l_flow.listening_tcp_portsevent.action:asset_inventory
File-drop watcherfile.hash.sha256, file.path, url.originalevent.action:file_download
Removable mediaevent.action, file.pathevent.action:usb_add
Container eventsevent.action, container.id, container.nameevent.action:container_exec_start

รายการฟิลด์ทั้งหมด ค่าของ event.action และความหมายของแต่ละค่า ดูที่ ฟิลด์ของ Linux