如何使用tcp 和 udp 端口将syslog日志发送到远程服务器上

在本文中,将介绍使用 TCP 和 UDP 端口将系统日志转发到远程服务器的步骤,以便我们可以选择,但是注意,通过这种方式的传输是不安全的。
要保护传输通道,我们必须配置使用 TLS 证书 的rsylog。

配置环境

服务器:10.43.138.14 -> 将发送消息的
客户端:10.43.138.1 -> 接收消息的

必须在客户端设置上安装 nmap-ncat 以便校验输入的消息

nmap-ncat

在 Red Hat Linux 中如何使用 rsyslog 通过 tcp 和 udp 端口将日志消息发送到远程服务器(远程日志记录)

使用 TCP

如果我们希望使用 tcp 端口将系统日志文件传输到远程服务器,请按照以下步骤列表操作

在 /etc/rsyslog.conf 中使用了以下语法的旧版本 rsyslog

*.* @remote_server:port

注意:在上面使用单个“@”作为 TCP 突出显示

但是这个 sytanx 已被弃用,不应使用。

现在我们有了新的语法,这为我们提供了更多可供使用的选项。

在服务器上 (10.43.138.14)

在文件 /etc/rsyslog.conf 的末尾添加以下内容

*.* action(type="omfwd" target="192.0.2.1" port="10514" protocol="tcp")

注意:如果在此条目之前添加了其他规则,则在将这些消息发送到远程服务器之前将应用相同的规则,因此将此条目相应地放置在 rsyslog.conf 中

我们可以调整它以添加更多参数

*.* action(type="omfwd"
queue.type="LinkedList"
action.resumeRetryCount="-1"
queue.size="10000"
queue.saveonshutdown="on"
target="10.43.138.1" Port="10514" Protocol="tcp")

queue.type 启用 LinkedList 内存队列,queue_type 可以是 direct、linkedlist 或者 fixedarray(它们是内存队列)或者磁盘。

如果 rsyslog 关闭,则启用 queue.saveonshutdown 保存内存数据,

action.resumeRetryCount = “-1” 设置防止 rsyslog 在服务器没有响应时重试连接时丢弃消息,

queue.size 其中 size 表示磁盘队列部分的指定大小。
定义的大小限制不是限制性的,rsyslog 总是写入一个完整的队列条目,即使它违反了大小限制。

保存并重启 rsyslog 服务

# systemctl restart rsyslog

在客户端上操作

将提供的端口添加到防火墙

# iptables -A INPUT -p tcp --dport 10514  -j ACCEPT

接下来使用 nc 打开端口

# nc -l -p 10514 -4

在服务器端,我发送了一些虚拟消息

# logger "testing message from 10.43.138.14"

在客户端

<13>Jan 29 12:58:33 onitroad-client jack: testing message from 10.43.138.14

我们还应该开始从客户端上的服务器获取所有日志消息。

使用 UDP

如果我们希望使用 udp 端口将系统日志文件传输到远程服务器,请按照以下步骤列表操作

在 rsyslog.conf 中使用了以下语法的旧版本 rsyslog

*.* @@remote_server:port

注意:在上面对 UDP 突出显示时,在此处使用两次“@”

但是这个 sytanx 已被弃用,不应使用。

现在我们有了新的语法,这为我们提供了更多可供使用的选项。

在服务器上 (10.43.138.14)

在文件 /etc/rsyslog.conf 的末尾添加以下内容

*.* action(type="omfwd" target="192.0.2.1" port="10514" protocol="udp")

注意:如果在此条目之前添加了其他规则,则在将这些消息发送到远程服务器之前将应用相同的规则,因此将此条目相应地放置在 rsyslog.conf 中

我们可以调整它以添加更多参数

*.* action(type="omfwd"
queue.type="LinkedList"
action.resumeRetryCount="-1"
queue.size="10000"
queue.saveonshutdown="on"
target="10.43.138.1" Port="10514" Protocol="udp")

queue.type 启用 LinkedList 内存队列,queue_type 可以是 direct、linkedlist 或者 fixedarray(它们是内存队列)或者磁盘。

如果 rsyslog 关闭,则启用 queue.saveonshutdown 保存内存数据,

action.resumeRetryCount = “-1” 设置防止 rsyslog 在服务器没有响应时重试连接时丢弃消息,

queue.size 其中 size 表示磁盘队列部分的指定大小。
定义的大小限制不是限制性的,rsyslog 总是写入一个完整的队列条目,即使它违反了大小限制。

保存并重启 rsyslog 服务

# systemctl restart rsyslog

在客户端上

启用或者取消注释这两个整体以使客户端能够接收消息

# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514

接着是重启rsyslog服务

# systemctl restart rsyslog

接下来将提供的端口添加到防火墙

# iptables -A INPUT -p udp --dport 10514  -j ACCEPT

并开始侦听我们正在使用的端口(因为这是一个 UDP 端口,因此我使用了 -u)

# nc -l -p 10514 -4 -u

现在我们都准备好了,所以让我们从我们的服务器节点使用记录器发送一条消息

# logger "Testing rsyslog message using udp port"

同样出现在我们的客户端

<13>Jan 29 14:37:32 Ban17-be002-2b jack: Testing rsyslog message using udp port
日期:2020-06-02 22:17:04 来源:oir作者:oir