如何在Linux中配置SSH记录所有用户的操作 Linux开启运维审计日志的方法

秋墨君_9115

秋墨君_9115

2026-06-07

577人浏览

原创

linux无开箱即用ssh全操作录屏功能,需分层实现:auditd提供内核级命令审计(最可靠),prompt_command辅助记录bash命令,rsyslog外发日志防篡改,生产环境应接入堡垒机满足合规要求。

如何在linux中配置ssh记录所有用户的操作 linux开启运维审计日志的方法

Linux 本身不提供开箱即用的“SSH 全操作录屏”功能,所谓“记录所有操作”,实际是分层实现的:命令级靠 auditd 或 PROMPT_COMMAND,会话级靠堡垒机或 ttyrec,日志归集靠 rsyslog。直接改 .bash_history 或只开 LogLevel VERBOSE 都无法满足审计要求——前者可被用户清空,后者只记登录/登出,不记具体命令。

auditd 记录 execve 系统调用(最可靠命令级审计)

这是内核级审计,绕过 shell 层,连 sudo、su、脚本里执行的命令都会被捕获,且不可绕过或删除(除非 root 主动清空 audit 日志)。

  • 确认 auditd 已安装并运行:systemctl is-active auditd,若为 inactive,先执行 systemctl enable --now auditd
  • 添加规则监听所有命令执行:auditctl -a always,exit -F arch=b64 -S execve -k user_commands(x86_64 系统);如需兼容 32 位程序,再加一条 -F arch=b32
  • 规则持久化:将上述 auditctl 命令写入 /etc/audit/rules.d/user-commands.rules,然后 augenrules --load
  • 查日志用 ausearch -k user_commands | aureport -f -i,注意 exe 字段是二进制路径,cwd 是执行目录,comm 是命令名——不是 bash 里的别名或函数
  • 常见坑:execve 不记录命令输出,只记录“谁在哪儿执行了什么”;若用户用 python -c "import os; os.system('rm -rf /')",audit 只记 python,不记 rm,需配合其他手段

/etc/profile.d/ 中用 PROMPT_COMMAND 实时追加命令(轻量级、易部署)

适合快速上线基础命令记录,但依赖用户使用交互式 bash/sh,且对非 bash shell(如 zsh、fish)或直接 ssh user@host command 形式无效。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • 创建 /etc/profile.d/audit_cmd.sh,内容包含:export HISTTIMEFORMAT="%Y-%m-%d %T " 和 export PROMPT_COMMAND='history -a'
  • 为防覆盖,建议额外加一行:export HISTFILE="/var/log/bash_history_$(whoami)",把每个用户历史写到独立文件,避免多终端冲突
  • 权限必须设为 644,否则普通用户可能因读不到脚本而失效;同时确保 /var/log/ 下目标目录可写(如 chmod 1777 /var/log/bash_history_dir)
  • 该方式记录的命令仍存在被篡改风险(用户可改 HISTFILE 或 unset PROMPT_COMMAND),仅作辅助,不可替代 auditd
  • 注意 history -a 不记录当前行命令,而是下一行才写入——所以最后一条命令总在退出时才落盘

rsyslog 转发命令日志到远程服务器(解决本地日志被删风险)

单机审计最大的问题是日志和被审计主机在同一台机器上,root 权限可一键清空。必须把关键日志外发,且用 UDP/TCP 加密通道(如 RELP)传输。

  • 在客户端配置 logger 打点:export PROMPT_COMMAND='logger -p local6.info "user=$(whoami) cmd=$BASH_COMMAND from=$SSH_CLIENT"',其中 local6 是自定义 facility,避免污染 auth 日志
  • 在 /etc/rsyslog.conf 末尾加:local6.* @192.168.10.100:514(UDP)或 @@192.168.10.100:601(TCP),IP 替换为你的日志服务器地址
  • 服务端 rsyslog 必须监听对应协议和端口,并用 $template 定义格式,否则收到的日志可能无时间戳、无主机名
  • 不要用 auth.* 直接转发,因为 /var/log/secure 里混有密码尝试、PAM 消息等噪声,审计时难过滤
  • 测试是否生效:logger -p local6.info "test",然后在服务端 tail -f /var/log/remote_audit.log 查看

堡垒机才是生产环境真正的审计入口

如果你的目标是满足等保、ISO27001 或内部合规要求,重点不该放在“怎么让 Linux 自己记”,而应检查“Linux 是否已接入堡垒机”。所有审计能力——命令回放、剪切板捕获、SFTP 文件审计、多账号隔离——都由堡垒机侧完成,Linux 服务器只需保证 SSH 可连通即可。

  • 验证连接性:ssh -p 22 -o ConnectTimeout=5 user@192.168.1.100,失败则排查防火墙、sshd_config 中的 PermitRootLogin、AllowUsers 等限制
  • 堡垒机添加资产时,“认证方式”必须与 Linux 实际一致:若用密钥,私钥必须是 PEM 格式(-----BEGIN RSA PRIVATE KEY-----),OpenSSH 新格式(-----BEGIN OPENSSH PRIVATE KEY-----)会被拒绝
  • 字符审计开关常被遗漏:即使资产添加成功,若堡垒机后台没开启“命令审计”策略,所有操作依然不会入库——这不是 Linux 配置问题,是堡垒机策略开关没点开
  • 审计日志中 user_name 来自堡垒机账号(如 zhangsan@company.com),不是 Linux 的 root。多人共用一个堡垒机账号,等于放弃责任认定
  • 真正难的是权限收敛:堡垒机可配命令白名单(如只允许 ls、cat),但若运维人员有 root 权限且能执行 bash,白名单就形同虚设——得靠 auditd + 堡垒机双控

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4010

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3413

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2593

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6290

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5942

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3473

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2965

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3199

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习