如何记录所有登录我的linux机器的人并记录他们

如何记录所有登录我的linux机器的人并记录他们

我在我的 linux red-hat 6.x 机器上安装了软件包审计,以便查看登录到我的 linux 机器的每个用户的记录

yum install audit

套件安装来自:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sec-installing_the_audit_packages.html

安装后并重新启动审核服务

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

相关内容