← सिस्टम्स पर वापस

Cursor के साथ फ़ायरवॉल लॉग पाइपलाइन

cursorai-agentssyslognxlogpfsensefirewallwindowssqlite

तुमने वह सब किया जो दस्तावेज़ों में लिखा था। pfSense बॉक्स पर रिमोट लॉगिंग चालू की, उसे अपनी Windows मशीन की ओर भेजा और UDP 514 खोला। कुछ नहीं आया। Netgate फ़ोरम पर एक दशक से भी ज़्यादा समय से ठीक इसी ख़ामोशी पर चर्चाएँ जमा होती रही हैं — लॉग बने लेकिन कभी भेजे नहीं गए, रीबूट के बाद syslogd चुपचाप बंद हो गया। फ़ायरवॉल और तुम्हारी डिस्क के बीच कहीं इवेंट ग़ायब हो गया — और इस कड़ी में कुछ भी तुम्हें नहीं बताएगा कि वह कहाँ गया।

मानक समाधान SIEM है, जो एक समस्या के बदले तुम्हें उससे बड़ी समस्या देता है: अब Elasticsearch की ज़िम्मेदारी तुम्हारी है। यह गाइड दूसरा रास्ता अपनाती है। तुम Cursor खोलते हो, पाँच सवालों के जवाब देते हो और कमांडों को मंज़ूरी देते हो, जबकि एक AI एजेंट फ़ायरवॉल लॉग पाइपलाइन बनाता है। आख़िर में तुम्हारी डिस्क पर एक सत्यापित फ़ायरवॉल इवेंट, स्थानीय डेटाबेस में खोजा जा सकने वाला इतिहास और एक ऐसा AI विश्लेषक होगा जो तुम्हारे लॉग पढ़ सकता है — लेकिन तुम्हारे फ़ायरवॉल को छू नहीं सकता।

कुल फ़ुटप्रिंट: एक Windows सेवा, एक फ़ोल्डर, एक SQLite फ़ाइल।

पिक्सेल-आर्ट की ईंटों वाली फ़ायरवॉल, Windows कलेक्टर क्यूब, सुरक्षित SQLite ड्रम और टूटी हुई रेखा के पार जाँच करता जासूसी कर्सर
टूटी हुई रेखा ही सुरक्षा मॉडल है: देखो, छुओ मत।

वह फ़ायरवॉल लॉग पाइपलाइन जो तुम बना रहे हो

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

पूरे लेख में pfSense उदाहरण है, लेकिन syslog भेज सकने वाला कोई भी फ़ायरवॉल काम करेगा — OPNsense, UniFi, SonicWall या कोई मैनेज्ड स्विच। NXLog Community Edition पोर्ट 514 पर डेटा पाता है और JSON स्पूल फ़ाइलें लिखता है। एक शेड्यूल्ड टास्क उन्हें SQLite में लोड करता है। एजेंट केवल पढ़ने की अनुमति से उससे क्वेरी करता है और जो पाता है उसकी रिपोर्ट देता है।

रुको — क्या Cursor एक कोडिंग टूल नहीं है?

मार्केटिंग तो यही कहती है। उसके नीचे Cursor एक ऐसा एजेंट है जो फ़ाइलें पढ़ता है, फ़ाइलें लिखता है और तुम्हारी मंज़ूरी से टर्मिनल कमांड चलाता है। किसी sysadmin की दुनिया फ़ाइलों की होती है: कॉन्फ़िग, लॉग, स्क्रिप्ट और डेटाबेस। तुम कोड की एक भी पंक्ति नहीं लिखोगे — तुम दो नियंत्रण इस्तेमाल करोगे, चैट बॉक्स और मंज़ूरी बटन। एजेंट NXLog कॉन्फ़िग, SQL स्कीमा और ingest स्क्रिप्ट लिखता है; तुम उन्हें पढ़कर हाँ पर क्लिक करते हो।

ज़रूरी चीज़ें

आवश्यकता टिप्पणियाँ
Windows 10/11 या Server 2019+, x64 NXLog CE का Windows ARM64 बिल्ड नहीं है
कलेक्टर मशीन पर स्थिर IP DHCP रिज़र्वेशन भी काम करता है
मशीन चालू रहती हो Win11: स्लीप बंद करो, नहीं तो UDP लॉग चुपचाप ग़ायब हो जाते हैं
एडमिन अधिकार सेवा इंस्टॉल करने के लिए उन्नत अधिकार चाहिए
कोई भी फ़ायरवॉल जो syslog भेज सके तुम्हें उसके एडमिन पैनल को एक बार छूना होगा
Cursor इंस्टॉल हो मुफ़्त टियर काफ़ी है

चरण 1: कुछ भी चलने से पहले पाँच जवाब

एक फ़ोल्डर — C:\fw-pipeline — बनाओ और उसे Cursor में खोलो। एक फ़ाइल 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

