识别到 Linux 服务器的唯一 tcp 连接

识别到 Linux 服务器的唯一 tcp 连接

我正处于将应用程序从一台 Linux 服务器迁移到一台新 Linux 服务器的规划阶段。新服务器将具有不同的 IP 地址和不同的主机名。

我的列表中的项目之一是确定新服务器所需的防火墙规则。我想找到一种方法来识别与旧服务器的所有唯一连接,以便我可以将其提供给我们的网络团队,以便他们可以相应地为新服务器创建新规则。

我尝试运行 tcpdump 一段时间,但收集的文件中有太多信息需要梳理。我可以运行类似的工具来为我提供所需的信息吗?我查看了 netstat,但这似乎只提供了即时连接,如果连接非常短暂,则可能会错过这些连接。

答案1

您是否正在寻找连接到您的服务器的远程计算机?如果是这样,您可以用来iptables记录新连接。

例如,如果您的服务器侦听端口 12345 那么您可以这样做

iptables -A INPUT -p tcp -m tcp --dport 12345 -m limit --limit 2/min -j LOG --log-prefix "IPTables-New-app: " --log-level 4

这将创建日志消息,例如

IPTables-New-app: IN=eth0 OUT= MAC=00:01:23:45:67:89:ab:cd:ef:01:23:45:67:89 SRC=10.20.30.40 DST=100.200.300.400 LEN=52 TOS=0x0A PREC=0x20 TTL=116 ID=32405 DF PROTO=TCP SPT=63669 DPT=12345 WINDOW=200 RES=0x00 CWR ECE SYN URGP=0

我们可以在那里看到源地址。

为了避免性能影响,这限制了生成的日志行数;您可以根据您的需要进行调整。

答案2

将 TCP 转储保存在文件中并用于grep第一次选择。您对其中的内容感兴趣,所以

grep ' > ronsard.home` 

将是一个不错的首选(替换ronsard.home为您的系统)。

接下来,您对事件发生的时间不感兴趣,因此删除时间戳。此外,这些标志大多与您无关。此外,临时端口号(5 位数字)也没什么意义。所以sed会帮助你:

sed 's/.*IP //;s/Flags.*//;s/[0-9][0-9][0-9][0-9][0-9]//g''

最后,你将其通过管道

sort -u

现在您可能已经了解了会话中有趣的部分,并且它不应该再是如此难以克服的数据量。

此方法存在安全方面的问题。您应该从应用程序的角度确定可接受的连接。不是从目前所做的事情来看。显示允许测量会话并不能保证正确的防火墙规则的两个示例是:

  • 如果黑客当前正在入侵您的旧系统,您将创建防火墙规则,允许他也访问新系统。
  • 如果您测量了一天,您可能会错过那些每周使用该应用程序一次的人。

相关内容