【网安合规】Rsyslog 开源日志服务器 - 快速收集企业网络日志,合规利器!

e21a6a9e0a9707e3ddc86a95be42145e.jpeg

c8a52de211d8e3330877f82ba99c920c.gif

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~


文章目录:

78b17a7bd269d019c03ecfe4dc1cb4df.png

0x00 前言简述

01.缘由

描述: 由于《信息安全技术网络安全等级保护基本要求[GB/T 22239-2019]》以及《中华人民共和国网络安全法》、《公安部82号令》安全日志审计的要求,网络运营者和网络服务提供者必须能够对上网行为日志做留存,时间不得小于180天,否则相关责任人将被处于行政罚款。

《信息安全技术网络安全等级保护基本要求》,网络安全审计日志需集中收集存储,即:应对分散在各个设备上的审计数据进行收集汇总和集中分析,并保证审计记录的留存时间符合法律法规要求。 

《中华人民共和国网络安全法》:第三章 第二十一条明确规定:采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月。

其次由于企业内部的ELK日志监控分析平台(ElasticSearch+Logstash+Kibana)过于沉重,使用维护成本高,所以急需使用一款能过收集服务器(例如,Linux、Windows或ARM)、网络设备(例如,交换机,路由器)、安全设备(例如,防火墙,堡垒机)以及IPMI带外管理(例如,华为的iBMC)的相关日志数据,以满足等保网络安全日志审计的要求。

网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后”安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便于发现潜在的网络安全威胁行为,开展网络安全风险分析及管理。

常见的网络安全审计方式,采用日志记录服务器统一集中存储系统、设备产生的日志信息,遂作者在对比可多款( syslogsyslog-ngrsyslog )的日志记录服务器工具后,最终选择了 rsyslog 日志工具来完成企业内部日志收集,并采用 Loki & Promtail 进行日志采集,最后使用Grafana 通过 LogQL 语法进行采集数据查询以及展示,,此章深入浅出的讲解了rsyslog从初识到进阶实践配置使用,可以让各位运维的同道中人可以快速为企业搭建一款收集各类网络日志服务器,其次为了方便各位小伙伴获取相关实践文章,请关注作者企业云原生实践系列《#云原生落地实用指南》专栏获取相关部署笔记。

温馨提示:作者当前已经开通了知识星球【@全栈工程师修炼指南】作者十年学习笔记(涉及开发,运维,安全,物联网,设计,杂类等)尽在其中(陆续更新)若要加入星球请扫描下方二维码,加入后获取权益和笔记,部分文章也会更新到【全栈工程师修炼指南】公众号中,由于作者花费大多时间和精力总结实践归纳,为避免爬虫恶意转发,所以此专栏《#网络安全攻防实践》文章象征性收费9.9元(付费此专栏后一定要加入作者答疑群哟),我相信收获一定大于付出,希望各位看友多多【理解、点赞、转发、赞赏】支持,并且一起学习,一起进步!

893b76eb4be65731dfcab38f6f939ea5.jpeg

在开始学习rsyslog之前,我觉得有必要将选型前的几款日志处理工具做一个简单的对比介绍,下面我们来简单看看学习本章后所搭建部署效果。

图1.使用rsyslog接收到日志目录结构图

87abd855359f2c5e1165f13f232aefab.png

weiyigeek.top-使用rsyslog接收到日志目录结构图

图2.使用rsyslog 接收到各类设备日志格式化为json字符串形式图

14d24a0e617b3c8fceaa184162cbf7c1.png

weiyigeek.top-使用rsyslog接收到日志信息图

图3.使用 Grafana 查询rsyslog 推送到 Loki 相关日志数据,此处以网络安全设备日志为例

4718d3c48747396a6eba47aff31eaff3.png

weiyigeek.top-使用LogQL查询指定网络设备日志图

02.日志选型

描述: 除开elk大型日志手机平台,作者在最初选型期间查看对比了这三款日志收集工具,分别是syslogsyslog-ngrsyslog都是用于日志处理的重要工具,它们在Linux/Unix系统中广泛应用于日志收集、处理和转发,尽管它们的基本目的相同,但在实现方式、性能和特性上存在差异,下面简单看看这三种工具的区别:

  • syslog是最早的日志管理协议和程序之一,它定义了日志消息的标准格式以及如何传输日志消息。在很多Unix和Linux系统中,syslog是默认的日志守护进程。它支持基本的日志收集功能,能够根据配置规则将日志消息分类并写入不同的文件。但是,syslog本身的功能相对较为简单,不支持高级过滤、日志转发等功能。

  • syslog-ng是对原始syslog的扩展,提供了更加灵活的配置选项,支持复杂的过滤、分类和日志转发功能。syslog-ng设计之初就考虑到了可扩展性和灵活性,因此它支持从各种来源收集日志(包括文件、网络、系统消息等),并且可以将日志输出到多种目的地(如文件、数据库、邮件等)。syslog-ng还支持内容基于模板的自定义格式化输出,使得日志数据的整合和分析更加方便。

  • rsyslog本章主题)是另一种流行的日志处理工具,它兼容syslog的基本功能,同时引入了性能改进和一些新特性。rsyslog被设计为能够处理大量日志数据,支持高性能的日志处理、过滤和转发。它提供了强大的配置选项,能够完成复杂的日志处理任务,比如基于条件的日志转发、数据库集成等。rsyslog也支持模块化扩展,可以通过添加模块来增强其功能。


