如何将Linux主机设置成syslog服务器

本文介绍如何在RedHat和Ubuntu上配置syslog服务器,实现集中管理多台Linux主机的日志信息。通过设置,管理员只需登录syslog服务器即可查看所有主机的日志。

鸟哥在书中介绍了这样的一种环境。

 

办公室内有10台Linux主机,每一台负责一个网络服务。为了无需登录每台主机去查看登录文件,需要设置一台syslog服务器,其他主机的登录文件都发给它。这样做的话,只需要登录到syslog服务器上就能查看所有主机的登录文件。

 

RedHat上的设置方法,鸟哥已经介绍了。

 

【服务器端】

step 1:查看服务器是否开启了UDP 514端口

             grep '514' /etc/services

 

step 2:修改syslogd的启动设置文件/etc/sysconfig/syslog

             将SYSLOGD_OPTIONS="-m 0"修改成SYSLOGD_OPTIONS="-m 0 -r"

 

step 3:重启syslogd服务

             /etc/init.d/syslog restart

 

重启后,你会发现UDP 514端口已经打开。

 

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
udp        0      0 0.0.0.0:514                 0.0.0.0:*                               5628/syslogd       

 

【客户端】

step 1:在/etc/syslog.conf中,添加下行。

     user.*     @192.168.0.Y                  # syslog服务器的IP地址

 

在Ubuntu中配置syslogd服务器的方法类似。

 

step 1:查看服务器是否开启了UDP 514端口,有下面一行说明端口514被打开,没有需要加入

             # grep '514' /etc/services

             184:shell               514/tcp         cmd             # no passwords used
             185:syslog            514/udp

 

step 2: 修改/etc/init.d/sysklogd,将SYSLOGD=""修改成SYSLOGD=" -r"

 

step 3: 修改/etc/default/syslogd,将SYSLOGD=""修改成SYSLOGD=" -r"

 

step 4: 重启服务  /etc/init.d/sysklogd restart

 

step 5: 验证

              在/var/log/messages中找到

              May  1 23:31:59 flagonxia-desktop syslogd 1.5.0#5ubuntu3: restart (remote reception)

              # netstat -tlunp

              得到syslogd服务正在监听端口514

              udp        0      0 0.0.0.0:514             0.0.0.0:*                           3912/syslogd

 

step 6: 假设syslog服务器的IP地址:192.168.1.25,在其他主机上的/etc/syslog.conf中加入

              *.*         @192.168.1.25

 

注:/etc/syslog.conf文件的解析

日志文件按/etc/syslog.conf 配置文件中的描述进行组织。下图是/etc/syslog.conf 文件的内容:
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
syslog.conf
 行的基本语法是: 
[
 消息类型][ 处理方案] 
注意:中间的分隔符必须是Tab 字符!
消息类型是由" 消息来源" " 紧急程度" 构成,中间用点号连接。例如上图中,news.crit 表示来自news  关键 状况。在这里,news是消息来源,crit 代表关键状况。通配符* 可以代表一切消息来源。 

说明:
第一条语句*.info ,将info 级以上(notice,warning,err,crit,alert emerg )的所有消息发送到相应日志文件。
日志文件类别(按重要程度分类)日志文件可以分成八大类,下面按重要性从大到下列出:emerg  emergency ,紧急alert 警报crit critical ,关键errerror ,错误warning  警告notice 通知info  信息debug  调试
简单列一下消息来源
auth
     认证系统,如login su ,即询问用户名和口令
cron
     系统执行定时任务时发出的信息
daemon
    某些系统的守护程序的 syslog ,如由in.ftpd 产生的log
kern
     内核的信息
lpr
      打印机的信息
mail
     处理邮件的守护进程发出的信息
mark
     定时发送消息的时标程序
news
     新闻组的守护进程的信息
user
     本地用户的应用程序的信息
uucp
     uucp 子系统的信息
*
      表示所有可能的信息来源

处理方案
"
 处理方案" 选项可以对日志进行处理。可以把它存入硬盘,转发到另一台机器或显示在管理员的终端上。
处理方案一览:
文件名  写入某个文件,要注意绝对路径。 
@
 主机名 转发给另外一台主机的syslogd 程序。
@IP
 地址 同上,只是用IP 地址标识而已。
/dev/console 
发送到本地机器屏幕上。
* 
发送到所有用户的终端上。 
|
 程序 通过管道转发给某个程序。
