'iptables'에 의해 패킷이 유효하지 않은 이유를 이해하는 방법은 무엇입니까?


11

iptablesINVALID ( --state INVALID) 인 패킷을 기록하고 삭제하도록 규칙을 설정했습니다 . 로그 읽기 패킷이 유효하지 않은 이유를 어떻게 알 수 있습니까? 예를 들면 다음과 같습니다.

Nov 29 22:59:13 htpc-router kernel: [6550193.790402] ::IPT::DROP:: IN=ppp0 OUT= MAC= SRC=31.13.72.7 DST=136.169.151.82 LEN=40 TOS=0x00 PREC=0x00 TTL=242 ID=5104 DF PROTO=TCP SPT=80 DPT=61597 WINDOW=0 RES=0x00 ACK RST URGP=0

답변:


25

상태 저장 패킷 검사를 사용할 때 패킷은 다양한 상태에있을 수 있습니다.

  • 새로운 : 패킷은 SYN가 비트가 공지의 흐름이나 소켓과 TCP 플래그의 일부가 아닙니다.
  • 설정 됨 : 패킷이 추적하는 플로우 또는 소켓과 일치하며 CONNTRACKTCP 플래그가 있습니다. 초기 TCP 핸드 셰이크가 완료된 후 패킷이 상태 설정되도록하려면 SYN 비트가 꺼져 있어야합니다.
  • 관련 : 패킷이 알려진 플로우 또는 소켓과 일치하지 않지만 패킷을 선언하는 기존 소켓이 있으므로 패킷이 예상됩니다 (이 예제는 포트 21에 기존 FTP 세션이있는 경우 포트 20의 데이터 또는 UDP 데이터입니다) TCP 포트 5060의 기존 SIP 연결의 경우). 연관된 ALG가 필요합니다.
  • 유효 하지 않음 : 이전의 상태 중 어느 것도 적용되지 않으면 패킷이 상태 INVALID입니다. 이것은 다양한 유형의 스텔스 네트워크 프로브로 인해 발생하거나 CONNTRACK항목 이 부족함을 의미 할 수 있습니다 (로그에도 표시되어 있음). 또는 단순히 전적으로 양성일 수 있습니다.

귀하의 경우, 패킷은 당신은 TCP 플래그 것을 쇼를 인용 것을 ACK하고 RST, 그리고 그 소스 포트입니다 80. 그 의미는 웹 서버 31.13.72.7(Facebook이 됨)가 사용자에게 재설정 패킷을 보냈다는 것입니다. 앞에 오는 패킷을 보지 않고 이유를 말하는 것은 전적으로 불가능합니다. 그러나 컴퓨터가 잘못되었다고 생각하는 것과 같은 이유로 재설정을 보내는 것 같습니다.


따라서 커널 (또는 iptables)에 유효하지 않은 이유가있는 패킷에 일종의 "서명"을 추가하도록 요청할 방법이 없습니까?
mbaitoff

2
정의에 따라 유효하지 않음은 알려진 상태와 일치하지 않음을 의미합니다. 다시 말해, 커널은 "이 패킷을받은 이유를 모르겠습니다"라고 말합니다.
바하마

특정 INVALID 패킷을 디버깅하기 위해 덤프에서 Wireshark의 패킷을 볼 수 있습니다 ... SACK 필드가있는 패킷을 보았습니다 (실제로 정상적인 시퀀스 번호는 방화벽에 의해 변경되고 SACK 옵션의 패킷은 변경되지 않으므로 SACK이 발생합니다) 방화벽의 존재에 의해 부서졌다 값 인 무효가) ... 무효로 떨어졌다
게르트 반 베르그 덴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.