108.23. Resolver (xm_resolver)
This module provides provides functions for resolving (converting between) IP addresses and names, and between group/user ids and names. The module uses an internal cache in order to minimize the number of DNS lookup queries.
108.23.1. Configuration
The xm_resolver module accepts the following directives in addition to the common module directives.
- CacheExpiry
-
Specifies the time in seconds after entries in the cache are considered invalid and are refreshed by issuing a DNS lookup. The default expiry is 3600 seconds.
- CacheLimit
-
This directive can be used to specify an upper limit on the number of entries in the cache in order to prevent the cache from becoming arbitrary large and potentially exhausting memory. When the number of entries in the cache reaches this value, no more items will be inserted into the cache. The default is 100,000 entries.
108.23.2. Functions
The following functions are exported by xm_resolver.
- string
uid_to_name(integer uid)
-
Return the username corresponding to the user ID. If uid cannot be looked up, undef is returned.
- string
uid_to_name(string uid)
-
Return the username corresponding to the user ID or SID. This function takes a string which is normally a SID on Windows or an integer UID on Unix. On Windows this function will convert the SID to a string in the format of
DOMAIN\USER
. If uid cannot be looked up, undef is returned.
108.23.3. Examples
It is common for devices to send Syslog messages containing the IP address of the device instead of a real hostname. In this example, Syslog messages are parsed and the hostname field of each Syslog header is converted to a hostname if it looks like an IP address.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<Extension syslog>
Module xm_syslog
</Extension>
<Extension _resolver>
Module xm_resolver
</Extension>
<Input tcp>
Module im_tcp
Host 0.0.0.0
Port 1514
<Exec>
parse_syslog();
if $Hostname =~ /^\d+\.\d+\.\d+\.\d+/
{
$HostIP = $Hostname;
$Hostname = ipaddr_to_name($HostIP);
if not defined $Hostname $Hostname = $HostIP;
}
</Exec>
</Input>
<Output file>
Module om_file
File 'tmp/output'
Exec to_syslog_bsd();
</Output>
<Route tcp_to_file>
Path tcp => file
</Route>
<38>2014-11-11 11:40:27 127.0.0.1 sshd[3436]: Failed none for invalid user asdf from 127.0.0.1 port 51824 ssh2
<38>2014-11-12 12:42:37 127.0.0.1 sshd[3436]: Failed password for invalid user fdsa from 127.0.0.1 port 51824 ssh2
<38>Nov 11 11:40:27 localhost sshd[3436]: Failed none for invalid user asdf from 127.0.0.1 port 51824 ssh2
<38>Nov 12 12:42:37 localhost sshd[3436]: Failed password for invalid user fdsa from 127.0.0.1 port 51824 ssh2