我有 4 个特定文件似乎不断从用户的主目录中消失。据我们所知,没有 cronjobs 或其他自动化任务会删除它们。我已经对它们设置了 auditd,但日志并没有真正显示出任何感兴趣的东西。我可以看到我们的备份实用程序每晚都在访问它们,直到它们不再存在为止,但除此之外别无他物。有没有什么会导致这些文件被删除而绕过auditd?
有问题的文件是这些:
/home/username/.bashrc
/home/username/.bash_profile
Run Code Online (Sandbox Code Playgroud)
以及该用户的 .ssh 目录中的几个文件。放置在名为“keepers”的子文件夹中的这些文件的副本也会同时被删除。将它们的权限更改为 000 并将它们归 root 拥有并没有帮助。
我目前已经设置了 inotifywait 来记录创建、删除、移动那个子文件夹,所以希望这会出现一些东西,尽管除了它发生的时间之外没有记录太多,而不是导致它的原因。
问题是clamav-daemon几乎每天都重新启动:
Sep 1 06:30:00 x-master clamd[6778]: Pid file removed.
clamd[6778]: --- Stopped at Tue Sep 1 06:30:00 2015
clamd[5979]: clamd daemon 0.98.7 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
clamd[5979]: Running as user root (UID 0, GID 0)
clamd[5979]: Log file size limited to 4294967295 bytes.
clamd[5979]: Reading databases from /var/lib/clamav
clamd[5979]: Not loading PUA signatures.
clamd[5979]: Bytecode: Security mode set to "TrustSigned".
Run Code Online (Sandbox Code Playgroud)
如果clamdscan正在运行,则会导致问题:
/etc/cron.daily/clamav_scan:
ERROR: Could not connect to clamd on x.x.x.x: …Run Code Online (Sandbox Code Playgroud) 我在服务器上运行了一个论坛脚本,不知何故,少量附件开始丢失。我想知道是什么在删除它们以及在什么时间删除它们。如何设置 Linux auditd (auditctl) 来监视目录树(附件存储在多级目录树中)以监视那里的文件删除?
可能我应该为此使用其他工具吗?
几周前,我遇到了一个问题,我在大约 300 个节点的大型网络中更改了 DNS 地址。之后,一些节点仍然继续询问旧的DNS服务器,尽管resolv.conf没问题,并且host/nslookup正在查询新的DNS服务器。
查看 tcpdump 并尝试使用 iptables 日志记录请求,我确认确实有些主机仍在向旧名称服务器发送查询。
我让其中一台主机退出生产并开始关闭服务/跟踪进程,试图找出罪魁祸首。
最后 - 它是 lldpd 守护进程,它显然在启动时缓存了名称服务器,甚至没有注意到 resolv.conf 中的变化。
所以,我的问题是 - 有没有更智能的方法来找出哪个 PId 正在生成特定类型的流量?我尝试使用 auditctl 但没有取得多大成功。CentOS 6 有问题,但如果有任何 Linux 发行版的解决方案,我将不胜感激。
我正在尝试了解如何保护 Linux 机器(我正在使用 Ubuntu)。建议使用 Auditd 来监控节点上的活动。我已经设法安装了它,但是我找不到有关正确设置以保护我的节点的太多信息。
我应该如何设置 auditd 以使我的节点更安全?我应该监控什么?为什么?我正在寻找经验丰富的管理员的设置示例和建议。
谢谢!
失败:
# service auditd start
Starting auditd: [FAILED]
Run Code Online (Sandbox Code Playgroud)
失败:
# /etc/init.d/auditd start
Starting auditd: [FAILED]
Run Code Online (Sandbox Code Playgroud)
令人沮丧的是 - 有效:
# bash /etc/init.d/auditd start
Starting auditd: [ OK ]
Run Code Online (Sandbox Code Playgroud)
我在 bash /etc/init.d/auditd 的不同地方添加了类似 echo 1 echo 2 的东西,所以看看脚本采用的路径,但无济于事。
最终运行但失败的命令是
env -i PATH=/sbin:/usr/sbin:/bin:/usr/bin TERM=xterm /etc/init.d/auditd start
Run Code Online (Sandbox Code Playgroud)
为什么添加 bash 使它起作用?寻找故障排除的想法。
根据 Michaels 建议使用 run_init,我可以从 bash 中获得一些有意义的调试:
# run_init bash -x /etc/init.d/auditd start
[...]
+ /bin/bash -c 'ulimit -S -c 0 >/dev/null 2>&1 ; auditd '
+ '[' 6 -eq 0 ']'
+ failure 'auditd …Run Code Online (Sandbox Code Playgroud) 我正在将所有 execve 记录在一种蜜罐盒中,因此我试图理解这些命令。其中有很多,都带有 'bash -c' 和一些没有用双引号括起来的长字母数字值。我怎样才能理解我真正在看什么?
type=EXECVE msg=audit(1425426965.480:57967): argc=3 a0="bash" a1="-c" a2=6C73202F6574632F696E69742E64207C2067726570202D4520275B302D39612D7A5D7B31307D27207C2061776B20277B7072696E742024317D27207C207861726773206B696C6C616C6C
type=EXECVE msg=audit(1425510362.928:72792): argc=3 a0="bash" a1="-c" a2=6B696C6C616C6C20373737206874747064
type=EXECVE msg=audit(1425510366.832:72800): argc=3 a0="bash" a1="-c" a2=726D202D66202F746D702F68747470642A
type=EXECVE msg=audit(1425510366.832:72801): argc=3 a0="rm" a1="-f" a2="/tmp/httpd*"
Run Code Online (Sandbox Code Playgroud)
httpd 的最后一部分给出了一些指示,但我真的很想确切地了解发生了什么。
我注意到 /tmp 中有很多空文件,它们的名称类似于“/tmp/tmp.tMIHx17730”。我运行审计规则,我发现 mktemp 正在创建它,这不是很有帮助。
如何找出哪个脚本调用 mktemp 来创建这些文件?我可以使用 auditd 捕获父进程 ID/命令行吗?
更新:我相信我有父进程 ID (ppid=17729),但脚本很快退出,我找不到脚本。我也可以设置 auditd 来获取父进程命令行吗?
更新 2:这是我如何设置 auditd 以显示写入 tmp 的内容:
auditctl -w /tmp -k tmpfiles
Run Code Online (Sandbox Code Playgroud)
然后:
ausearch -k tmpfiles|grep "tmp."
Run Code Online (Sandbox Code Playgroud)
然后我选择一个文件然后我做
ausearch -k tmpfiles -f /tmp/tmp.tMIHx17730
Run Code Online (Sandbox Code Playgroud)
这向我展示了创建文件和父进程 pid 的进程。我需要设置某种进程启动侦听器来捕获该 pid 的最新进程
我在我的 Debian Jessie 机器上安装了auditd和audispd-plugins并且没有涉及任何配置。我看到事件被写入/var/log/audit/audit.log,例如:
type=LOGIN msg=audit(1462384141.770:838): pid=3662 uid=0 old-auid=4294967295 auid=0 old-ses=4294967295 ses=21 res=1
type=USER_START msg=audit(1462384141.770:839): pid=3662 uid=0 auid=0 ses=21 msg='op=PAM:session_open acct="root" exe="/usr/sbin/cron" hostname=? addr=? terminal=cron res=success'
type=CRED_DISP msg=audit(1462384141.778:840): pid=3662 uid=0 auid=0 ses=21 msg='op=PAM:setcred acct="root" exe="/usr/sbin/cron" hostname=? addr=? terminal=cron res=success'
type=USER_END msg=audit(1462384141.778:841): pid=3662 uid=0 auid=0 ses=21 msg='op=PAM:session_close acct="root" exe="/usr/sbin/cron" hostname=? addr=? terminal=cron res=success'
type=USER_ACCT msg=audit(1462384201.780:842): pid=3761 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting acct="root" exe="/usr/sbin/cron" hostname=? addr=? terminal=cron res=success'
type=CRED_ACQ msg=audit(1462384201.780:843): pid=3761 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred acct="root" exe="/usr/sbin/cron" …Run Code Online (Sandbox Code Playgroud) 我正在研究一个 6.3 美分的盒子,并试图记录从 bash shell 执行的所有命令并遇到 pam_tty_audit。我已将适当的行添加到我的/etc/pam.d/system-auth file:
session required pam_tty_audit.so enable=*
Run Code Online (Sandbox Code Playgroud)
问题是它似乎不会捕获命令,除非用户是 root。例如,如果我以 root 身份登录,它会将所有内容都记录到审计日志中,但是如果我以普通用户身份登录,它不会开始记录任何内容,直到我将 su 登录到 root 之后。
有任何想法吗?