Centos的rsyslog日志系统(四):rsyslog服务搭建

1.日志服务器的应用场景

1.1目的

为了方便日志监控和防止日志被篡改,我们可以使用rsyslog搭建日志服务器用于存放其他服务器的日志。
对于入侵排查工作来说,操作系统的认证日志、计划任务日志和历史命令都是非常重要的。我们把各个系统的相应日志保存到专门的rsyslog日志服务器,保存日志的路径格式为:源IP地址/设施名(日志类别)、年月.log。

1.2平台及工具版本

软件:rsyslog

日志客户端(发送端):CentOS 7(负责发送日志到远程日志服务器,支持udp,tcp,relp协议。)

日志服务器(接收端):CentOS 7(负责接收客户端发来的日志并存储在本地,支持文件存储和数据库存储方式。)

2.操作步骤

2.1日志客户端配置

1、 发送认证和计划任务日志(auth、authpriv、cron)
vi /etc/rsyslog.conf //编辑rsyslog服务配置文件,文件末尾加入一行

auth.;authpriv.;cron.* @@192.168.43.234:514

一个@代表通过UDP协议发送日志,这里是两个@,代表以tcp方式传送日志。与UDP相比,TCP传输的方式更加稳定一些。

保存退出。认证和计划任务日志在本地保存的同时,还会保存到远程日志服务器。

2、 发送历史命令
(1)配置发送root账户的历史命令

vi /root/.bashrc  //编辑root的配置文件,在文件末尾加入下面的内容

function log2syslog
{
   declare command
   command=$(fc -ln -0)
   logger -p local1.notice -t bash -i — $USER : "$command"

}
trap log2syslog DEBUG

保存退出

fc是shell的内置命令,作用是获取命令历史,$(fc -ln -0)返回最近执行的一条命令。

logger命令将消息发送到系统日志,-p设置消息的设施名为local1,优先级为notice。

注意在$command两端需要有双引号。

(2)配置发送普通用户的历史命令

vi /home/sec/.bashrc //编辑sec用户的配置文件,在文件末尾加入下面的内容

function log2syslog

{

   declare command

   command=$(fc -ln -0)

   logger -p local1.notice -t bash -i — $USER : "$command"

}

trap log2syslog DEBUG

保存退出

(3)修改用户配置模板

vi /etc/skel/.bashrc //编辑用户配置模板目录中的.bashrc文件,加入下面的内容

function log2syslog

{

   declare command

   command=$(fc -ln -0)

   logger -p local1.notice -t bash -i — $USER : "$command"

}

trap log2syslog DEBUG

保存退出。该文件修改后,系统所创建的新用户,其.bashrc文件中都会含有上述发送历史命令的的指令。

3、 配置rsyslog服务
vi /etc/rsyslog.conf //编辑配置文件

//将local1.none加入下面的行

*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages

//local1.none的意思是,设施名为local1的消息不写入本行指定的文件。这样,messages文件中就不会保存本地用户的历史命令了。(命令历史默认已经保存到用户的.bash_history文件中了)

配置术语:
facility:中文翻译过来是设施的意思,从功能或程序上对日志分类,
在Linux中常见的facility有:
auth(认证相关的日志),authpriv(授权相关的日志),cron(计划任务相关日志),
daemon(系统服务相关日志),ftp(ftp服务相关的日志),kern(内核相关日志),
lpr(打印相关的日志),mail(邮件相关日志),news(新闻相关的日志),
security(安全相关的日志),user(用户相关的日志),uucp(文件copy相关的日志),
local0-local7(自定义相关的日志)

priority:优先级别,从低到高排序:
debug(调试),
info(消息),
notice(注意),
warn(warning警告),
err(error错误),
crit(critical严重警告),
alert(需要立即修改的信息)
emerg(panic内核崩溃,内核恐慌等严重的信息)

//文档末尾加入一行,将历史命令发往日志服务器

local1.notice @@192.168.43.234:514

保存退出。

systemctl restart rsyslog //重启服务,使配置更改生效

2.2 日志服务器配置

1、 rsyslog服务配置

vi /etc/rsyslog.conf  //取消下面两行的注释


#TCP和UDP可以被同时生效来监听TCP/UDP 连接。这里只使用了TCP
$ModLoad imtcp