选择哪种日志管理工具取决于您的具体需求:

  • 基本需求:如果您只需要基本的日志收集和管理功能,且操作的系统已内置syslog,那么可能无需更换。

  • 高级功能和灵活性:如果您需要更高级的日志处理功能,比如复杂的过滤、格式化输出或是高效的日志转发,syslog-ngrsyslog都是很好的选择。syslog-ng以其高度的灵活性和强大的配置能力著称,适合需要精细日志处理规则的场景。

  • 高性能和大规模部署:对于需要处理大量日志数据的环境,rsyslog可能更加合适,因为它在性能优化方面做了很多工作,能够更好地支持大规模日志处理需求。

所以,选择日志管理工具时,还应考虑团队的熟悉度和现有环境的兼容性等因素,以确保可以高效地部署和使用所选工具。


03.rsyslog 介绍

Rsyslog ( rocket-fast system for log) 是一个开源工具用于日志处理,主要在大型企业内部中使用,但也可以扩展到小型系统,它提供高性能、出色的安全功能和模块化设计,虽然它最初是一个常规的syslogd,但现在的 rsyslog 已经演变成一种瑞士军刀式的伐木,能够接受来自多种来源的输入、过滤筛选及变换、并将结果输出到不同的目的地。

除此之外,它支持 MySQL、PostgreSQL、故障转移日志目的地、ElasticSearch、syslog/tcp 传输、细粒度输出格式控制、高精度时间戳、排队操作以及对任何消息部分进行过滤的能力,并且在 Linux/Unix 系统中选用 rsyslog 工具作为日志收集工具有极大的便利性,当前 CentOS、Ubuntu、KylinOS V10已经默认安装了rsyslog工具,所以只需要我们升级或者简单配置,即可成为企业内部中收集各类设备日志的利器。

e62c7e3bdd44590a97bd27084074ac4d.jpeg

当前 rsyslog 最新稳定版本为 8.2312.0 (主版本8,次版本 2023年12月发布,补丁版本),下一个版本为 8.2402.0, February 2024。

官网地址:https://www.rsyslog.com/

官网文档: https://www.rsyslog.com/doc/index.html


0x01 安装部署

描述: 在没有安装 rsyslog 日志工具的,其安装部署非常简单往往只需要一条命令或者使用Docker容器运行,而当前通常的的linux发行版本是已经预安装了此工具,例如 在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd,Red Hat 公司 认为 syslogd 已经不能满足工作中的需求,除此之外其他的 Ubuntu,KylinOS 银河麒麟(非最新版本)Linux 发行版本也将 rsyslog 作为默认的日志工具。

参考链接:运维实践 | 国产操作系统银河麒麟KylinOS安装部署及符合等保主机安全的安全加固脚本

我们如何知道 Linux 中的 rsyslogd 服务是否安装且启动了呢?执行如下三条命令即可。

rsyslogd -v
ps aux | grep "rsyslog" | grep -v "grep"
systemctl  list-unit-files rsyslog.service

Redhat、Debian、Alpine系安装

在 Redhat 以及 Debian 、Ubuntu 主机中安装和配置rsyslog是一个相对直接的过程,因为rsyslog通常作为默认的系统日志守护进程,以下是安装和基本配置rsyslog的步骤。

  • 步骤 1: 安装 rsyslog 工具 首先,您需要确保rsyslog已经安装在您的系统上,可以通过运行以下命令来安装rsyslog(如果尚未安装):

# Redhat 系
sudo yum install rsyslog
# 或者 CentOS8 使用 dnf 软件包安装工具进行安装
sudo dnf install rsyslog

# Debian 系
sudo apt install rsyslog

# Alpine 系
sudo apk add rsyslog

温馨提示: 此处 rsyslogd -v 命令执行后查看到守护进程版本为 8.2006.0 ,并非最新版本,不同版本配置或有差异若非V8版本的童鞋请自行官网。

温馨提示: 若需要安装的最新的 rsyslog 版本,需要从官网的 rpm 源中的进行下载安装,操作如下所示:

