Shell 历史记录异地留痕审计与监控

Shell 历史记录异地留痕审计与监控

摘要

我的系列文档

编程语言

Netkiller Architect 手札

Netkiller Developer 手札

Netkiller PHP 手札

Netkiller Python 手札

Netkiller Testing 手札

Netkiller Cryptography 手札

Netkiller Perl 手札

Netkiller Docbook 手札

Netkiller Project 手札

Netkiller Java 手札

Netkiller DevOps 手札

操作系统

Netkiller Linux 手札

Netkiller Debian 手札

Netkiller CentOS 手札

Netkiller FreeBSD 手札

Netkiller Shell 手札

Netkiller Security 手札

Netkiller Web 手札

Netkiller Monitoring 手札

Netkiller Storage 手札

Netkiller Mail 手札

Netkiller Multimedia 手札

数据库

Netkiller Database 手札

Netkiller PostgreSQL 手札

Netkiller MySQL 手札

Netkiller NoSQL 手札

Netkiller LDAP 手札

网络设备及其他

Netkiller Network 手札

Netkiller Cisco IOS 手札

Netkiller H3C 手札

Netkiller Amateur Radio 手札

您可以使用iBook阅读当前文档


目录

  • 1. 什么是Shell历史记录异地留痕与监控
  • 2. 什么要将Shell历史记录异地留痕并监控
  • 3. 何时做历史记录异地留痕
  • 4. 在哪里做历史记录异地留痕
  • 5. 角色与权限
  • 6. 怎么实现历史记录异地留痕
    • 6.1. 节点配置
    • 6.2. 推送端
    • 6.3. 收集端
  • 7. 延伸阅读

1. 什么是Shell历史记录异地留痕与监控

首先谈谈什么是“历史记录异地留痕”,历史记录就是~/.bash_history文件,不同Shell名字可能不同,它会记录每次用户在键盘上敲下的命令,我们可以通过下面命令查询历史记录。

$ history | head
 1009  ls /www
 1010  vim Makefile
 1011  cat Makefile
 1012  make index.html
 1013  vim Makefile
 1014  make index.html
 1015  vim Makefile
 1016  make index.html
 1017  vim Makefile
 1018  make index.html

 $ history | tail
 2000  find /tmp/var/
 2001  ll
 2002  cd workspace/Journal/
 2003  s
 2004  ls
 2005  make shell.html
 2006  cat ~/.bash_history
 2007  history
 2008  history | head
 2009  history | tail

 $ cat ~/.bash_history | head -n 100
 cat /etc/issue
cat /etc/resolv.conf
ifconfig
cat /etc/resolv.conf
dmd
df
df -T
cat /etc/fstab
cat /etc/issue
uname -a
ps ax
cd /srv/
ls
cd workspace/
ls
df
df -T
df
ls
cd ..
ls		

由于篇幅的限制,我是用了head,tail 命令限制显示长度。

现在我在看看“监控”,监控就是过滤 ~/.bash_history 文件内字符串,达到匹配标准,做出报警操作等等。例如我们发现adduser命令应立即报警,通知相关人员检查。

2. 什么要将Shell历史记录异地留痕并监控

首先我们将要用户操作留痕,以方便随时调阅,我们要知道系统管理员做了那些操作,还可用于审计工作。例如我们开发工作中有一个环节就是Code Review (代码审查),可以帮助我们提前发现BUG,以及不合理做法,甚至是人为恶意植入后门等等。

历史记录异地留痕就是运维工作的 sysop review(运维审查)。

其次是监控,注意这里的~/.bash_history监控并非实时监控,因为只有用户推出shell后才能保存~/.bash_history文件。所以监控是滞后的,但也足够能帮助我们更早的知道系统发生了那些变化。

3. 何时做历史记录异地留痕

这个系统可以实时部署,对现有的业务不会影响。

4. 在哪里做历史记录异地留痕

