只能使用UDP:514端口接收Syslog日志的两种解决方法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 只能使用UDP:514端口接收Syslog日志的两种解决方法

只能使用UDP:514端口接收Syslog日志的两种解决方法


问题场景:


在接入网络安全设备例如防火墙,上网行为管理,IPS等设备和数通设备(交换机,路由器)的Syslog日志时, 有些网络安全设备和数通设备只能将Syslog日志发送到日志服务器的UDP 514端口,无法自定义修改为其他端口


但是GrayLog需要使用1024以上的端口用于Input监听端口用来接收日志


640.png


640.png



具体原因:参考GrayLog上的FAQ


How can I start an input on a port below 1024?
If you try to start an input on one of the privileged ports , it will only work for the “root” user. To be able to use a privileged port, you can use authbind on Debian-based systems, or you redirect the traffic with an iptables rule like this:
iptables -t nat -A PREROUTING -p tcp --dport 514 -j REDIRECT --to 1514
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to 1514
The input needs to be started on port 1514 in this case and will be made available on port 514

640.png


下面用两种方法来解决这个问题


一、使用nginx的stream模块实现四层负载均衡


yum install nginx nginx-mod-stream -y
修改默认的nginx.conf
将include /etc/nginx/conf.d/*.conf; 放置在上方


640.png


然后


cd /etc/nginx/conf.d/
vim syslog514to1514.conf 
添加如下
stream {
        upstream udp_backend {
        server 192.168.31.230:1514;
    }
    server {
        listen 514 udp;
        proxy_pass udp_backend;
    }
}
firewall-cmd --list-ports
firewall-cmd --permanent --zone=public --add-port=514/udp
firewall-cmd --reload


640.png


接下来


systemctl restart nginx
systemctl enable nginx 
netstat -anp  | grep 514


640.png


找一台Linux服务器测试514端口


vi /etc/rsyslog.conf
最后一行添加如下配置
*.* @192.168.31.230:514;RSYSLOG_SyslogProtocol23Format
systemctl restart rsyslog


640.png

可以看到Graylog 1514端口已经收到syslog日志流量


640.png

640.png



不过有一点问题,这时gl2_remote_ip是GrayLog自身的IP (192.168.31.230)


二、通过firewalld的端口重定向来实现


具体操作命令如下


firewall-cmd --permanent --add-forward-port=port=514:proto=udp:toport=1514
需开启IP地址伪装,运行 
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

640.png


cat /proc/sys/net/ipv4/ip_forward可以看出

当firewalld的masquerade IP地址伪装开启时,ip_forward 会相应自动开启

效果验证


640.png



可以看到192.168.31.60的日志自动转发到1514端口

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
30天前
Erlang在端口上接收消息
Erlang在端口上接收消息
|
1月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
2月前
|
Linux Windows
端口占用的解决方法
本文介绍了在Windows和Linux系统中解决端口占用问题的方法,包括使用`netstat`命令查看端口占用情况、`tasklist`命令查找对应进程,以及使用`taskkill`命令终止进程,在Linux系统中则使用`netstat`或`lsof`命令查找占用端口的进程,并用`kill`命令结束进程。
|
3月前
|
存储 网络协议 Linux
在Linux中,如何通过syslog进行远程日志转发?
在Linux中,如何通过syslog进行远程日志转发?
|
3月前
|
网络协议 网络安全 Python
电脑中 TCP/UDP 端口是否开放的测试:令人意想不到的神奇策略等你发现!
【8月更文挑战第19天】在网络管理和维护中,常需确认TCP/UDP端口是否开放以确保服务运行顺畅。端口如同计算机对外通信的“门”,TCP提供可靠连接,UDP则快速但无连接。测试端口是否开放的方法多样:可用`telnet`测试TCP端口,如`telnet localhost 80`;UDP测试较复杂,可用`nc`工具,如`nc -u -z localhost 53`。此外,也有在线工具可供选择,但需确保其安全性。
321 1
|
3月前
|
网络协议 Windows
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
在电脑上测试TCP/UDP端口是否开放,还是得网络大佬这招厉害!
794 2
|
3月前
|
Prometheus 监控 Kubernetes
将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.
将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.
|
5月前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
105 4
|
5月前
|
网络协议
tcp套接字和udp套接字可以共用一个端口吗?
tcp套接字和udp套接字可以共用一个端口吗?
77 1
|
4月前
|
Unix Python
Python代码示例:使用`syslog`模块进行日志记录
Python代码示例:使用`syslog`模块进行日志记录
下一篇
无影云桌面