logging连接到程序

除了使用iptableslogging传入连接

有没有办法将build立的入站连接logging到你没有源的服务上(假设服务本身不logging这些东西)? 我想要做的是收集一些信息,这些信息是基于谁连接的,以便能够告诉服务使用最多的时间,世界上主要用户的位置等等。

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

这就是我现在所想的:

  • 写一个不断轮询netstat的程序,寻找没有出现在以前的轮询中的已build立的连接。 这个想法看起来像是一个cpu时间的浪费,因为可能没有新的联系。
  • 编写一个包装程序来接受服务运行的任何端口上的入站连接,但是我不知道如何将这个连接传递给真正的服务。

编辑:刚刚想到,这个问题可能是更好的stackoverflow,虽然我不确定。 对不起,如果这是错误的地方。

您可以使用iptableslogin新的连接

 iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection " 

这将添加一个像这样的消息一个新的SSH连接

Oct 6 10:58:23 centos kernel:New Connection 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连接

Oct 6 11:03:56 centos kernel:New Connection 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

等等每一个新的连接到你的系统。 将被logging到您的系统日志被configuration为发送kern.warning消息的任何地方。

你可以使用auditd,并在一天结束时计算一些基于这些loglines的统计。 或者你也可以去一个snmp的解决scheme,但可能你已经写了自己的mib

如何tcpdump或wireshark?