← Zpět na Systémy

Pipeline firewallových logů s Cursorem

cursorai-agentssyslognxlogpfsensefirewallwindowssqlite

Udělal jsi všechno podle dokumentace. Zapnul jsi vzdálené logování na pfSense, nasměroval ho na svůj počítač s Windows a otevřel UDP port 514. Nic nedorazilo. Na fóru Netgate se už déle než deset let hromadí vlákna o přesně tomhle tichu — logy se vytvořily, ale nikdy se neodeslaly, syslogd po restartu potichu přestal běžet. Někde mezi firewallem a tvým diskem událost zmizela — a nic v celém řetězci ti neřekne kde.

Běžným řešením je SIEM, jenže tím vyměníš jeden problém za větší: teď se musíš starat o Elasticsearch. Tento návod volí jinou cestu. Otevřeš Cursor, odpovíš na pět otázek a schvaluješ příkazy, zatímco agent umělé inteligence staví pipeline firewallových logů. Na konci budeš mít jednu ověřenou událost firewallu na disku, prohledávatelnou historii v místní databázi a analytika s umělou inteligencí, který umí číst tvé logy — ale na firewall sáhnout nemůže.

Celkem potřebuješ jednu službu Windows, jednu složku a jeden soubor SQLite.

Pixelartová cihlová zeď firewallu, krychle sběrače s Windows, chráněný buben SQLite a detektivní kurzor, který vše zkoumá přes přerušovanou čáru
Přerušovaná čára představuje bezpečnostní model: dívej se, ale nesahej.

Pipeline firewallových logů, kterou postavíš

┌──────────┐  syslog   ┌────────┐        ┌────────────┐        ┌───────────┐
│ Firewall │──UDP 514─>│ NXLog  │──JSON─>│ C:\logdata │──5min─>│ fwlogs.db │
│ (any)    │           │ service│  spool │  \spool\   │ ingest │ (SQLite)  │
└──────────┘           └────────┘        └────────────┘        └─────┬─────┘
                                                                     │ SELECT only
                                                               ┌─────v─────┐
                                                               │  Cursor   │
                                                               │  agent    │
                                                               └───────────┘

V celém návodu používám jako příklad pfSense, ale poslouží jakýkoli firewall schopný odesílat syslog — OPNsense, UniFi, SonicWall nebo spravovaný switch. NXLog Community Edition přijímá data na portu 514 a zapisuje je do spoolovacích souborů JSON. Naplánovaná úloha je načítá do SQLite. Agent se databáze dotazuje pouze pro čtení a hlásí, co zjistil.

Počkat — není Cursor nástroj na programování?

Tak zní marketing. Pod povrchem je Cursor agent, který čte soubory, zapisuje soubory a s tvým souhlasem spouští terminálové příkazy. Svět správce systémů tvoří soubory: konfigurace, logy, skripty a databáze. Nenapíšeš ani řádek kódu — použiješ jen dva ovládací prvky, chatovací pole a tlačítko pro schválení. Agent napíše konfiguraci NXLogu, schéma SQL a ingestovací skript; ty si je přečteš a klikneš na ano.

Předpoklady

Požadavek Poznámky
Windows 10/11 nebo Server 2019+, x64 NXLog CE nemá sestavení pro Windows ARM64
Statická IP adresa sběrného počítače Funguje i rezervace DHCP
Počítač zůstává zapnutý Ve Win11 vypni uspávání, jinak UDP logy beze stopy mizí
Práva správce Instalace služby vyžaduje zvýšená oprávnění
Jakýkoli firewall, který umí odesílat syslog Do jeho administračního rozhraní sáhneš jednou
Nainstalovaný Cursor Bezplatná úroveň stačí

Krok 1: Pět odpovědí, než se cokoli spustí

Vytvoř složku — C:\fw-pipeline — a otevři ji v Cursoru. Vytvoř v ní jeden soubor, answers.yaml:

firewall:         "pfSense CE 2.7.2"  # vendor + version (or your model, e.g. Netgate 2100)
firewall_ip:      "192.168.1.1"       # address it sends syslog from
collector_ip:     "192.168.1.20"      # this machine's static IP
transport:        "udp"               # udp | tcp — pfSense native syslog is UDP-only
data_stays_local: true                # log data never leaves this machine

