프로그램에 대한 연결 로그


9

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

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

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

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

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

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


iptables 사용을 제외하는 이유는 무엇입니까? 애플리케이션이 수신 대기중인 포트는 무엇입니까?
user9517

주로 로깅을 더 많이 제어하고 싶기 때문입니다. 이상적으로는 새로운 연결이 감지 될 때마다 원하는 로깅을 처리 할 수 ​​있기를 원합니다. 모든 포트. 내가 사용하는 유일한 특정 응용 프로그램은 없기 때문에 사용자 이름이나 그와 같은 것을 깊이 기록하는 방법을 묻지 않습니다.
Zac

iptables를 사용하여 새 수신 연결을 모든 포트에 기록 할 수 있습니다. 나는 두 상자에서 그렇게합니다. 그래서 나는 Iain의 훌륭한 질문을 반복합니다 : 왜 iptables의 사용을 배제합니까?
MadHatter

응용 프로그램 전에 프록시를 배치 할 수 있습니까? 요청을 받고, 기록하고, 전달하는 매우 간단한 것만 필요합니다. 들어오는 신호를 프록시로 전달한 다음 원래 포트의 응용 프로그램으로 릴레이 할 수 있습니다.
John Gardeniers

답변:


4

따라서 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 메시지를 보내도록 구성된 모든 곳에 로그가 기록됩니다.


더 둘러보고 나면이 방법이 내 최선의 방법 인 것 같습니다. 이것을 rsyslog와 결합하여 별도의 파일에 기록합니다. 유익한 답변 Iain에 대단히 감사합니다!
Zac

0

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


0

tcpdump 또는 wireshark는 어떻습니까?


답변을 조금 더 확장하십시오. 아마도 사용자에게 tcpdump 및 wireshark가 문제 해결 노력에 도움이되는 방법을 제안 할 수 있습니다.
Magellan

전체 패킷을 기록 할 수있는 tcpdump 매뉴얼 . tcpdump로 패킷을 캡처 한 다음 wireshark에서 분석 할 수도 있습니다. 또한 tcpdump -i <interface> -s 65535 -w <some-file>충분한 패킷을 캡처했다고 생각되면 ^ C로 캡처를 종료해야합니다.
Guntis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.