एजेंट जो कुछ भी बनाता है, वह इन्हीं पाँच पंक्तियों से निकलता है। वेंडर और वर्ज़न तय करते हैं कि वह तुम्हें किन बटनों पर क्लिक करने को कहेगा। फ़ायरवॉल का IP डेटाबेस में डिवाइस कुंजी बनता है। data_stays_local: true का मतलब है कि विश्लेषण स्थानीय डेटाबेस पर चलता है — कच्चे लॉग कभी पूरे के पूरे किसी प्रॉम्प्ट में पेस्ट नहीं होते।

जो विवरण इस लेख में छोड़ दिए गए हैं, वे दो सहायक फ़ाइलों में हैं — डिप्लॉयमेंट संदर्भ और समस्या-निवारण के अक्सर पूछे जाने वाले सवाल। अगले चरण में एजेंट उन्हें डाउनलोड करता है; अगर तुम पहले देखना चाहो तो लिंक यहाँ मौजूद हैं।

पिक्सेल-आर्ट में पाँच जवाबों वाला क्लिपबोर्ड, जो एजेंट कॉन्फ़िग बनाने के लेबल वाली मशीन में जा रहा है, और कन्वेयर पर कपड़े से ढकी वस्तु
ढका हुआ बॉक्स ही मुख्य बात है: उन पाँच पंक्तियों के भरने तक कुछ नहीं बनता।

चरण 2: एजेंट से पहले सुरक्षा सीमाएँ

तिरपन प्रतिशत sysadmin बिना निगरानी के AI को प्रोडक्शन छूने नहीं देंगे। यह सही सहज-बोध है। नियमों को प्रॉम्प्ट में मत डालो — उन्हें वहाँ रखो जहाँ एजेंट उन्हें अनदेखा न कर सके। .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 इस फ़ोल्डर के हर सेशन में ये नियम लोड करता है। एजेंट प्रस्ताव रखता है; तुम मंज़ूरी देते हो। यह वही भरोसे का मॉडल है जो तुम किसी नए जूनियर एडमिन पर लागू करोगे — फ़र्क बस इतना है कि यह कभी ऊबता नहीं और लॉग की हर पंक्ति पढ़ता है।

पिक्सेल-आर्ट में एजेंट प्रस्तावित बदलाव पकड़े हुए है, जबकि एक व्यक्ति लंबित कमांडों वाली स्क्रीन पर Approve की ओर इशारा कर रहा है; फ़ायरवॉल और लॉक किए डेटाबेस से पहले एक लाल टूटी हुई रेखा है
उस क्लिपबोर्ड पर कुछ भी तथ्य नहीं है, जब तक वह टूटी हुई रेखा पार नहीं करता।

चरण 3: एजेंट को कलेक्टर बनाने दो

अब पहला असली प्रॉम्प्ट — इसे चैट में पेस्ट करो:

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.

तुम एक MSI इंस्टॉल, बने हुए nxlog.conf और एक New-NetFirewallRule को मंज़ूरी दोगे। बने हुए कॉन्फ़िग में दो चीज़ें जाँचो: इनपुट पर parse_syslog(), ताकि RFC 3164 और RFC 5424 दोनों साफ़-सुथरे ढंग से दर्ज हों, और बढ़ा हुआ SockBufSize, क्योंकि Windows का डिफ़ॉल्ट UDP बफ़र बहुत छोटा होता है और तेज़ी से आने वाले लॉग गिरा देता है।

सत्यापित करो:

Get-Service nxlog   # Status: Running

चरण 4: फ़ायरवॉल को इसकी ओर भेजो

यह अकेला मैन्युअल चरण है। एजेंट answers.yaml पढ़कर तुम्हारे प्लेटफ़ॉर्म के लिए बिल्कुल सही क्लिक बताता है, लेकिन उन्हें तुम दर्ज करते हो — फ़ायरवॉल उसकी पहुँच से बाहर रहता है। pfSense पर: Status → System Logs → Settings → Remote Logging — इसे चालू करो, कलेक्टर IP और पोर्ट 514 भरो, फिर अपनी मनचाही श्रेणियों पर सही का निशान लगाओ। दूसरे फ़ायरवॉल में भी यही तरीका है: destination = collector IP, port 514, और उपलब्ध हो तो RFC 5424।

एक नियम हर कोई भूल जाता है: अगर कलेक्टर किसी दूसरे सेगमेंट पर है, तो फ़ायरवॉल को ऐसा एग्रेस नियम चाहिए जो उसे स्वयं पोर्ट 514 तक पहुँचने दे। फ़ायरवॉल अपने ही गिराए हुए syslog को लॉग नहीं करेगा।

चरण 5: पहला इवेंट — या वह जहाँ ग़ायब हुआ

स्पूल फ़ोल्डर पर नज़र रखो। अगर कोई fw-*.json फ़ाइल दिखाई देती है और बढ़ती है, तो कठिन हिस्सा पूरा हो चुका है। अगर कुछ नहीं आता — यहीं हर दूसरी गाइड कंधे उचका देती है। एजेंट से इस सीढ़ी पर चलने को कहो:

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

