如何DIY高性能运维堡垒体系

Yennis 发布于 2016/10/25 14:36
阅读 152
收藏 1

概述

不怕出问题,就怕出问题找不到原因

运维团队一般会有个需求就是记录运维或者开发同事在服务器上的操作记录,比如进行一些常规审核或者是服务器被黑了、服务器日志被删的情况需要知道发生过什么事情,今天和大家分享下我们现在的服务器的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函数,修改完之后内容:


然后重新编译安装即可。
上面取的是NAME_OF_KEY这个系统变量,我们称之为指纹,用这个变量来对应到具体的人员,然后将对应的操作记录到syslog。如果没有取到这个变量的话,/var/log/messages那里这个变量就显示为空了,只知道是某个系统帐号在执行,但无法精确到个人。

详细的方案分析可以点击链接阅读我们的技术原文

http://dwz.cn/4qLvgJ

加载中
返回顶部
顶部