我在我的 linux red-hat 6.x 机器上安装了软件包审计,以便查看登录到我的 linux 机器的每个用户的记录
yum install audit
安装后并重新启动审核服务
service auditd start
我跟踪audir.log 文件以查看用户记录
tail -f /var/log/audit/audit.log
但从这个日志中我只看到用户 IP 以及他何时登录我的 Linux 机器
用户执行的linux命令的记录没有出现在审计日志
有人可以建议一下为什么我们看不到 linux 命令的历史吗审计日志?
的例子审计日志
type=USER_START msg=audit(1422876162.936:152): user pid=28114 uid=0 auid=0 ses=74236 msg='op=PAM:session_open acct="root" exe="/usr/sbin/sshd" hostname=10.1.113.35 addr=10.1.113.35 terminal=ssh res=s'
type=USER_LOGIN msg=audit(1422876162.940:153): user pid=28116 uid=0 auid=0 ses=74236 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=10.1.113.35 addr=10.1.113.35 terminal=/dev/pts/1 res=success'
type=USER_START msg=audit(1422876162.940:154): user pid=28116 uid=0 auid=0 ses=74236 msg='op=login id=0 exe="/usr/sbin/sshd" hostname=10.1.113.35 addr=10.1.113.35 terminal=/dev/pts/1 res=success'
type=CRYPTO_KEY_USER msg=audit(1422876162.940:155): user pid=28116 uid=0 auid=0 ses=74236 msg='op=destroy kind=server fp=99:c8:56:79:64:17:0b:67:b5:6c:e9:36:22:8a:b1:88 direction=? spid=28116 suid=0 '
type=CRYPTO_KEY_USER msg=audit(1422876162.940:156): user pid=28116 uid=0 auid=0 ses=74236 msg='op=destroy kind=server fp=6f:b9:bf:4f:84:1f:58:e5:d2:1c:94:1f:11:8e:26:61 direction=? spid=28116 suid=0 '
type=CRED_REFR msg=audit(1422876162.940:157): user pid=28116 uid=0 auid=0 ses=74236 msg='op=PAM:setcred acct="root" exe="/usr/sbin/sshd" hostname=10.1.113.35 addr=10.1.113.35 terminal=ssh res=success'
- 备注:如果这个工具审计无法完成每个用户的记录,请帮我找到其他可以完成这项工作的工具
答案1
也许比使用一些外部工具需要更多的努力,但是last
或者utmpdump
使用这些文件提供所有需要的远程登录信息(阅读http://xmodulo.com/monitor-user-login-history-centos-utmpdump.html有关这些文件的更多信息):
/var/log/wtmp
/var/log/btmp
/var/run/utmp
正如上面所说,您可以自己处理用户 shell 命令历史记录。
答案2
登录数据不是已经可以在auth.log
没有额外软件包的情况下使用吗?
command-history
是shell的问题,要记录它,你必须给shell(系统上的所有shell)打上一个记录每一行输入的功能(但如果用户真的想逃避日志记录,他总能找到办法) 。这是因为每个应用程序(不仅仅是 shell)都可以分叉并执行它希望的任何命令。因此,唯一万无一失的方法是记录系统上启动的每个进程(请参阅下面的第二个链接)。然而,这仍然排除了 shell 完成的所有不需要生成新进程的操作(所有 shell 内置函数)——原则上有人可以调用echo "malicious command" | bash
并且只能bash
作为命令行可见。因此 shell 日志记录和 exec 日志记录可能都是可行的方法。
相关链接:
https://stackoverflow.com/questions/15698590/how-to-capture-all-the-commands-typed-in-unix-linux-by-any-user 用户执行的命令日志文件
答案3
您也可以使用流程会计。在 Fedora 上查找服务 psacct 并启用它。
然后您可以通过运行以下命令来查看用户做了什么/正在做什么:
sa (list of all commands)
lastcomm bash (who ran bash)
lastcomm vpathak (what was run by vpathak)
这与一些 shell 历史记录应该会给您一个很好的概述。
为了更好地了解登录的来源和使用的密钥,您还可以查看详细的逐步入侵尝试调查:http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-Russia