摘要
我的系列文档
编程语言
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阅读当前文档
目录
首先谈谈什么是“历史记录异地留痕”,历史记录就是~/.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命令应立即报警,通知相关人员检查。
首先我们将要用户操作留痕,以方便随时调阅,我们要知道系统管理员做了那些操作,还可用于审计工作。例如我们开发工作中有一个环节就是Code Review (代码审查),可以帮助我们提前发现BUG,以及不合理做法,甚至是人为恶意植入后门等等。
历史记录异地留痕就是运维工作的 sysop review(运维审查)。
其次是监控,注意这里的~/.bash_history监控并非实时监控,因为只有用户推出shell后才能保存~/.bash_history文件。所以监控是滞后的,但也足够能帮助我们更早的知道系统发生了那些变化。
这个系统可以实时部署,对现有的业务不会影响。
历史记录异地留痕分为两个部分,第一个部分是节点,第二部分是收集端,收集段同时还负责监控与报警。节点将收集的数据发送给收集端,然后收集端归档日志。
最高权限着负责部署即可
首先修改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
$ 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
$ 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
《日志归档与数据挖掘》