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

이제 세션의 흥미로운 부분을 이해하게 되었을 것이며 더 이상 극복할 수 없을 만큼 많은 양의 데이터가 되어서는 안 됩니다.

이 접근 방식에는 보안 문제가 있습니다. 애플리케이션의 관점에서 허용 가능한 연결을 결정해야 합니다. 지금까지 진행된 작업이 아닙니다. 측정 세션을 허용해도 올바른 방화벽 규칙이 보장되지 않음을 보여주는 두 가지 예는 다음과 같습니다.

  • 해커가 현재 기존 시스템에 침입하고 있다면 새 시스템에도 액세스할 수 있도록 허용하는 방화벽 규칙을 생성해야 합니다.
  • 하루 동안 측정하면 일주일에 한 번 앱을 사용하는 사람들을 놓칠 수 있습니다.

관련 정보