एजेंट ज़्यादातर पायदानों की जाँच ख़ुद करता है — एक कृत्रिम syslog पैकेट भेजता है, listener जाँचता है, NXLog का अपना लॉग पढ़ता है — और तुम्हें बताता है कि किस पड़ाव पर तुम्हारा इवेंट गिरा। Windows 11 पर आम दोषी यह होता है: Wi-Fi को Public के रूप में जोड़ा गया है, जबकि नियम Private से बँधा है।

चरण 6: इसे टिकाऊ बनाओ

एक और प्रॉम्प्ट:

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.

स्पूल-फिर-ingest कोई समझौता नहीं है — NXLog Community Edition वैसे भी Windows पर सीधे डेटाबेस में नहीं लिख सकता, और स्पूल फ़ाइलें दोबारा चलाई जा सकने वाली कच्ची गवाही का काम भी करती हैं। exit-code की जाँच मायने रखती है: फ़ाइल को तभी archive करो जब SQLite लोड की पुष्टि कर दे, वरना थोड़ी देर का lock चुपचाप एक घंटे के लॉग निगल सकता है।

पिक्सेल-आर्ट में दस्तावेज़ केबल स्पूल की ओर, फिर धारीदार अवरोध, सुरक्षित सिलिंडर, हरे सही के निशान और की-होल वाले बक्से की ओर बह रहा है
अवरोध ही exit-code की जाँच है: SQLite के लोड की पुष्टि करने के बाद ही बक्सा बंद होता है।

चरण 7: अपने लॉग से सवाल पूछो

फ़ायदा जानबूझकर आख़िर में आता है — विश्लेषण उतना ही अच्छा होता है जितनी अच्छी उसके नीचे की पाइपलाइन। यह आज़माओ:

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.

वह आख़िरी शर्त सचमुच काम करती है। अपने ही निष्कर्षों के ख़िलाफ़ तर्क देने को मजबूर एजेंट तुम्हें VPN पर brute-force प्रयास की चेतावनी देता है, तुम्हारे टीवी के सुबह 3 बजे firmware जाँचने की नहीं। हर निष्कर्ष ऐसी गवाही के साथ आता है जिसे तुम सत्यापित कर सकते हो — क्योंकि एजेंट का खाता पढ़ने के अलावा कुछ कर ही नहीं सकता।

पिक्सेल-आर्ट में आवर्धक शीशे वाला व्यक्ति ऐसे मॉनिटर के सामने है जिस पर इवेंट ID के साथ निष्कर्षों के प्रकार सूचीबद्ध हैं, और पास में संभावित निर्दोष व्याख्याओं वाला नोटपैड है
नोटपैड प्रॉम्प्ट की आख़िरी शर्त है: हर निष्कर्ष को एक उबाऊ व्याख्या के सामने टिकना होगा।

वे मुश्किलें जो तुम्हारा समय बरबाद करेंगी

फ़ायरवॉल नियम Public प्रोफ़ाइल से बँधा है। Wi-Fi पर Windows 11 डिफ़ॉल्ट रूप से Public होता है और आने वाले 514 को चुपचाप गिरा देता है। नेटवर्क को Private करो, या नियम को अपनी इस्तेमाल की हर प्रोफ़ाइल से बाँधो।

कलेक्टर स्लीप में चला गया। UDP दोबारा कोशिश नहीं करता — सोई हुई Win11 मशीन जागने तक हर इवेंट खो देती है। powercfg /change standby-timeout-ac 0

लॉग आते हैं, लेकिन वे नहीं जिनकी तुम्हें ज़रूरत है। “Syslog काम करता है” और “सुरक्षा इवेंट आगे भेजे जा रहे हैं” ज़्यादातर फ़ायरवॉल पर अलग-अलग स्विच हैं। ग़ायब श्रेणी का अपना फ़िल्टर होता है।

EDR ने NXLog को quarantine कर दिया। listening पोर्ट खोलती नई binary malware जैसी दिखती है। इंस्टॉल करने से पहले path exclusion जोड़ो, बाद में नहीं।

एजेंट तुम्हारे लिए फ़ायरवॉल ठीक करना चाहता है। केवल इसलिए उसकी पहुँच मत बढ़ाओ क्योंकि चरण 5 अच्छा रहा। प्रस्तावों के साथ read-only पहुँच ही सुरक्षित स्थायी स्थिति है।

अब तुम कहाँ हो

तुम्हारा फ़ायरवॉल हमेशा बोल रहा था। अब डिस्क पर सबूत है, ऐसा इतिहास है जिससे तुम क्वेरी कर सकते हो, और हर चीज़ पढ़ने लेकिन कुछ न छूने वाला विश्लेषक हमेशा तैयार है। अगली बार नेटवर्क पर कुछ ग़लत लगेगा, तो तुम फ़ोरम की चर्चाएँ नहीं पढ़ रहे होगे — तुम अपने लॉग से पूछ रहे होगे।

संसाधन


सदस्यता लें