Ask questions. Get answers. Find technical product solutions from passionate experts in the NXLog community.
Suppress NXLog Error Logging from Specific Module
casey1234 created
Hi,
I am using NXLog to run a script via im_exec and the internal restart true feature which restarts my script when it ends.
The thing I'm noticing is that it's filling up the nxlog.log file with error conditions because the script stopped.
ERROR Module test got EOF, process exited?
The script is restarting deliberately so I don't need to know about these specific messages from this specific module.
How can I suppress error logging from a specific module?
Have a wonderful day!
NOTE: I was able to get it working a different way.
The solution involves executing a script on startup to get the initial useful data and send it to a log file. From there NXLog searches for that file and copies it to gateway.log. The input module im_file then reads that file which initiates the heartbeat. The way that im_file works is that it caches the file and won’t read from it again unless the file changes(modifying last modified doesn’t appear to count as a change). To that end I added logic that would periodically delete and re-copy the file. In this way im_file has a new file to read from, and thus send the heartbeat.
While NXLog logs when the new files are read, they are logged as WARNING, not ERROR, so you can set the LogLevel to ERROR
<Extension _filedelete>
Module xm_fileop
<Schedule>
Every 25 sec
<Exec>
if file_exists('%GATEWAY%.log') file_remove('%GATEWAY%.log');
if file_exists('%GATEWAY%') file_copy('%GATEWAY%', '%GATEWAY%.log');
</Exec>
</Schedule>
</Extension>
<Input ipGateway>
Module im_file
PollInterval 60
ReadFromLast false
SavePos false
File '%GATEWAY%.log'
<Exec>
$gateway = $raw_event;
</Exec>
</Input>
This is not meant to be some kind of groundbreaking discovery. I only post it here in case someone else ends up trying to figure out this requirement.
Hope this helps!
casey1234 created
Windows Logging
smplegge created
Attempting to log to a syslog server based upon the specified filtered log ID's. When I use this config, I do not get any errors in the error log when the service starts. However I do not get anything to my syslog server. Not sure if this a problem with the in or output and would love some feedback.
Panic Soft
#NoFreeOnExit TRUE
define ROOT C:\Program Files (x86)\nxlog
define CERTDIR %ROOT%\cert
define CONFDIR %ROOT%\conf
define LOGDIR %ROOT%\data
define LOGFILE %LOGDIR%\nxlog.log
LogFile %LOGFILE%
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
<Extension _syslog>
Module xm_syslog
</Extension>
define HighEventIds 4618, 4649, 4719, 4765, 4766, 4794, 4897, 4964, 5124, 1102
define MediumEventIds 4621, 4675, 4692, 4693, 4706, 4713, 4714, 4715, 4716, 4724,
4727, 4735, 4737, 4739, 4754, 4755, 4764, 4764, 4780, 4816,
4865, 4866, 4867, 4868, 4870, 4882, 4885, 4890, 4892, 4896,
4906, 4907, 4908, 4912, 4960, 4961, 4962, 4963, 4965, 4976,
4977, 4978, 4983, 4984, 5027, 5028, 5029, 5030, 5035, 5037,
5038, 5120, 5121, 5122, 5123, 5376, 5377, 5453, 5480, 5483,
5484, 5485, 6145, 6273, 6274, 6275, 6276, 6277, 6278, 6279,
6280, 24586, 24592, 24593, 24594
define LowEventIds 4608, 4609, 4610, 4611, 4612, 4614, 4615, 4616, 4624, 4625,
4634, 4647, 4648, 4656, 4657, 4658, 4660, 4661, 4662, 4663,
4672, 4673, 4674, 4688, 4689, 4690, 4691, 4696, 4697, 4698,
4699, 4700, 4701, 4702, 4704, 4705, 4707, 4717, 4718, 4720,
4722, 4723, 4725, 4726, 4728, 4729, 4730, 4731, 4732, 4733,
4734, 4738, 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747,
4748, 4749, 4750, 4751, 4752, 4753, 4756, 4757, 4758, 4759,
4760, 4761, 4762, 4767, 4768, 4769, 4770, 4771, 4772, 4774,
4775, 4776, 4778, 4779, 4781, 4783, 4785, 4786, 4787, 4788,
4789, 4790, 4869, 4871, 4872, 4873, 4874, 4875, 4876, 4877,
4878, 4879, 4880, 4881, 4883, 4884, 4886, 4887, 4888, 4889,
4891, 4893, 4894, 4895, 4898, 5136, 5137
<Input events>
Module im_msvistalog
<QueryXML>
<QueryList>
<Query Id="0" Path="Directory Service">
<Select Path="Directory Service">*[System[Provider[
@Name='Microsoft-Windows-ActiveDirectory_DomainService']]]
</Select>
</Query>
</QueryList>
</QueryXML>
<Exec>
if $EventID NOT IN (%HighEventIds%) and
$EventID NOT IN (%MediumEventIds%) and
$EventID NOT IN (%LowEventIds%) drop();
</Exec>
</Input>
<Output udp>
Module om_udp
Host 172.17.103.13
Port 514
Exec to_syslog_snare();
</Output>
<Route uds_to_udp>
Path events => udp
</Route>
<Extension _charconv>
Module xm_charconv
AutodetectCharsets iso8859-2, utf-8, utf-16, utf-32
</Extension>
<Extension _exec>
Module xm_exec
</Extension>
<Extension _fileop>
Module xm_fileop
# Check the size of our log file hourly, rotate if larger than 5MB
<Schedule>
Every 1 hour
Exec if (file_exists('%LOGFILE%') and \
(file_size('%LOGFILE%') >= 5M)) \
file_cycle('%LOGFILE%', 8);
</Schedule>
# Rotate our log file every week on Sunday at midnight
<Schedule>
When @weekly
Exec if file_exists('%LOGFILE%') file_cycle('%LOGFILE%', 8);
</Schedule>
</Extension>
smplegge created
Debian buster binary package
nxpart created
I am looking for the buster Debian package. I already tried stretch version but it complained about unmet dependencies related to libssl.
The following packages have unmet dependencies:
nxlog-ce : Depends: libperl5.24 (>= 5.24.0) but it is not installable
Depends: libssl1.0.2 (>= 1.0.2d) but it is not installable
root@debian:~# dpkg --search libssl
libssl1.1:amd64: /usr/share/doc/libssl1.1
libssl1.1:amd64: /usr/share/doc/libssl1.1/changelog.Debian.gz
libssl-dev:amd64: /usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc
libssl1.1:amd64: /usr/share/doc/libssl1.1/NEWS.Debian.gz
libssl-dev:amd64: /usr/share/doc/libssl-dev/changelog.gz
libssl1.1:amd64: /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl-dev:amd64: /usr/share/doc/libssl-dev
libssl-dev:amd64: /usr/lib/x86_64-linux-gnu/libssl.a
libssl-dev:amd64: /usr/share/doc/libssl-dev/copyright
libssl1.1:amd64: /usr/share/doc/libssl1.1/copyright
libssl-dev:amd64: /usr/lib/x86_64-linux-gnu/libssl.so
libssl-dev:amd64: /usr/share/doc/libssl-dev/changelog.Debian.gz
android-libboringssl: /usr/lib/x86_64-linux-gnu/android/libssl.so.0
libssl1.1:amd64: /usr/share/doc/libssl1.1/changelog.gz
root@debian:~# dpkg --search libperl
libperl5.28:amd64: /usr/share/doc/libperl5.28/changelog.Debian.gz
libperl5.28:amd64: /usr/lib/x86_64-linux-gnu/libperl.so.5.28
libperl5.28:amd64: /usr/share/doc/libperl5.28
libperl5.28:amd64: /usr/lib/x86_64-linux-gnu/libperl.so.5.28.1
libperl5.28:amd64: /usr/share/doc/libperl5.28/copyright
I think it's because of compile, so I tried to compiled it myself on a Debian buster but I stuck on ./configure which can not find libcrypto.(libssl-dev installed, libraries exist in lib path, ... )
I appreciate if anyone can share the binary package for buster release.
Thank you.
nxpart created
Execute a BASH one liner but stuck on NXLog syntax
casey1234 created
Hi,
I'm trying to execute the following bash command using NXLog's im_exec input module:
/usr/sbin/route -n | grep 'UG[ \t]' | awk '{print $2}'
From the Linux terminal that command will give the local gateway.
When I attempt to run the command in NXLog I get the following:
2020-01-24 13:43:09 WARNING im_exec process /usr/sbin/route exited
2020-01-24 13:43:10 ERROR subprocess '8114' returned a non-zero exit value of 3
Input module I'm using to execute the command:
<Input Bash>
Module im_exec
Restart true
Command /usr/sbin/route
Arg -n | grep 'UG[ \t]' | awk '{print $2}'
Arg grep 'UG[ \t]'
Arg awk '{print $2}'
Arg sleep 30
<Exec>
$gateway = $raw_event;
</Exec>
</Input>
I've tried various combinations of configuring the Arg's but so far no luck.
If I try putting everything in the Command field I get this error:
/usr/sbin/route -n |grep 'UG[ \t]'| awk '{print $2}';sleep 30;No such file or directory
Can someone help me with the correct syntax?
NOTE: It seems like the problem is with using the | character in the command. Anyone know if NXLog will accept this argument or what syntax I need to use?
Thanks in advance!!
casey1234 created
ERROR invalid keyword: CaptureEventXML at C:\Program Files (x86)\nxlog\conf\nxlog.conf
cpkg created
I am following the nxlog to splunk guide here: https://nxlog.co/documentation/nxlog-user-guide/splunk.html. Specifically, section '93.3. Sending Specific Log Types for Splunk to Parse'. When testing, even using the config from the page, I am still getting an error (see further below)
<Input eventxml>
Module im_msvistalog
Channel Security
CaptureEventXML TRUE
Exec $raw_event = $EventXML;
</Input>
<Output splunk_hec>
Module om_http
URL https://127.0.0.1:8088/services/collector/raw
AddHeader Authorization: Splunk c6580856-29e8-4abf-8bcb-ee07f06c80b3
</Output>
This generates this error: ERROR invalid keyword: CaptureEventXML at C:\Program Files (x86)\nxlog\conf\nxlog.conf
Any ideas? thanks
cpkg created
Rotate logs with multiple files
ddm70 created
Hello,
I'm using nxlog community to send logs from my firewalls through syslog.
My output is like that:
<output log_to_file>
module om_file
File 'c:\datas\firewall_' + $MessageSourceAddress + '.log'
<output>
If my firewalls 192.168.1.1 and 192.168.1.2 are correctly configured, the result will be two files:
c:\datas\firewall_192.168.1.1.log and c:\datas\firewall_192.168.1.2.log
My problem is now to rotate this file on a daily basis.
I've tried to apply the command rotate_to but it seems that it applies only on the first file.
How can I do rotation on multiple files with names based on a variable ?
Thank you !
ddm70 created
om_udp listens on 0.0.0.0:514?
mkangindep created
nxlog-ce 2.9.1716 on Windows 10/Server 2016.
The usage of om_udp seems to cause nxlog.exe to listen on ephemeral port. om_tcp does not cause this.
I can't find anything in documentation that explains this behavior.
Please help.
MK
mkangindep created
kvp parser
Stanislav created
After using kvp parser i've got variables with spaces in names. For example: "$Event Time" or "$Source Name".
I'm interested in two things:
How i can interact with this variable names? For example i'm trying construction "$EventTime = $Event Time;" with many shield variations: ",',),], etc, but this not work.
it is possible to prevent this situation? Massage format example below:
"DeviceEvent: Virus found,IP Address: 10.X.X.X,Computer name: xxx-xxx,Source: Auto-Protect scan,Risk name: Infostealer.Gampass,Occurrences: 1,File path: X:\xxxx_xxx.exe,Description: ,Actual action: Moved back,Requested action: Quarantined,Secondary action: Deleted,Event time: 2020-01-21 17:24:58,Event Insert Time: 2020-01-21 17:27:06,End Time: 2020-01-21 17:59:17,Last update time: 2020-01-21 18:01:07,Domain Name: xxxx,Group Name: XXXX,Server Name: xx-xxx,User Name: SYSTEM,Source Computer Name: ,Source Computer IP: ,Disposition: Reputation was not used in this detection.........."
Stanislav created
Send a message to syslog server
GustavoM created
Hello,
I am sending a message with hostname to my syslog server, my conf is as follows:
define ROOT C: \ Program Files (x86) \ nxlog
Moduledir% ROOT% \ modules
CacheDir% ROOT% \ data
Pidfile% ROOT% \ data \ nxlog.pid
SpoolDir% ROOT% \ data
LogFile% ROOT% \ data \ nxlog.log
<Extension _syslog>
Module xm_syslog
</Extension>
<Input in>
Module im_msvistalog
<Exec>
parse_syslog ();
$ Message = "hostnamexxx" + $ Message;
to_syslog_ietf ();
</Exec>
</Input>
<Output out>
Om_udp module
Host xx.xxx.xx
Port 514
Exec to_syslog_ietf ();
</Output>
<Route 1>
Path in => out
</Route>
My log is coming with the message correctly:
Feb 12 23:11:34 DESKTOP-XXXXX Microsoft-Windows-Eventlog [964] hostnamexxxxINFO 1102 The audit log was cleared. Subject: Security ID: # xxxxxxxx-1001 Account Name: Admin Domain Name: DESKTOP-XXXXX Logon ID: 0xD438A
However, the message "hostnamexxxx" is coming in the middle of the log, as you can see above. This is disturbing my parser, is there any way I can put this "hostnamexxxx" message last in my log? Example:
Feb 12 23:11:34 DESKTOP-XXXXX Microsoft-Windows-Eventlog [964] INFO 1102 The audit log was cleared. Subject: Security ID: # xxxxxxxx-1001 Account Name: Admin Domain Name: DESKTOP-XXXXX Logon ID: 0xD438A hostnamexxxx
Thanks
GustavoM created
Multiple routes with hmac verification issue
Jean created
Hello everyone,
I'm having trouble architecturing something with hmac verification, any help of yours would be welcome.
I'm trying to setup an architecture with three clients/servers and using hmac/hmac_check to guarantee the integrity of the logs. Logs 1 are created by client 1 and sent to client 2, which check their integrity, logs 2 are created by client 2, and both logs 1 and 2 are send in the end to client 3 which finally check for integrity for both of them. Here is a "beautiful" scheme to illustrate my words:
client 1 ---hmac(logs 1)---> client 2 ---hmac_check(logs 1) + hmac(logs 2)---> client 3 ---hmac_check(logs 1) + hmac_check(logs2) + hmac(logs 3)-->...
I would have multiple routes on each clients and I would use different instances of each processor on each route to avoid having errors like "processor X already used in route A and was not load in the route B". Also, I would be using batchcompress between client 1 and 2 but UDP between client 2 and 3.
I'm wondering how you would do this thing? Would you open multiple UDP ports on client 3 to receive independantly logs coming from client 1 and client 2 and check the hmac independantly or would you send those two logs on the same network port and check them with the same hmac_check processor? And would you use multiple routes to process independantly logs coming from different clients because of the hmac integrity check?
Thank you in advance,
Kind Regards,
Jean created
Set Interval for input modules
casey1234 created
Say I wanted to run a PowerShell script on an interval using the im_exec module how would I do that?
<Input powershell>
Module im_exec
Command "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
Arg "script goes here"
<Exec>
$output = $raw_event;
</Exec>
</Input>
I can make the interval work by creating pauses in the code but then it appears as though the script process would run forever which is undesirable for efficiency and stability reasons.
Is there a way to run the code on a interval, say every fifteen minutes?
Thoughts?
Thanks in advance!!
casey1234 created
Take the output string from BASH or PowerShell command and save it as a variable
casey1234 created
Hi,
It's basically what the title implies.
I want to run a command that produces a string and save it as a variable to be used later in various output blocks.
So far the command is working and I can send the output to a om_file logfile but I don't know how to assign the value to a variable to be used elsewhere in the config.
<Input powershell>
Module im_exec
Command "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
Arg "$IP = Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled};$IP.DefaultIPGateway"
<Exec>
parse_json();
$EventTime = parsedate($EventTime);
</Exec>
</Input>
Thanks!!
casey1234 created
Support of SNARE format
Nellsoft created
Hello,
The documentation about the support of SNARE format (https://nxlog.co/documentation/nxlog-user-guide/snare.html) describes how the account name should be passed.
However, the function to_syslog_snare(), puts N/A in that field instead of the username in the Windows event. This happens both in the example output (https://nxlog.co/documentation/nxlog-user-guide/snare.html#generating-snare) and with the latest nxlog community edition. Is this a bug or a paying feature of the enterprise edition?
Sincerely
Nellsoft created
NXLog Enterprise v4 won't read Windows Security log, v3 fails to ResolveSID
hip_nxlog created
Hi all,
I'm trying to deploy NXLog Enterprise to a couple of Windows domain controllers, pointed to Graylog to audit security.
As part of this, we need the "ResolveSID" feature so have gone Enterprise edition. Unfortunately only got a 1 year sub approved which doesn't allow enterprise support :(
However with Enterprise edition, the only Security events that NXLog sends to Graylog are "Event log automatic backup" events when the .evtx files get rotated - nothing else from Security (all other sources seem OK).
The interesting thing here is that the Community edition doesn't have this problem - security events are forwarded just fine.
I've also tried the 32bit v4 Enterprise MSI (since the Community edition is 32bit), but it exhibits the same behaviour as above.
The v3 Enterprise edition seems to mostly work, but ignores "ResolveSID TRUE" (it reads the setting ok, I've tested this by changing it to a non-boolean value to test that it read it to complain about it, and it did, but when set to TRUE, it still sends unresolved numeric SIDs through for Event ID 4627 "Group membership information" events)
Does anyone have any further troubleshooting tips for either of these problems? Ideally I'd like to get v4 working.
Thanks
hip_nxlog created
Not sending to syslog
ebjers created
I am trying to use nxlog to read from a text file and send to a syslog collector from Rapid7.
I have read through Rapid7's documentation found at https://insightidr.help.rapid7.com/docs/nxlog
I have verified that the input is working by outputting to a text file and verifying there was output, but it will not output to syslog.
This is traversing a firewall and I have the proper rules in place, I can also see that the traffic is not getting to the firewall as there are no packets dropped or captured at the firewall so my only logical conclusion is nxlog is not sending the output to syslog.
ICMP (Ping) traffic goes through the firewall so there is connectivity.
Is there a debug log mode for nxlog where I can get more details on what is happening.
Here is my config file:
Panic Soft
#NoFreeOnExit TRUE
define ROOT C:\Program Files (x86)\nxlog
define CERTDIR %ROOT%\cert
define CONFDIR %ROOT%\conf
define LOGDIR %ROOT%\data
define LOGFILE %LOGDIR%\nxlog.log
LogFile %LOGFILE%
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
<Extension _syslog>
Module xm_syslog
</Extension>
<Extension _charconv>
Module xm_charconv
AutodetectCharsets iso8859-2, utf-8, utf-16, utf-32
</Extension>
<Extension fileop>
Module xm_fileop
</Extension>
<Input Ping_Audit>
Module im_file
File 'C:\ping-logs\audit.log'
SavePos TRUE
ReadFromLast TRUE
PollInterval 1
<Exec>
if $raw_event =~ /^#. drop();
else
{
to_syslog_bsd();
}
</Exec>
</Input>
<Output Rapid7_5004>
Module om_udp
Host 192.168.251.201
Port 5004
</Output>
<Route 1>
Path Ping_Audit => Rapid7_5004
</Route>
<Extension _exec>
Module xm_exec
</Extension>
<Extension _fileop>
Module xm_fileop
# Check the size of our log file hourly, rotate if larger than 5MB
<Schedule>
Every 1 hour
Exec if (file_exists('%LOGFILE%') and \
(file_size('%LOGFILE%') >= 5M)) \
file_cycle('%LOGFILE%', 8);
</Schedule>
# Rotate our log file every week on Sunday at midnight
<Schedule>
When @weekly
Exec if file_exists('%LOGFILE%') file_cycle('%LOGFILE%', 8);
</Schedule>
</Extension>
ebjers created
View Output Logs
casey1234 created
Hi,
I'm using NXLog on Windows to send Event Log data into Google BigQuery but I'm not seeing my data.
There appears to be no errors in nxlog.log
When I use this:
<Output out>
Module om_file
File 'C:\Program Files (x86)\nxlog\data\nxlogfile.log'
</Output>
I can see the data from the event log being logged.
Is there a module that logs all data as it's being transmitted?
Thanks in advance!!
casey1234 created
drop if empty field
Armaggedon created
I have a file with multiple log lines, but I'm only interested in one type that has 6 fields in CSV format. I want to discard all the rest. So I have this [partial] file:
<Extension csv>
Module xm_csv
Fields $time, $date, $host, $from, $ip, $loginfo, $color
FieldTypes string, string, string, string, string, string, integer
Delimiter |
</Extension>
<Input M2P_In>
Module im_file
File "C:\\M2PLogs\\log*"
SavePos TRUE
<Exec>
if $raw_event =~ /^#/ drop();
else
{
csv->parse_csv();
if ( not defined $color ) drop();
$message = $raw_event;
$raw_event = to_json();
}
</Exec>
</Input>
In this case, if the line doesn't have 6 fields, I understand the $color field will be undefined. But it doesn't work, I get both lines in output: the correct one being processed and the rest in plain text.
Perhaps I'm following the wrong approach, so I'm also open for alternatives. Could you please help?
Armaggedon created
NXLog 4.3.4308 remote ssl socket was reset
hatula created
Hi everybody!
I have a problem with collecting logs.
Сlient application logs:
2020-01-09 15:24:54 INFO connected to server OK
2020-01-09 15:25:22 INFO reconnecting in 1 seconds
2020-01-09 15:25:22 ERROR remote ssl socket was reset? (SSL_ERROR_SYSCALL with errno=9); End of file found
TCP dump at the moment error:
C: Client Hello
S: Server Hello, Certificate, Certificate Request, Server Hello Done
C: Certificate, Client Key Exchange, Certificat Verify, Change Cipher Spec, Encrypted Handshake Message
S: New Session Ticket, Change Cipher Spec, Encrypted Handshake Message
C: Application Data
S: Encrypted Alert
And part of the data segment is looped, the infinitely the same fragment of data is stored in the log file on the server side.
How I may to detect the cause of this problem? I hope you help me, please.
May be, I need to correct deep parameters of network settings?
Thank you!
hatula created
Single Line Logs (SAP)
Alexandr created
Hi!
Please help,
Is it possible to collect single line logs from file, without newline characters (SAP for example) with NxLog?
In Splunk Heavy Forwarder this function work with Line Breaker(Regex)
LINE_BREAKER = ([23])[A-Z][A-Z][A-Z0-9]\d{14}00
Alexandr created
IS nxlog available for Centos 8
Oren.Shani created
Hi All,
I recently upgraded a machine (used for evaluating graylog) from CentOS 7 to CentOS 8 and it turns out that nxlog was removed in the process.
Now I can't find it in the CentOS 8 dnf packages.
Is nxlog available for Centos 8? and if so, who can I install it?
Many thanks,
Oren
Oren.Shani created