프로그램에 대한 연결 로그 수집하는 것입니다. netstat스크립트를

iptables를 사용하여 들어오는 연결을 기록하는 것 외에 ..

소스가없는 서비스에 확립 된 인바운드 연결을 기록하는 방법이 있습니까 (서비스가 이와 같은 내용을 자체적으로 기록하지 않는다고 가정)? 내가하고 싶은 것은 누가 서비스를 가장 많이 사용하는지, 세계에서 주요 사용자 기반이 어디인지 등을 알릴 수 있도록 누가 연결하고 있는지에 대한 정보를 수집하는 것입니다.

netstat스크립트를 사용하여 cron 스크립트에 연결할 수 있다는 것을 알고 있지만 스크립트는 1 분 정도만 자주 실행될 수 있기 때문에 정확하지 않을 수 있습니다.

여기 내가 지금 생각하고있는 것이있다 :

  • 지속적으로 폴링하는 프로그램을 작성 netstat하여 이전 폴링에 나타나지 않은 확립 된 연결을 찾으십시오. 이 아이디어는 새로운 연결이 없을 수 있기 때문에 CPU 시간을 낭비하는 것처럼 보입니다.
  • 서비스가 실행되는 모든 포트에서 인바운드 연결을 허용하는 랩퍼 프로그램을 작성하십시오. 그러나 해당 연결을 실제 서비스로 전달하는 방법을 모르겠습니다.

편집 : 나는 확실하지 않지만이 질문이 stackoverflow에 더 좋을 수도 있다고 생각했습니다. 이곳이 잘못된 경우 죄송합니다.



답변

따라서 iptables로 새로운 연결을 기록 할 수 있습니다

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

이것은 새로운 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 창 = 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 창 = 14600 RES = 0x00 SYN URGP = 0

시스템에 새로 연결될 때마다 syslog가 kern.warning 메시지를 보내도록 구성된 모든 곳에 로그가 기록됩니다.


답변

감사를 사용하고 하루가 끝날 때 해당 로그 라인을 기반으로 일부 통계를 계산할 수 있습니다. 아니면 당신은 또한 snmp 솔루션에 갈 수 있지만 아마도 당신은 자신의 mib를 작성했을 것입니다