0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

bash和mysql的代码一个低成本、实用性能高的日志审计方案

马哥Linux运维 来源:未知 作者:李倩 2018-03-19 16:43 次阅读

概述

不怕出问题,就怕出问题找不到原因运维团队一般会有个需求就是记录运维或者开发同事在服务器上的操作记录,比如进行一些常规审核或者是服务器被黑了、服务器日志被删的情况需要知道发生过什么事情,今天和大家分享下我们现在的服务器的shell和mysql操作日志记录的DIY方案。团队内部之前有测试过一些堡垒机硬件,但终端操作方面不够人性化,不够灵活,而且价格昂贵,硬件容易形成单点故障。当然也接触过一些开源的方案,比如可以直接用ttyrec对终端进行录制,并且支持文本匹配,但是在实际使用中发现过严重bug,还有另外一些openssh的修改方案也不尽人意。鉴于上述问题,我们针对bash和mysql的代码进行简单的修改来实现一个低成本、实用性能高的日志审计方案。

服务器日志:

下面来“开源”这个解决方案,希望对大家有小小帮助。

1.linux bash审计大家应该有听说过网络说的bash修改方案,我们从2011年开始使用,中间经历过很多bug,修复和优化过多次版本,下面会详细地给出我们现在的线上方案。现在的功能支持大致如下:

同一系统用户精确到具体人员的shell操作记录

支持远程通过ssh IP “command”执行和scp时候的日志记录

支持不同系统用户进行切换时候能继续记录日志

新支持mysql的操作日志

上述每一个功能列表都是经过多次实践出来的需求,虽然不是非常完美,但是如果不是刻意来逃避日志记录的话,基本可以满足大家的需求,上述的记录对应的人员是指多个人同时使用同一个系统帐号的情况,比如root帐号。1.1 基本功能实现基本功能就是需要记录到每个人的操作记录,网络上有个方案雏形,修改bashhist.c文件,701行左右修改bash_syslog_history函数,修改完之后内容:

1.2. 指纹变量处理接下来重点就是处理NAME_OF_KEY这个指纹变量,原理也比较简单,每个人登录系统的时候,我们让他自动执行一个脚本,然后设置这个变量为具体人就可以了。--------别说有人还在利用密码登录Linux服务器,太不专业了-_---------在这个文件里面~/.ssh/authorized_keys加key的时候,第三列设置为具体的人员,我们是用工号@姓名拼音的模式,然后通过脚本进行处理即可。脚本路径 /etc/bash_ywjt,内容:








2. Mysql操作日志很早以前找过相关的mysql插件,也尝试过audit之类的方案,但结果不是我们需要的效果,我们需要的是运维方面在服务器上的mysql操作,和mysql的binlog等日志不是同一个事情,而且和.mysql_history记录的也不一样,我们需要精确到同一系统用户的不同人员。以下mysql版本是指Percona-Server-5.5。2.1 初步解决mysql自带了syslog日志功能,但是需要手动配置开启,配置比较简单:在/etc/my.cnf里面的client字段加上syslog即可。


1)在mysqldump时候会报错:

2)可以轻易地绕过这个日志,在敲mysql命令行的时候加个参数--no-defaults即可。3)日志里面只有是root帐号操作的,没有体现出具体是某个人操作的。解决这几个问题还得靠开源的优势进行代码修改。2.2 源码开启我们可以在源码里面就把syslog这个开关开启,比较容易,找到client/mysql.cc这个文件,开关逻辑比较简单,找到以下代码:

2.3 交互式记录单纯那样改会发现还有个小问题,就是在shell终端下面直接mysql可以用-e进行命令操作,比如:


但是按照之前那样开启syslog也无法记录日志。我们是有记录shell操作记录的,这个问题可以忽略,不过一定要显示的话也是有办法的,继续修改代码。稍微看下逻辑分析可以看到是需要满足connect_flag == CLIENT_INTERACTIVE才写日志,找到CLIENT_INTERACTIVE的定义:原来这个就是交互模式的定义,所以我们把这个“与”条件去掉即可,改为这样:

2.4 海量日志问题在实际环境中会有新的问题,比如导入sql语句时候,会生成同样大小的日志,比如导入2G的sql,会生成2G的日志,这样明显不符合我们的需求。想到我们已经有bash审核了,-e执行时候可以忽略记录,但是如果在mysql里面通过source命令引用sql语句时候同样有这个问题,所以还得继续改代码。找到write_syslog函数,正式写日志时候是用的syslog函数,里面有个for循环的逻辑,意思是当sql语句很大时候,需要“切割”一下再写入,所以从这里入手,把syslog改为定义的MAX_SYSLOG_MESSAGE长度之内就写,超过的话就直接忽略。另外之前说需要精确到不同人员,所以我们引入了我们的bash审核里面的指纹,变量NAME_OF_KEY,然后在mysql.cc里面引入即可。关键修改如下:

