记录与程序的连接

Zac*_*Zac 9 networking centos connection

除了使用 iptables 来记录传入的连接..

有没有办法将已建立的入站连接记录到您没有来源的服务(假设该服务不会自行记录此类内容)?我想要做的是根据谁在连接来收集一些信息,以便能够告诉诸如一天中使用最多的服务的时间,主要用户群在世界上的哪个位置等。

我知道我可以使用netstat并将其连接到 cron 脚本,但这可能不准确,因为脚本只能运行一分钟。

这是我现在的想法:

  • 编写一个不断轮询的程序netstat,寻找没有出现在上次轮询中的已建立连接。不过,这个想法似乎是在浪费 CPU 时间,因为可能没有新的连接..
  • 编写一个包装程序,在服务运行的任何端口上接受入站连接,但是我不知道如何将该连接传递给真正的服务。

编辑:我突然想到这个问题可能更适合 stackoverflow,尽管我不确定。对不起,如果这是错误的地方。

use*_*517 4

您可以使用 iptables 记录新连接

iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection "
Run Code Online (Sandbox Code Playgroud)

这将为新的 ssh 连接添加类似这样的消息

10 月 6 日 10:58:23 centos 内核:新连接 IN=eth0 OUT= MAC=00:0c:29:5b:a5:ea:00:0c:29:2d:94:a0:08:00 SRC=192.168。 1.72 DST=192.168.254.187 LEN=52 TOS=0x00 PREC=0x00 TTL=126 ID=15498 DF PROTO=TCP SPT=59221 DPT=22 WINDOW=8192 RES=0x00 SYN URGP=0

或者像这样创建一个新的 http 连接

10 月 6 日 11:03:56 centos 内核:新连接 IN=eth0 OUT= MAC=00:0c:29:5b:a5:ea:00:0c:29:d2:2c:38:08:00 SRC=192.168。 254.188 DST=192.168.254.187 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=10345 DF PROTO=TCP SPT=52488 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0

对于与系统的每个新连接,依此类推。这将记录到您的系统日志配置为发送 kern.warning 消息的任何位置。