Všechno, co agent vytvoří, vychází z těchto pěti řádků. Výrobce a verze určují přesné kroky, které ti popíše. IP adresa firewallu se stane klíčem zařízení v databázi. Hodnota data_stays_local: true znamená, že analýza probíhá nad místní databází — celé nezpracované logy se nikdy nevkládají do promptu.

Podrobnosti, které tento článek vynechává, najdeš ve dvou doprovodných souborech — v referenční příručce k nasazení a v nejčastějších otázkách k řešení problémů. Agent je stáhne v dalším kroku; pokud se chceš nejdřív podívat, odkazy máš přímo tady.

Pixelartový zápisník s pěti odpověďmi, které vstupují do stroje označeného jako sestavení konfigurace agenta, se zakrytým předmětem na dopravníku
Zakrytá krabice je to podstatné: dokud nevyplníš těchto pět řádků, nic se nezačne stavět.

Krok 2: Mantinely dřív než agent

Padesát tři procent správců systémů by nenechalo umělou inteligenci pracovat v produkci bez dozoru. Správný instinkt. Pravidla nedávej do promptu — dej je tam, kde je agent nemůže ignorovat. Vytvoř .cursor/rules/pipeline.md:

- Show every terminal command and wait for approval. No auto-run.
- Query fwlogs.db with the read-only "analyst" account only.
- Never connect to the firewall. Its config is the human's job.
- If any value in answers.yaml is blank, stop and ask. Never guess.
- Append every database query you run to agent-audit.log, with timestamp.

Cursor načte tato pravidla do každé relace v této složce. Agent navrhuje, ty schvaluješ. Je to stejný model důvěry, jaký bys použil u nového juniorního správce — až na to, že tenhle se nikdy nenudí a přečte každý řádek logu.

Pixelartový agent držící navržené změny, zatímco člověk ukazuje na tlačítko Schválit na obrazovce čekajících příkazů, před firewallem a zamčenou databází vede červená přerušovaná čára
Nic na tomto zápisníku není skutečnost, dokud to nepřekročí přerušovanou čáru.

Krok 3: Nech agenta postavit sběrač

Teď přijde první skutečný prompt — vlož ho do chatu:

Download both companion files from https://gist.github.com/matbanik/18dadee60389913b982493c8cbbe99ad into this folder and read
them, then read answers.yaml. Install NXLog Community Edition as a service,
configure it to receive syslog on the chosen transport and write JSON spool
files to C:\logdata\spool with filenames like fw-{timestamp}.json, and open
the Windows Firewall port — bound to the Private and Domain profiles, not
Public. Show me each command before running it.

Schválíš instalaci MSI, vygenerovaný soubor nxlog.conf a jedno pravidlo New-NetFirewallRule. Ve vygenerované konfiguraci zkontroluj dva detaily: parse_syslog() na vstupu, aby se správně uložily formáty RFC 3164 i RFC 5424, a zvýšenou hodnotu SockBufSize, protože výchozí vyrovnávací paměť UDP ve Windows je malá a při nárazech zahazuje data.

Ověř:

Get-Service nxlog   # Status: Running

Krok 4: Nasměruj na něj firewall

Jediný ruční krok. Agent si přečte answers.yaml a předá ti přesné pokyny pro tvou platformu, ale zadáš je ty — firewall zůstane mimo jeho dosah. V pfSense přejdi na Status → System Logs → Settings → Remote Logging, funkci zapni, zadej IP adresu sběrače a port 514 a zaškrtni požadované kategorie. U ostatních firewallů platí stejný postup: cíl = IP adresa sběrače, port 514, a pokud je to možné, zvol RFC 5424.

Na jedno pravidlo každý zapomíná: pokud je sběrač v jiném segmentu, firewall potřebuje odchozí pravidlo, které mu dovolí spojit se s portem 514. Firewall si nezaloguje vlastní zahozený syslog.

Krok 5: První událost — nebo místo, kde zmizela

Sleduj spoolovací složku. Pokud se objeví a roste soubor fw-*.json, to nejtěžší máš za sebou. Pokud se nic neobjeví — právě tady všechny ostatní návody pokrčí rameny. Požádej agenta, aby postupoval po diagnostickém žebříku:

event created on the firewall?      - no -> log category or severity filter
  │ yes
packet left the firewall?           - no -> syslogd died after reboot, egress rule
  │ yes
packet reached Windows?             - no -> routing or ACL on the path
  │ yes
NXLog listening on 514?             - no -> service stopped, port taken
  │ yes
Windows Firewall let it through?    - no -> rule bound to the wrong profile
  │ yes
line in the spool file?             - no -> EDR blocked NXLog, parse error

Většinu příček agent otestuje sám — odešle syntetický paket syslogu, zkontroluje naslouchající službu a přečte vlastní log NXLogu — a řekne ti, ve kterém bodě se událost ztratila. Ve Windows 11 bývá obvyklým viníkem Wi-Fi připojená s profilem Public, zatímco pravidlo platí pro profil Private.

Krok 6: Zajisti trvalý provoz

Ještě jeden prompt:

Create fwlogs.db with an events table keyed by device IP and receive time,
an ingest path and a read-only analyst access pattern, and a scheduled task
that loads closed spool files every five minutes, checks the sqlite3 exit
code before archiving each file, and prunes anything older than 90 days.

Mezikrok se spoolovacími soubory není kompromis — NXLog Community Edition stejně neumí ve Windows zapisovat přímo do databáze a spoolovací soubory navíc slouží jako znovu použitelný nezpracovaný důkaz. Kontrola návratového kódu je důležitá: soubor archivuj až poté, co SQLite potvrdí načtení, jinak kvůli přechodnému zámku potichu přijdeš o hodinu logů.

Pixelartový dokument proudící na kabelovou cívku, poté k pruhované zábraně, chráněnému válci, zelenému zaškrtnutí a bedně s klíčovou dírkou
Zábrana představuje kontrolu návratového kódu: bedna se zavře, až když SQLite potvrdí načtení.

Krok 7: Ptej se svých logů

Odměna přichází záměrně až nakonec — analýza je jen tak dobrá jako pipeline pod ní. Zkus:

Using the analyst account, summarize the last 24 hours: repeated auth
failures, deny spikes, source IPs never seen before, config changes outside
business hours. For each finding, list the supporting event IDs and one
plausible benign explanation.

Poslední věta odvádí skutečnou práci. Agent, který musí své vlastní závěry zpochybnit, tě upozorní na pokus o hrubou sílu proti VPN, ne na televizi kontrolující firmware ve tři ráno. Každé zjištění dostaneš s důkazem, který můžeš ověřit — protože účet agenta neumí nic jiného než číst.

Pixelartový člověk s lupou u monitoru, na němž jsou uvedeny typy zjištění s identifikátory událostí, a poznámkový blok s věrohodnými neškodnými vysvětleními
Poznámkový blok představuje poslední větu promptu: každé zjištění musí obstát proti nudnému vysvětlení.

Nástrahy, které tě připraví o čas

Pravidlo firewallu je navázané na profil Public. Wi-Fi ve Windows 11 ve výchozím nastavení používá profil Public a příchozí provoz na portu 514 potichu zahazuje. Nastav síť jako Private nebo pravidlo navaž na všechny profily, které používáš.

Sběrač usnul. UDP nic neopakuje — spící počítač s Win11 ztratí každou událost, dokud se neprobudí. powercfg /change standby-timeout-ac 0.

Logy přicházejí, ale ne ty, které potřebuješ. „Syslog funguje“ a „bezpečnostní události se předávají“ jsou na většině firewallů dva různé přepínače. Chybějící kategorie má vlastní filtr.

EDR umístilo NXLog do karantény. Nový binární soubor, který otevírá naslouchající port, vypadá jako malware. Přidej výjimku pro cestu před instalací, ne až po ní.

Agent chce firewall opravit za tebe. Nerozšiřuj jeho dosah jen proto, že krok 5 dopadl dobře. Bezpečným trvalým stavem je přístup pouze pro čtení s návrhy.

Kam ses dostal

Tvůj firewall mluvil celou dobu. Teď máš důkaz na disku, historii, ve které můžeš vyhledávat, a analytika ve službě, který všechno přečte a na nic nesáhne. Až bude příště v síti něco vypadat špatně, nebudeš pročítat diskusní fóra — zeptáš se vlastních logů.

Zdroje


Odebírat