例如:
kern.emerg /dev/console(
 一旦发生内核的紧急状况,立刻把信息显示在控制台上) 
说明: 
如果想修改syslogd 的记录文件,首先你必须杀掉syslogd 进程,在修改完毕后再启动syslogd 。攻击者进入系统后通常立刻修改系统日志,因此作为网管你应该用一台机器专门处理日志信息,其他机器的日志自动转发到它上面,这样日志信息一旦产生就立刻被转移,这样就可以正确记录攻击者的行为。

<think>嗯,用户这次想了解Linux服务器接收syslog文件的具体方法。结合用户提供的站内引用内容,特别是引用[2]和[3]明确提到了syslog服务器配置,这正好是用户需要的核心信息。 用户可能是个系统管理员,正在搭建日志集中管理环境。从ta直接引用syslog配置的文献来看,应该具备一定Linux基础,但需要具体的操作指引。值得注意ta特别强调"接收"这个动作,说明关注点在于服务端配置而非客户端发送。 我注意到之前提供的引用里包含关键信息:引用[2]说明rsyslog可同时作为服务器/客户端,引用[3]提到syslog服务器作为日志监控中心的功能,引用[4]则涉及具体的配置语法。这些正好能组成完整解决方案。 需要重点解决三个层面问题:首先是服务端基础配置(端口开放、模块加载),其次是日志存储路径定义,最后是客户端来源过滤规则。引用[5]提到的logrotate配置虽然非必需,但作为日志维护的最佳实践也应该包含。 考虑到用户可能在不同发行版环境,需要强调rsyslog.conf配置文件的通用性,同时提醒SELinux等可能存在的权限障碍。对于防火墙配置这种容易遗漏的环节,要用示例命令明确给出操作建议。 </think>以下是Linux服务器配置为接收syslog文件的详细步骤及说明,结合系统引用资料整理: --- ### **一、配置Syslog服务器接收日志** 1. **安装/更新rsyslog** ```bash sudo apt-get install rsyslog # Debian/Ubuntu sudo yum install rsyslog # RHEL/CentOS ``` > 升级到新版支持更多功能(引用[1][^1]) 2. **启用网络监听** 编辑配置文件 `/etc/rsyslog.conf`: ```bash sudo vim /etc/rsyslog.conf ``` - **取消注释以下行**(启用UDP/TCP端口): ``` module(load="imudp") # 加载UDP模块 input(type="imudp" port="514") module(load="imtcp") # 加载TCP模块 input(type="imtcp" port="514") ``` 3. **配置日志存储路径** 在文件末尾添加规则(以接收Cisco设备日志为例): ``` $template RemoteLogs,"/var/log/remote/%HOSTNAME%.log" # 按客户端主机名分文件存储 *.* ?RemoteLogs # 接收所有设施/级别的日志 & ~ # 停止后续处理 ``` > 路径`/var/log/remote/`需手动创建(`sudo mkdir /var/log/remote`) 4. **重启服务并验证** ```bash sudo systemctl restart rsyslog sudo netstat -tulnp | grep 514 # 检查514端口监听状态 ``` --- ### **二、客户端配置发送日志** 1. **在客户端机器配置** 编辑 `/etc/rsyslog.conf`,添加: ``` *.* @@192.168.1.100:514 # TCP发送(@@),UDP用@ ``` > `192.168.1.100`替换为服务器IP(引用[2][^2]) 2. **重启客户端服务** ```bash sudo systemctl restart rsyslog ``` --- ### **三、关键配置说明** 1. **选择条件语法**(引用[4][^4]) - 格式:`设施.优先级`,如 `cron.*` 表示所有cron日志 - 多条件用分号分隔: `auth.*;local7.!info` 2. **日志轮转配置**(引用[5][^5]) 创建 `/etc/logrotate.d/remote_logs`: ``` /var/log/remote/*.log { daily rotate 30 compress missingok } ``` --- ### **四、防火墙与SELinux** ```bash # 开放514端口 sudo firewall-cmd --permanent --add-port=514/tcp sudo firewall-cmd --permanent --add-port=514/udp sudo firewall-cmd --reload # 若启用SELinux sudo semanage port -a -t syslogd_port_t -p tcp 514 sudo semanage port -a -t syslogd_port_t -p udp 514 ``` --- ### **验证日志接收** ```bash tail -f /var/log/remote/client_hostname.log # 查看客户端日志 ``` > 日志将按客户端主机名存储在`/var/log/remote/`(引用[3][^3]) --- ### **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值