$InputTCPServerRun 514

#创建日志接收模板
//注释掉原有的ActionFileDefaultTemplate指令(使用传统的格式)

#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

//使用自定义的时间格式

$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"

$ActionFileDefaultTemplate myformat

//在RULES段的前面写入下面的行

$template local1_path, "/var/log/%FROMHOST-IP%/bash_history/%$YEAR%%$MONTH%.log"

$template remote_path, "/var/log/%FROMHOST-IP%/%syslogfacility-text%/%$YEAR%%$MONTH%.log"

if $fromhost-ip != '127.0.0.1' and $syslogfacility-text == 'local1' then ?local1_path

& ~

if $fromhost-ip != '127.0.0.1' then ?remote_path

& ~

保存退出。

$template定义了两个模板,名称分别为local1_path和remote_path,模板名称后面指定了将消息保存到的日志文件的路径。

if开头的指令是基于表达式的过滤器。第一条if指令的意思是,如果日志消息的来源IP地址不是本机,且消息的syslogfacility-text为local1,那么将这条消息写入由模板local1_path对应的文件。

& ~的含义是让满足上面过滤器条件的消息不再匹配后续的规则。默认情况下,日志消息会按顺序匹配rsyslog.conf中的每条规则。& ~在这里会让消息跳过后面的规则,这样这条消息就不会再被写入其他的日志文件了。

第二条if开头的指令将来自于本机之外的所有日志消息(由于前面的& ~,满足这个条件的只有auth、authpriv和cron消息)写入remote_path所对应的文件。

2、配置/etc/sysconfig/rsyslog
修改配置文件中SYSLOGD_OPTIONS=" -m 0" 添加“ -r选项”即可

目的可以让服务器能够接受客户端传来的数据

3、重启rsyslog服务
systemctl restart rsyslog //重启服务

2.3 配置防火墙

作为日志服务器,需要开启访问端口。(或者直接关闭防火墙)

//开放514 tcp 端口
firewall-cmd --zone=public --add-port=514/tcp

2.4测试

在客户端发送一条日志信息

//发送一条info级别或以上级别的日志
logger -p "mail.info" "this is test log"

在日志服务器 /var/log目录下

tail -f messages

注意:
不管在任何情况下,都不要配置rsyslog客户端将日志消息通过不安全的网络转发,或者,特别是通过互联网转发,因为syslog协议是一个明文协议。要进行安全传输,可以考虑使用TLS/SSL来加密日志消息的传输。

参考文章:
https://www.freebuf.com/articles/es/246659.html
https://blog.csdn.net/senlin1202/article/details/50800385

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rsyslog是一个功能强大的系统日志服务,常用于CentOS和其他Linux发行版。它可以收集、处理和转发系统日志信息。以下是在CentOS上使用rsyslog的一些常见操作: 1. 安装rsyslog:使用以下命令安装rsyslog软件包: ``` sudo yum install rsyslog ``` 2. 启动rsyslog服务:使用以下命令启动rsyslog服务并将其设置为开机自启动: ``` sudo systemctl start rsyslog sudo systemctl enable rsyslog ``` 3. 配置rsyslogrsyslog的主要配置文件是`/etc/rsyslog.conf`。您可以使用文本编辑器(如vi或nano)打开此文件进行配置: ``` sudo vi /etc/rsyslog.conf ``` 在配置文件中,您可以指定要接收和处理的日志源、过滤条件以及日志的处理方式。您可以根据自己的需求进行配置。 4. 重新加载和验证配置:在对rsyslog配置文件进行更改后,您需要重新加载配置使其生效: ``` sudo systemctl reload rsyslog ``` 您还可以使用以下命令验证配置文件是否正确无误: ``` sudo rsyslogd -N1 ``` 5. 查看日志rsyslog默认将系统日志写入`/var/log`目录下的不同文件中,例如`/var/log/messages`、`/var/log/secure`等。您可以使用命令行工具(如`cat`、`tail`、`less`等)或文本编辑器查看这些文件的内容。 例如,要查看messages文件的最新日志内容,可以使用以下命令: ``` sudo tail -f /var/log/messages ``` 这些是在CentOS上使用rsyslog的基本操作。您可以根据自己的需求进一步配置和定制rsyslog来满足特定的日志收集和处理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值