用Iptables -j LOG选项控制syslog信息, 并用rsyslog来记录远程日志

本文介绍了如何在Ubuntu 14.04上配置rsyslog作为客户端发送UDP日志到远程服务器,并通过修改rsyslog配置文件设置日志存储位置。同时,文章还展示了如何使用iptables的-j LOG选项来记录网络流量,并通过tail-f命令查看syslog日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统:ubuntu14.04传输方式:udp


rsyslog分 客户端 和 服务端,客户端是用来发送日志的,服务端是远程日志服务器,用来记录日志。


rsyslog的配置文件,要用到的有两个:

1./etc/rsyslog.conf 2. /etc/rsyslog.d/50-default.conf


步骤:

1.客户端配置

/etc/rsyslog.conf文件里添加

$ModLoadimuxsock # provides support for local system logging

$ModLoadimklog # provides kernel logging support


#provides UDP syslog reception (Input plugin for UDP syslog. Replacesthe deprecated -r option.)

$ModLoadimudp #载入udp发送模块

$UDPServerRun514 #514udp远程默认端口


#log remote server ip

*.* @192.168.75.101 #比如远端服务器地址是192.168.75.101

<think>好的,我现在要解决的问题是:如何在只有syslog服务的服务器上,将接收到的syslog客户端推送的日志固定保存到某个特定文件中。用户提到服务端没有rsyslog,所以需要基于传统的syslog服务配置。 首先,我需要回忆一下syslog的基本配置方法。syslog的配置文件通常是/etc/syslog.conf或者/etc/syslog-ng/syslog-ng.conf,但用户提到服务端只有syslog服务,可能是指传统的syslogd,而不是rsyslog或者syslog-ng。因此,应该检查/etc/syslog.conf这个文件。 接下来,syslog的配置规则通常是按设施(facility)和优先级(priority)来分类日志。比如,auth、user、kern等是设施,而debug、info、notice等是优先级。用户希望将所有来自客户端的日志写入特定文件,可能需要确定客户端发送日志时使用的设施和优先级。 假设客户端使用默认的设施,比如user设施,或者可能使用local0到local7这些自定义设施。如果客户端未指定,默认可能是user。或者,可能需要配置客户端指定一个特定的设施,比如local0,然后在服务端针对该设施进行配置。 例如,如果客户端配置使用local0设施发送日志,那么在服务端的syslog.conf中添加一行: local0.* /var/log/custom.log 这样所有设施为local0,任何优先级的日志都会写入/var/log/custom.log。 另外,需要确认服务端syslog服务是否支持本地日志文件的配置。传统syslogd的语法是设施.优先级 目标文件。所以正确的语法可能如上述例子。 还需要考虑日志轮转的问题,但用户暂时只需要固定到某个文件,可能不需要处理轮转。不过要注意,syslog可能需要重启才能应用配置更改,所以修改配置文件后需要执行service syslog restart或者/etc/init.d/syslog restart之类的命令。 另外,如果客户端发送的日志没有被任何规则匹配,可能会被记录到默认文件中,比如/var/log/messages。因此,服务端的配置需要确保正确匹配客户端使用的设施和优先级。 如果客户端发送的日志使用的是udp协议,默认端口是514,服务端的syslogd需要监听该端口。可能需要检查syslog的配置是否有$ModLoad imudp这样的模块加载(不过这可能属于rsyslog的配置,而用户的环境是传统syslogd)。传统syslogd可能需要通过参数启动来监听udp端口,比如在启动选项里添加-r,允许接收远程日志。 总结步骤应该是: 1. 确定客户端使用的syslog设施和优先级。 2. 在服务端的/etc/syslog.conf中添加对应的规则,将匹配的日志写入指定文件。 3. 确保syslog服务配置为接收远程日志(可能需要配置选项或启动参数)。 4. 重启syslog服务使配置生效。 5. 测试客户端发送日志,查看是否写入指定文件。 需要注意的是,不同版本的syslogd可能有细微差别,比如配置文件的位置或语法。如果用户的环境中syslog.conf不存在,可能需要检查其他可能的配置文件路径,或者确认确实使用的是syslogd而非其他实现。</think>要将syslog服务端接收的日志固定到指定文件,可按以下步骤操作: ### 一、确定客户端使用的日志设施 1. **客户端配置**:确认客户端发送日志时使用的设施(如`local0`至`local7`)。例如,客户端配置可能包含: ```bash *.* @syslog-server-ip:514 # 默认使用user设施 ``` 如需指定设施,客户端可配置为: ```bash local0.* @syslog-server-ip:514 ``` ### 二、配置服务端syslog 1. **编辑配置文件**: ```bash vi /etc/syslog.conf # 传统syslogd的配置文件路径 ``` 2. **添加规则**: 假设客户端使用`local0`设施,添加以下行: ```bash local0.* /var/log/custom.log ``` - `local0.*`:匹配`local0`设施的所有优先级日志- `/var/log/custom.log`:目标文件路径。 3. **创建日志文件并设置权限**: ```bash touch /var/log/custom.log chmod 644 /var/log/custom.log ``` ### 三、启用远程日志接收 1. **确保syslogd监听UDP 514**: 检查服务端syslog启动参数是否包含`-r`选项(允许接收远程日志)。编辑启动脚本(如`/etc/default/syslogd`): ```bash SYSLOGD_OPTIONS="-r" # 添加或修改该参数 ``` ### 四、重启syslog服务 1. **应用配置**: ```bash service syslog restart # 或 /etc/init.d/syslog restart ``` ### 五、验证配置 1. **客户端发送测试日志**: ```bash logger -p local0.info "Test message from client" ``` 2. **检查服务端日志文件**: ```bash tail -f /var/log/custom.log ``` ### 六、注意事项 1. **日志轮转**:如需自动轮转日志,需额外配置`logrotate`,添加`/var/log/custom.log`到轮转规则。 2. **防火墙设置**:确保服务端UDP 514端口开放: ```bash iptables -A INPUT -p udp --dport 514 -j ACCEPT ``` ### 附:配置文件示例 `/etc/syslog.conf`内容片段: ```bash # 接收所有设施的远程日志(不推荐,建议明确指定设施) *.* /var/log/all.log # 仅接收local0设施的日志 local0.* /var/log/custom.log ``` 通过以上步骤,syslog服务端会将来自客户端的指定日志持久化存储到固定文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值