Shell-history命令加记录用户IP
记录输入的命令
history命令可以查看用户输入过的命令,一个典型history命令输出如下:
980 2017-05-29 20:17:37 cd -
981 2017-05-29 20:17:41 cat index.html
982 2017-05-29 20:20:11 vim index.html
983 2017-05-29 20:39:18 cd -
984 2017-05-29 20:39:25 cd /var/log/nginx/
985 2017-05-29 20:39:27 vim access.log
986 2017-05-29 20:50:10 netstat -ntlp
987 2017-05-31 11:04:39 tmux a -t0
988 2017-05-31 11:15:42 exit
989 2017-05-31 12:32:38 tmux a -t0
记录IP
为了记录用户的IP,需要首先获取用户的登录IP。由于在用户登入期间,会话不会断开,所以只需获取一次即可。
获取IP命令: who am i | awk '{print $NF}' | sed -e 's/[()]//g' 。
接着按照 username@ip datetime command 的格式记录用户的命令,这需要设置HISTTIMEFORMAT的值。获取IP和设置命令格式结合起来:
IP=who am i | awk '{print $NF}' | sed -e 's/[()]//g'
export HISTTIMEFORMAT=$USER@$IP %F %T
为了让上述命令对所有用户生效,可将其写到/etc/profile文件中。设置完毕后(可能需要重新登录,或者用source命令重新加载/etc/profile),history命令输出如下类似结果:
412 root@8.8.8.8 2017-06-02 22:03:27 netstat -nt
414 root@8.8.8.8 2017-06-02 22:03:38 netstat -ntpl
415 root@8.8.8.8 2017-06-03 14:17:09 history
416 root@8.8.8.8 2017-06-03 14:17:30 tmux ls
417 root@8.8.8.8 2017-06-03 14:17:34 tmux
418 root@8.8.8.8 2017-06-03 14:17:49 tmux a -t0
history命令的内容保存在用户的~/.bash_history文件中,用户可随时更改或者清除。为了统一管理用户的命令记录,我们希望用户执行命令后,执行的命令能输出到某个文件内。达到这个目的需要 PROMPT_COMMAND 环境变量的协助。
设置PROMPT_COMMAND将用户的上一条命令log到syslog里面去:
export PROMPT_COMMAND="history 1 | logger -t cmd_log -p user.notice"
logger命令将信息输出到/var/log/messages中。任意输入一个命令,然后打开/var/log/messages,会看到已经记录在案。/var/log/messages文件只有root有权限访问,从而达到了记录用户IP和命令的目的。
如果你熟悉syslog,可以将命令记录输出到单独的文件中。这需要在logger命令的-p选项中指定工具名称和等级,例如local2.notice,然后编辑/etc/rsyslog.conf,将local2的信息输出到单独文件: local2.* /var/log/command.log,最后重启rsyslog服务。
通过如上设定,即可在用户无感知的情况下log用户的IP、时间和操作命令。
对用户来说,如何绕过?可以有两种方式:
将命令写到脚本,执行脚本;
unset PROMPT_COMMAND变量。
参考
https://askubuntu.com/questions/93566/how-to-log-all-bash-commands-by-all-users-on-a-server
http://moper.me/ssh-audit-chats.html
http://zhu8337797.blog.163.com/blog/static/170617549201222912830483/
转载:http://www.jb51.net/article/117463.htm
Shell-history命令加记录用户IP的更多相关文章
- Linux history显示时间/用户/ip的设置
在使用linux服务器的时候发生一些不知道谁操作的问题,google一下说history命令可以查看到历史记录,用过之后发现还是不够详细,再google,原来可以自己设置history的显示. 记录设 ...
- shell history 命令
1.history命令可以显示历史执行过的命令: 2.使用!+序号执行该序号对应的命令: 例子 $ history sed 's/haha/hello/g' test cat test cat tes ...
- shell chpasswd 命令 修改用户密码
使用useradd 命令增加一个用户后,它默认是没有设置密码的.如果需要给用户设置或者修改密码,一般会使用passwd命名. 但是passwd命令有一个缺陷,它需要人工交互操作. 如果你是一名系统管理 ...
- CentOS配置history记录每个用户执行过的命令
一个偶然的机会,看到了这个文档,先存下来,后续使用的话直接就加进去了 要记录登录者的用户名.IP.操作记录,在/etc/bashrc末尾加入几个环境变量,用于history命令显示用户ip等内容,完成 ...
- history命令
在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中.通过这个文件可以查询 shell 命令 ...
- 谁动了我的主机? 之活用History命令
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Linux系统下可通过history命令查看用户所有的历 ...
- 善用Bash history 命令
大家好,我是良许 相信大家平时都有用 history 命令来查看命令历史记录,但是实际上 history 命令并非只有这个功能,history 还有很多有用的功能.尤其是 Bash 版本的 histo ...
- [转]Linux Shell History (快速使用Linux命令)
http://www.blogjava.net/lihao336/archive/2010/10/11/334367.html Linux Shell History (快速使用Linux命令) Li ...
- linux中,history命令,显示时间戳?操作人?IP地址?
需求描述: 在linux环境中,有的时候为了审计的需要,要记录谁什么时间从什么IP登录,执行了什么命令,bash的history命令就能够记录这些信息,但是在默认的情况下,是不记录时间的,所以呢,在这 ...
随机推荐
- 第204天:js---重载和多态
一.根据arguments个数实现重载 js本身不支持重载,所以只能通过其他方式实现,arguments检测传参的个数,然后再执行不同的方式 function add() { var sum = 0 ...
- 第101天:CSS3中transform-style和perspective
一.transform-style 1.transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现. 有两个属性值:flat和preserve-3d. transfor ...
- 51nod 1804 小C的多边形(构造)
首先可以算出无解的充分不必要条件,所有边的和为sum=3*((n-1)*n)/2,如果sum%n!=0显然无解. 也就是说n为奇数必然无解.现在考虑n为偶数的情况. 不妨假设n为偶数有解,现在考虑如何 ...
- 部分NodeJs
一.cnmp的操作: 1.cnmp info jquery查询jquery的版本: 2.cnmp install jquery@1.11.1:安装: 3.cnmp list查询所有下载的内容: 4.c ...
- WebGL画一个10px大小的点
WebGL程序在屏幕上同时使用HTML和javascript来创建和显示三维图形.WebGL中新引入的<canvas>元素标签,它定义了网页上的绘图区域. 由于<canvas> ...
- BZOJ4719 NOIP2016天天爱跑步(线段树合并)
线段树合并的话这个noip最难题就是个裸题了. 注意merge最后return x,以及如果需要区间查询的话这里还需要up,无数次死于这里. #include<iostream> #inc ...
- 【MVVM Dev】ComboBox嵌入CheckBox的显示问题
一.前言 在ComboBox中嵌入若干个CheckBox时,当我们勾选一些CheckBox,ComboBox会显示相应的勾选项. 例如:CheckBox项有A,B,C 那么勾选这三项,ComboB ...
- 70路小报:用PV和UV作为网站衡量指标已经过时
方法]投资人呼吁:PV和UV不应该再作为产品衡量指标 风险投资机构Andreessen Horowitz近日一直反对再用传统的网站衡量指标去评价互联网产品,比如PV和UV,甚至包括应用的下载量. 他们 ...
- 日志分割工具——cronolog
使用cronolog可以格式化日志文件的格式,比如按时间分割,易于管理和分析. 1.下载软件 http://cronolog.org/download/index.html 用法见 lighttpd配 ...
- 洛谷 P1410 子序列(DP)
这题的题解的贪心都是错误的...正解应该是个DP 考虑有哪些有关的条件:两个序列的当前长度, 两个序列的末尾数, 把这些都压进状态显然是会GG的 考虑两个长度加起来那一位的数一定是其中一个序列的末尾, ...