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 commandcommand=$(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 commandcommand=$(fc -ln -0)logger -p local1.notice -t bash -i — $USER : "$command"
}trap log2syslog DEBUG

保存退出

(3)修改用户配置模板

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

function log2syslog
{declare commandcommand=$(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来加密日志消息的传输。

rsyslog服务搭建相关推荐

  1. yum源及yum仓库服务搭建讲解

    说明:本文来自老男孩linux运维实战培训-高级架构师班学生分享内容 人人都是讲师-学生分享-yum源及yum仓库服务搭建讲解(郑同学,向潘同学点评,老男孩点评) 第一次观看本视频前,建议博友先观看: ...

  2. (十五)Java springcloud B2B2C o2o多用户商城 springcloud架构-commonservice-sso服务搭建(一)...

    2019独角兽企业重金招聘Python工程师标准>>> 前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行 ...

  3. (十一)java版spring cloud+spring boot+redis多租户社交电子商务平台- commonservice-sso服务搭建(一)...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservi ...

  4. sftp进入指定目录_CentOS7服务搭建----搭建SFTP(安全文件传送协议)服务器

    SFTP协议服务器 简介: sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp有着几乎一样的语法和 ...

  5. CentOS 6.7 Gitolite 服务搭建及TortoiseGit配置连接

    咳咳~好几天没写博文啦,这几天都在研究Git,没办法公司要要抛弃SVN转站Git,废话就不多说,下面我们进行操作演示: 环境:之前搭建的Redis-Master服务器一枚,配置一般般~ 工具:Tort ...

  6. rsyslog服务日志报错分析1

    客户问题: 最近对服务器进行日志检查时,发现部分主机的rsyslog服务状态有报错,报错详情如下 排查过程: 1.从报错截图来看,报错主要发生在文件'/usr/lib64/rsyslog/omazur ...

  7. Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)

    Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com: ...

  8. base64图裁剪 php_世界上最好的编程语言PHP图层裁剪服务搭建详解

    IT技术研习社,专注互联网技术研究与分享,喜欢的朋友可以点击[关注]:把经验传递给有梦想的人: PHP图像裁剪服务搭建 概述 每一个做过WEB程序开发的程序员(比如,博客.电商),应该都有这样的体验, ...

  9. Centos RSYNC服务搭建

    前言: 总结下RSYNC服务搭建 介绍: Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件. 特点: 能更新整个目录和树和文件系统 ...

最新文章

  1. 计算机视觉>>PCV安装和使用
  2. 几个UI Prototype应用的使用感受
  3. 字符串作为freemarker模板的简单实现例子
  4. python3 下划线的5中含义
  5. j详细说明ava于clone办法
  6. c语言编程TLC2543AD采集,AD转换器TLC2543编程
  7. (Linux 日常命令)[20171225]
  8. 【线性代数的本质|笔记】抽象几何空间、克莱姆法则及其几何解释
  9. oracle没有卸载,oracle卸载没有正确卸载怎么办?
  10. C++ struct内部定义函数
  11. 看雪CTF.TSRC 2018 团队赛 第二题 半加器 writeup
  12. Unity3D 回合制 网上源码 目前还在研究构思
  13. python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
  14. 【Linux】Alibaba Cloud Linux 3 中第二硬盘、MySQL8.*、MySQL7.*、Redis、Nginx、Java 系统安装
  15. qsort vs sort
  16. 【OpenPose 学习笔记-01】OpenPose下examples的使用与解读
  17. 著名数学家龚升的论述揭示高中“函数近代严格定义” 有非常明显错误
  18. 【MyBatis-Plus】简介 入门案例
  19. c语言中变量后面加上f,C语言的数据类型
  20. 飞天诚信(ROCKEY 4)加密狗的特点介绍。

热门文章

  1. RISC-V扩展指令示例
  2. 联想拯救者2020R7000双系统装机记录_自用
  3. Java代码实现非对称加密RSA算法示例
  4. amd、cmd、esmodule、commonjs区别
  5. ESP32 HTTP 使用入门
  6. arrayToJson将数组转化为json格式的js代码
  7. 【不忘初心】Win10_LTSC2021_19044.1381_X64_可更新[纯净精简版][2.52G](2021.11.20)
  8. 微信小程序云开发csv导入数据库中文乱码问题解决
  9. 〖Web全栈开发③〗—HTTP协议和静态web服务器
  10. 自回归滞后模型进行多变量时间序列预测