# 要在RHEL/CENTOS上安装rsyslog,只需以root用户身份从命令行执行以下命令:
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo -O /etc/yum.repos.d/rsyslog.repo           # for CentOS 7,8,9
wget http://rpms.adiscon.com/v8-stable/rsyslog-rhel.repo -O /etc/yum.repos.d/rsyslog-rhel.repo # for RHEL   7,8,9
cat rsyslog.repo
[rsyslog_v8]
name=Adiscon CentOS-$releasever - local packages for $basearch
baseurl=http://rpms.adiscon.com/v8-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
gpgkey=https://rpms.adiscon.com/RPM-GPG-KEY-Adiscon
protect=1

# 安装
yum update && yum install rsyslog
# 更新
yum update && yum update rsyslog
  • 步骤 2: 启动和启用 rsyslog 服务

安装完毕后,您需要启动rsyslog服务,并设置为开机自启:

sudo systemctl start rsyslog
sudo systemctl enable rsyslog

使用以下命令检查rsyslog服务状态,确保它正在运行:

sudo systemctl status rsyslog
  • 步骤 3: 配置 rsyslog 服务

rsyslog的配置文件位于/etc/rsyslog.conf,以及/etc/rsyslog.d/目录下的文件,您可以编辑这些文件来调整rsyslog的配置。

打开主配置文件进行编辑:

sudo nano /etc/rsyslog.conf

此处有几个 rsyslog 常见的配置示例,例如

1.设置日志服务器(服务端):在任意一台安装了rsyslog 主机上述设置其成为日志服务器,需要为其配置如下指令,即可启用接收远程日志。

# 主机 10.10.10.5 
# 例如,CerntOS 8 新版本网络日志功能配置, 只是语法上有所不同,不过官方还是推荐此种 V8 配置风格。
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

# 例如,CerntOS 6/7 旧版本网络日志功能配置
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

2.转发日志到远程服务器(客户端):在rsyslog配置文件中添加以下行,将日志转发到指定的远程服务器(请将remote-host替换为您的远程日志服务器的IP地址或主机名,514是标准的syslog端口):

# 使用两个`@`符号(`@@`)表示使用TCP传输;如果使用单个`@`符号(`@`),则表示使用UDP。
*.* @@remote-host:514

# 例如,将主机中所有信息都转发到 10.10.10.5:514 主机中。
*.* @@10.10.10.5:514

3.按设施和优先级过滤:您可以配置 rsyslog 根据日志的设施(如 auth, kern, mail 等)和优先级(如 info, warn, err 等)将日志写入不同的文件。例如,要将所有内核消息写入特定文件:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/412471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nest.js权限管理系统开发(七)用户注册

创建user模块 先用nest的命令创建一个 user 模块, nest g res user 实现user实体 然后就生成了 user 模块,在它的实体中创建一个用户表user.entity.ts,包含 id、用户名、密码,头像、邮箱等等一些字段: Entity(sys_user) export class Us…

部署VUE+SpringBoot+nginx项目

本文是前端是vite element-plus 后端 springBoot 部署整个项目主要分为3个步骤, 1. 部署nginx,主要是配置nginx.conf 2.打包前端代码 3.打包后端代码 1.安装nginx 安装手顺: linux安装nginx_linux安装nginx需要gcc还是gcc-c-CSDN…

什么品牌的护眼台灯比较好用?全网最全护眼台灯避坑指南(内含五大品牌推荐)

在家长们意识到学习过程中优质的光线环境对保护孩子视力的重要性时,如何在众多护眼台灯当中如何选出合格又好用的产品却成为了一大头疼问题。市场上充斥着一些无良厂家生产的劣质产品,很容易误导普通消费者。为了帮助大家避开这些陷阱,我决定…

编译链接库路径设置

/etc/ld.so.conf和LD_LIBRARY_PATH具有同等的作用,都是程序运行时链接的库。 可通过export LIBRARY_PATH~/test/Lib:$LIBRARY_PATH 添加动态库搜索路径,通过printenv | grep LIBRARY查看是否添加成功。

FL Studio All Plugins Edition2024中文完整版Win/Mac

FL Studio All Plugins Edition,常被誉为数字音频工作站(DAW)的佼佼者,是音乐制作人和声音工程师钟爱的工具。它集音频录制、编辑、混音以及MIDI制作为一体,为用户提供了从创作到最终作品输出的完整工作流程。这个版本…

PDF文件转换为图片

