在linux(特别是RHEL/CentOS 7)中,有没有办法,例如/var/log/audit/audit.log
记录所有响应ping
?
如果网络上有人对我的 Linux 计算机执行 ping 操作,有没有办法记录下来,并在稍后知道发生这种情况的时间以及从哪个 IP 地址对我执行 ping 操作?
答案1
首先确保您的系统安装了 tcpdump。然后创建脚本文件并在脚本文件中添加以下命令。
sudo tcpdump -i ethX icmp and icmp[icmptype]=icmp-echo >> ping.log
然后在cronjob中添加这个脚本文件。
答案2
这就是我决定做的对我来说足够有效的事情。
参考man tcpdump
tcpdump -U -i eth0 icmp and icmp[icmptype]=icmp-echo -C 10 -w /root/ping_`date '+%Y%m%d_%H%M'`.log &
这将保存到二进制日志文件中,并-w
在日志文件名后附加日志文件启动时的日期+时间。
-C
将日志文件限制为 # MB
这-U
很重要,因为它会导致文件刷新,没有它,您将永远不会看到其中的内容/root/ping.log直到您按 Ctrl-C tcpdump。
需要读取二进制格式的 ping 日志,tcpdump
并且可以通过以下方式轻松完成
tcpdump -r <log file> -tttt
tcpdump -r <log file> -tttt -n
我无法ts
通过管道从 moreutils 获取工作。通过 tcpdump 重定向标准输出也>>
不起作用。这是在 RHEL 7.9 上
为了停止这个后台 tcpdump 进程,我正在执行 aps -ef | grep tcpdump | grep root
来识别其 PID,然后kill -9 <PID>
对其执行 a 。