我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell如何记录用户的IP与命令详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell如何记录用户的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/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell如何记录用户的IP与命令详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell如何记录用户的IP与命令详解

记录输入的命令 history命令可以查看用户输入过的命令,一个典型history命令输出如下:980 2017-05-29 20:17:37 cd - 981 2017-05-29 20:17:41 cat index.html 982
2022-06-04

shell怎么记录用户的IP与命令

这篇文章将为大家详细讲解有关shell怎么记录用户的IP与命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。记录输入的命令history命令可以查看用户输入过的命令,一个典型history命令输出如下:9
2023-06-09

linux shell历史命令记录功能如何用

本篇内容主要讲解“linux shell历史命令记录功能如何用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux shell历史命令记录功能如何用”吧!在 linux 下面可以使用 his
2023-07-06

如何实现用来记录登录后使用命令的shell脚本

这篇文章主要介绍了如何实现用来记录登录后使用命令的shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:#/bin/bash# history#把以下代码直接
2023-06-09

如何理解Linux基础命令的显示登录用户w

如何理解Linux基础命令的显示登录用户w,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。w显示哪些用户登录,并且显示用户在干什么。报头按此顺序显示当前时间、系统运行时间、当
2023-06-05

如何理解linux shell命令行选项与参数用法

这篇文章主要讲解了“如何理解linux shell命令行选项与参数用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解linux shell命令行选项与参数用法”吧!问题描述:在lin
2023-06-09

如何使用git命令行切换登录的账户

在使用Git命令行切换登录的账户,可以按照以下步骤操作:1. 打开Git Bash(Windows系统)或终端(Mac和Linux系统)。2. 输入以下命令以查看当前设置的全局用户名和邮箱:```git config --global us
2023-08-14

Linux Shell如何用ssh命令统计分布式集群信息详解

目录一、统计分布式集群信息的思路二、SSH加密原理三、SSH命令四、利用ssh-keygen和ssh-copy-id 实现免密登录五、linux Shell 脚本实现六、ssh只循环一次问题总结一、统计分布式集群信息的思路 用免密的远程登陆
2022-07-24

SUSE系统中如何设置用户登录后自动执行的命令

要在SUSE系统中设置用户登录后自动执行的命令,可以按照以下步骤进行操作:打开终端,并以root用户身份登录。编辑/etc/profile文件,可以使用vi或者其他文本编辑器打开该文件。vi /etc/profile在文件中添加需要执行的命
SUSE系统中如何设置用户登录后自动执行的命令
2024-03-13

如何使用Linux服务器的巡检用户和基础命令,捕捉用户登录痕迹?

本文使用一个最普通的巡检用户,查看RedHat 7.4系统日志,检查用户登录痕迹,说明如何判断是否存在违规访问记录,如跳板访问等。这里需要关心的日志列表如下/var/log/lastlog 二进制文件,记录了最近的连接记录/var/log
2023-06-05

Linux如何使用压缩和解压到指定目录的命令

这篇文章给大家分享的是有关Linux如何使用压缩和解压到指定目录的命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、命令格式:tar -zxvf 【压缩包文件名.tar.gz】 -C 【路径】/注释:解压.
2023-06-12

如何使用pip命令进行Python开发者必看的安装方法详解

Python开发者必看:pip命令安装方法详解引言:Python是一种广泛使用的高级编程语言,拥有庞大的开发者社区和生态系统。为了方便Python开发者管理和使用第三方库,Python提供了一个强大的包管理工具——pip。本文将详细解释p
如何使用pip命令进行Python开发者必看的安装方法详解
2024-01-18

编程热搜

目录