现在确实有很多线上的工具可以把pdf文件转为图片,比如smallpdf等等,都很好用。但我们有时会碰到一些敏感数据,或者要批量去转,那么需要自己写脚本来实现,以下脚本可以提供这个功能~ def pdf2img(pdf_dir, result_path…

Escalate_Linux(3)--通过读取密码文件shadow来破解root用户的口令实现提权

通过读取密码文件shadow来破解root用户的口令实现提权 通过读取密码文件/etc/shadow来破解root用户的口令 ls -l /etc/shadow 普通用户无查看shadow权限 echo "cat /etc/shadow" >/tmp/ls ​ chmod 755 /tmp/ls ​ export PATH/tmp:$PATH ​ /home/user5/script…

U-Mail邮件系统反垃圾病毒解决方案

随着互联网的快速发展和广泛应用,人类正逐步地从工业社会迈入信息社会,网络也已经越来越成为生产经营活动的重要场所。例如电子邮件就已经企业内外部信息交流的重要工具,它的应用还可以提高企业办公效率,利于企业信息流通的系统化…

【Flink精讲】Flink反压调优

Flink 网络流控及反压的介绍: Apache Flink学习网 反压的理解 简单来说, Flink 拓扑中每个节点(Task)间的数据都以阻塞队列的方式传输,下游来不及消费导致队列被占满后,上游的生产也会被阻塞,…

泪滴中的关怀:新生儿泪腺堵塞及细心照料

引言 新生儿的眼睛是他们与世界沟通的桥梁,而泪腺则是这座桥梁上的一颗璀璨明珠。然而,有时这颗明珠可能会遇到困难,泪腺堵塞是一个常见的问题。在这篇文章中,我们将探讨新生儿泪腺堵塞的注意事项,以及如何细心照料宝…

算法价值6-梯度下降

梯度下降算法(gradient descent algorithm)是一种常用的优化算法,用于寻找函数的最小值点或最小化损失函数。它的核心思想是通过迭代调整参数的值,使目标函数的值逐渐趋于最小值。 具体来说,梯度下降算法的步骤如下: 1. 初始化参数 首先,需要初始化待优化的参数,可以…

vue3自定义实现悬浮固定按钮组件

目录 一、需求描述二、代码解读三、结果展示 一、需求描述 需要5个固定的悬浮圆,居于页面的右侧。鼠标悬浮在圆上面会显示对应的文字提示其中包含返回顶部悬浮圆,当页面滑至底部时出现,点击页面滑到顶部。点击按钮会给出弹窗 二、代码解读…

Fastapi进阶用法,路径参数,路由分发,查询参数等详解

文章目录 1、路径操作1.路径操作装饰器1.tags 标签2.summary 接口描述的总结信息3.describe: 接口信息的详细描述4.response_description:响应描述5.deprecated:接口是否废弃,默认是False 2.fastapi路由分发include_router 2、请求与响应2.1、…

Web APIs 3 事件

Web APIs 3 事件 一、事件流事件捕获事件冒泡阻止冒泡解绑事件鼠标经过事件的区别两种注册事件的区别 二、事件委托阻止默认行为 三、其他事件① 页面加载事件② 元素滚动事件滚动到指定的坐标 ③ 页面尺寸事件 元素尺寸与位置① 元素在页面中的位置② 元素尺寸 一、事件流 事…

ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍

ABBYY FineReader 16作为一款OCR和PDF一体化程序,其强大的功能使得文档处理变得简单高效。在众多功能中,文档转换、PDF管理和文档比较这三大功能尤为突出,成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下&#xff…

【接口测试】POST请求提交数据的三种方式及Postman实现

1. 什么是POST请求? POST请求是HTPP协议中一种常用的请求方法,它的使用场景是向客户端向服务器提交数据,比如登录、注册、添加等场景。另一种常用的请求方法是GET,它的使用场景是向服务器获取数据。 2. POST请求提交数据的常见编…

YOLOv6、YOLOv7、YOLOv8网络结构图(清晰版)

承接上一篇博客:YOLOv3、YOLOv4、YOLOv5、YOLOx的网络结构图(清晰版)_yolox网络结构图-CSDN博客 1. YOLOv6网络结构图 2. YOLOv7网络结构图 3. YOLOv8网络结构图

一文讲清DTO、BO、PO、VO

DTO、BO、PO、VO是什么? 在后端开发中,比如传统的MVC架构和现在流行的DDD架构,经常会使用到下列几种对象的概念 DTO (Data Transfer Object) 数据传输对象: DTO设计模式用于将数据从服务端传输到客户端,或者在不同的…

【SVN】使用TortoiseGit删除Git分支

使用TortoiseGit删除Git分支 前言 平时我在进行开发的时候,比如需要开发一个新功能,这里以蘑菇博客开发服务网关-gateway功能为例 一般我都会在原来master分支的基础上,然后拉取一个新的分支【gateway】,然后在 gateway分支上进…

数据安全-动态加密(不同敏感字段使用不同的加密算法-MySQL、Oracle版本)

动态数据加密 动态加密(也称实时加密,透明加密等,其英文名为encrypt on-the-fly),是指数据在使用过程中自动对数据进行加密或解密操作,无需用户的干预,合法用户在使用加密的文件前,…