历史记录异地留痕分为两个部分,第一个部分是节点,第二部分是收集端,收集段同时还负责监控与报警。节点将收集的数据发送给收集端,然后收集端归档日志。

5. 角色与权限

最高权限着负责部署即可

6. 怎么实现历史记录异地留痕

6.1. 节点配置

首先修改history格式,默认只有行号,我需要记录每一个命令的输入时间点。

			cat >> /etc/bashrc <<EOF
export HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "
EOF			

此时输入history命令你可以看到时间点

# history
  741  2014-12-24-10:06:26 ll
  742  2014-12-24-10:06:40 ls
  743  2014-12-24-10:06:44 ll
  744  2014-12-24-10:06:47 ls
  745  2014-12-24-10:58:13 history			

6.2. 推送端

$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install			

配置启动脚本,打开文件logging/init.d/uhistory

			HOST=127.0.0.1 #此处为收集端的IP地址

# Port | User 
# -------------------
# 配置端口号与用户
done << EOF
1220 neo
1221 jam
1222 sam
EOF				

6.3. 收集端

$ git clone https://github.com/netkiller/logging.git
$ cd logging
$ python3 setup.py sdist
$ python3 setup.py install			

配置收集端端口,编辑文件logging/init.d/ucollection

			done << EOF
1220 /backup/neo/.bash_history
1221 /backup/jam/.bash_history
1222 /backup/sam/.bash_history
EOF			

7. 延伸阅读

《日志归档与数据挖掘》

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Rainbond开源「容器云平台」

好雨云帮每周更新日志(2017.02.20-2017.02.26)

1033
来自专栏CSDN技术头条

Github发布了为桌面应用开发而生的Electron 1.0版本

Github为跨平台桌面应用的开发而生的框架Electron,这周发布了1.0版本。 通过这个框架,开发者可以通过HTML、CSS和JavaScript建立原生...

2106
来自专栏云计算

Kubernetes服务网格(第8部分):Linkerd作为入口控制器

Linkerd旨在使应用程序内部服务间的通信安全,快速和可靠。但是,这些目标同样适用于网络的接入层(应用程序对外的服务)。在这篇文章中,我们将展示Linkerd...

4368
来自专栏有趣的django

微信小程序实战–集阅读与电影于一体的小程序项目(三)

在文章详情页,点击播放音乐后,然后返回到文章列表页,再进到详情页,发现播放按钮是暂停状态,这是因为应用程序存在生命周期,下面就解决这个问题。

952
来自专栏DevOps时代的专栏

测试微服务 VS 测试单体式应用

使用微服务比起使用单体式应用程序结构有许多优点。 但是微服务并不像单体式应用程序一样已经有确定的开发模式。 许多问题尚未解决,我们也还没有看到完善的“微服务方式...

1738
来自专栏Netkiller

Shell 历史记录异地留痕审计与监控

Shell 历史记录异地留痕审计与监控 摘要 ---- 目录 1. 什么是Shell历史记录异地留痕与监控 2. 什么要将Shell历史记录异地留痕并监控 3....

3154
来自专栏韦弦的微信小程序

Xcode 9.3 升级后编译报错

是因为Carthage当前的Framework是用Swift4.0.3编译的,只需要update一下Carthage的三方库就好,命令如下: carthage...

1032
来自专栏Rovo89

WordPress 在使用CDN后获取正确访客 ip

1345
来自专栏Netkiller

网络设备配置管理与版本控制

网络设备配置管理与版本控制 摘要 2014-12-25 我的系列文档 Netkiller Architect 手札 Netkiller Developer ...

39811
来自专栏施炯的IoT开发专栏

Windows Mobile上的小宇宙

  在codeproject上看到了一个非常有意思的应用,windows mobile上看星座图。试想下面一个场景,在北京寒冷冬天的一个晚上,西北风把城市上空的...

1596

扫码关注云+社区