在本文中,将介绍使用 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