2.5 自定义参数这样虽然是在源码里面写死了一定有日志,但是还是可以提供一个备用的参数来取消这个功能。在参数定义那里改动,把之前的syslog改为这样:



3. 远程日志中心上述日志全部是通过syslog服务记录到/var/log/messages文件,更合理的是再传输到远程的日志中心来统一备案管理。这个方法比较简单,在/etc/rsyslog.conf里面加入配置:



4. 内网日志拦截这个段落是额外的参考,我们的定制系统是写死了配置全部发送到公网的某一台日志中心服务器,但是我们内网机房也有很多服务器,这样会导致在日志中心那里无法查看原始的内网IP,只有办公网的出口IP,而且不方便每个机器都去更改日志中心的IP,那样会很容易漏掉,解决办法是进行“日志劫持”。在我们的juniper防火墙那里进行日志拦截,然后转发到内网的一个日志中心即可,参考配置:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8088

    浏览量

    82433
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66665
  • MySQL
    +关注

    关注

    1

    文章

    773

    浏览量

    25976

原文标题:大神教你DIY高性能运维堡垒体系

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    想找基于单片机技术的低成本倒车雷达解决方案

    想找基于单片机技术的低成本倒车雷达解决方案,谢谢!
    发表于 12-18 15:23

    低成本蓝牙串口模块解决方案

    血压计、蓝牙遥控家电产品等。产品应用中还经常会出现使用蓝牙主、从模块配套通讯的应用情况。之前,市场上的低成本蓝牙模块不能实现主、从模块配套成形透明串口使用,只能使用
    发表于 03-21 16:46

    0基础学Mysql:mysql入门视频教程!

    互联网行业的高速发展,各个中小企业的数据库存放的数据,也已经达到了相当的数量级。学习目标:深入理解MySQL数据库的原理从硬件 系统 MySQ
    发表于 07-08 10:51

    PF升压型低成本恒压或恒流驱动解决方案-BP2608

    `PF隔离双绕组恒流驱动解决方案-BP3339低待机功耗,3.3V直接输出辅助电源解决方案-BP8519CPF升压型低成本恒压或恒流驱动
    发表于 09-27 11:23

    低成本LCD偏置电源分立式解决方案

    AVDD 电压。两外部充电激励电路提供 TFT 所需的正 VGH 和负 VGL 偏置电压。外部运算放大器 LM7321MF 充当电流缓冲器;它提供 TFT 背板所需的 VCO
    发表于 11-19 14:54

    低成本FOC风机控制方案201208MC_FANB

    项目名称:低成本FOC风机控制方案 项目介绍:该方案适合应用于DC286V供电环境, 用于风机的控制。 主控MCU采用英飞凌的SAF-XC836M,电机与控制器可按需搭配,力矩大、体积小、噪音低
    发表于 12-10 10:05

    MySQL的六日志类型

    MySQL日志管理
    发表于 04-24 16:57

    MAX6675怎么构建提高重型车辆制动性能低成本方案

    本文提出的基于LIN总线监测刹车鼓温度、自动控制喷淋系统以及添加安全报警功能的设计是改善现有重型车辆制动性能低成本、便于实施的方案,为大型车辆整体配备ABS过渡提供
    发表于 05-18 06:37

    新型实用性低成本电子计价秤系统设计

    实用性低成本电子计价秤系统设计 介绍了一种基于AT89S52 单片机的电子计价秤的软硬件设计方法。该系统采用双积分电路替代现在价格昂贵的A/D芯片作为数据采
    发表于 03-24 10:56 65次下载

    代码审计基础

    代码审计基础
    发表于 09-07 11:16 2次下载
    <b class='flag-5'>代码</b><b class='flag-5'>审计</b>基础

    详谈MySQL数据库的不同日志和源码

    任何一种数据库,都会拥有各种各样的日志mysql也不例外。
    的头像 发表于 07-02 16:52 2387次阅读

    MySQL事务日志

    大家都清楚,日志MySQL 数据库的重要组成部分,记录着数据库运行期间各种状态信息。MySQL 日志主要包括「错误日志」、「查询
    的头像 发表于 11-14 09:58 1556次阅读
    <b class='flag-5'>MySQL</b>事务<b class='flag-5'>日志</b>

    可减少存储负荷和成本的无证书公开审计方案

    公钥密码体制中多数公开审计方案存在证书管理问题,会增加存储负荷和通信成本。为有效验证半可信云中数据的完整性,减少证书管理的额外开销,提出一种无证书的公开审计
    发表于 04-27 15:00 5次下载
    可减少存储负荷和<b class='flag-5'>成本</b>的无证书公开<b class='flag-5'>审计</b><b class='flag-5'>方案</b>

    详解MySQL三大日志的作用

    MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制
    的头像 发表于 07-22 14:44 974次阅读

    MySQL三种日志讲解

    MySQL 日志包含了错误日志、查询日志、慢查询日志、事务日志、二进制
    的头像 发表于 07-25 11:15 455次阅读
    <b class='flag-5'>MySQL</b>三种<b class='flag-5'>日志</b>讲解