在 ubuntu 服务器中记录网络活动

Car*_*ala 6 networking monitoring

我管理一个暴露在互联网上的 Ubunu 服务器,并且需要以一种允许我事后分析的方式来监视和跟踪所有网络活动。

我已经尝试了一些工具,例如tshark或tcpdump,它们给了我太多细节,vnstat没有给我想要的细节(它只显示带宽)和tcptrack,作为实时监控工具还可以但没有给我进一步分析的日志选项。

我想到的是 tcptrack 和 vnstat 之间的东西:

一个记录每个连接的守护进程,并在需要时为我提供一份综合报告,显示每个已建立连接的 IP、端口和时间戳,以及每次连接尝试(因此,它还应该显示 iptables 丢弃的连接的 SYN 数据包) . 理想情况下(这只是一个加分点:),它将信息存储到一些 sql 数据库中,例如 mysql 或 postgresql,这将允许执行任意选择语句以获得自定义报告(例如,监视来自单个 IP,或使用特定服务提取所有 IP 的列表)。

我必须说我已经尝试过结合一些工具,比如使用 tcpdump 记录日志,然后使用 tcptrack 显示结果,但我没有按预期工作。

那么,有没有接近这个“想法”的工具?

slm*_*slm 3

我认为实现您想要的最简单的方法是使用日志iptables记录到 LOG 或 ULOG 目标。

\n\n

这将为您留下以下类型的日志信息:

\n\n
\n

8 月 13 日 14:42:07 srv1 IN=eth0 OUT= MAC=00:0c:29:8c:2b:6c:00:d0:02:eb:e8:0a:08:00 SRC=75.125.70.194 DST=XXX .XXX.XXX.XXX LEN=40 TOS=00 PREC=0\xc3\x9700 TTL=54 ID=9566 PROTO=TCP SPT=57144 DPT=445 SEQ=2770468863 ACK=0 WINDOW=512 SYN URGP=0

\n\n

8 月 13 日 14:45:29 srv1 IN=eth0 OUT= MAC=00:0c:29:8c:2b:6c:00:d0:02:eb:e8:0a:08:00 SRC=75.125.70.194 DST=XXX .XXX.XXX.XXX LEN=40 TOS=00 PREC=0\xc3\x9700 TTL=55 ID=13702 PROTO=TCP SPT=58528 DPT=445 SEQ=1217789951 ACK=0 窗口=512 SYN URGP=0

\n
\n\n

然后,当您想查看该系统上发生的情况时,您将能够使用标准工具(例如awk或 )从中提取数据。grep

\n\n

2 此类规则应记录任何传入或传出的“新”连接。这些将为规则添加前缀,以便更容易发现:

\n\n
iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New Connection: "\niptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New Connection: "\n
Run Code Online (Sandbox Code Playgroud)\n\n

导致日志条目如下:

\n\n
\n

[2134.566659]新连接:IN = OUT = wlan0 SRC = 192.168.178.229 DST = 192.168.178.21 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 65094 DF PROTO = UDP SPT = 55717 DPT = 53 LEN = 40

\n
\n\n

参考

\n\n\n