有没有办法记录进程创建的所有传出连接?我知道,netstat但这似乎更像是一个时间点的快照,而不是在一段时间内运行和记录信息的东西。
我只需要 IP 或主机名、端口和建立连接的过程。
我想要一个日志文件,其中包含每次用户运行任何 suid 程序时的条目,其中包含用户名、程序和传递给它的任何命令行参数。有没有标准的方法可以在 Linux 上实现这一点?
我有一台在 Debian Lenny 下运行的 Linux 服务器,带有 4Go 的 RAM。它运行的不多,只是:
每天 UTC 时间 3:05,服务器几乎所有内存都完全降到底层。在那之后,我有超过 2G 的缓冲区使用并且从未清理过(除非我手动告诉内核删除缓存)。
我在网上搜索了很多,一开始,我认为这是由于 NFS 缓冲区的使用。我使用 gzip/tar 通过 NFS 共享驱动器进行备份,备份发生在 3:05。
但是,我现在处于一个非常奇怪的情况,因为我在 1:40 移动了备份任务(它在 2 分钟内完成)并且我仍然在 3:05 删除了所有 RAM。
在我的日志中,没有什么特别的,除了在 03:05:01,cron 以 root 用户身份打开一个会话并在 03:05:02 立即关闭它而不做任何事情。当然,cron 已经重新启动,我检查了任务的时间——同样,没什么特别的。
知道为什么会这样吗?或者,知道如何跟踪使用所有这些缓冲区的内容吗?
编辑:服务器以 UTC 运行,这里的所有时间都是 UTC。它没有运行任何 NFS 服务器,我也没有安装 mlocate 或 slocate。对于 crontab、daily 和 user crontab,在那个时间什么都不做。
这是我关于 cron 的日志中有趣的部分:
auth.log-20110501:May 1 03:05:01 SRV CRON[15914]: pam_unix(cron:session): session 为用户 root (uid=0)
auth.log-20110501:May 1 03:05:01 打开SRV CRON[15914]: pam_unix(cron:session): session …