특정 패킷을 차단하기 위한 iptables 규칙

특정 패킷을 차단하기 위한 iptables 규칙

나는 다음 iptables 규칙을 사용하고 있습니다.

iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH,ACK -m length --length 52 -m state --state ESTABLISHED -j DROP

내 서버에서 원치 않는 패킷을 차단하는 역할을 하지만, 차단해서는 안 되는 패킷도 차단합니다.

Wireshark에서 캡처한 패킷은 다음과 같습니다.

unwanted packet:source=192.168.0.100    destination=192.168.0.111   TCP lenght=66   [TCP Retransmission] 62401→38111 [PSH, ACK] Seq=15 Ack=19 Win=65536 Len=12

needed packet:source=192.168.0.100  destination=192.168.0.111   TCP lenght=66   [TCP Retransmission] 62433→38111 [PSH, ACK] Seq=344 Ack=37855 Win=62825 Len=12

내 질문은 필요한 패킷을 허용하고 원하지 않는 패킷을 차단하도록 규칙을 수정하는 방법입니다.

답변1

방화벽 계층에서는 이 작업을 수행할 수 없습니다(물론 가능합니다. 하지만 예상한 바나 원하는 바를 달성할 수는 없습니다). 두 번째 패킷(원하는)은 첫 번째 패킷(원하지 않는)과 동일한 TCP 스트림의 일부이며 TCP는 안정적인 전달 메커니즘입니다. 이는 OS가 스트림 중간에 있는 패킷이 누락되었는지 여부를 알고 있음을 의미합니다(각 패킷 헤더의 시퀀스 번호를 통해, 예를 들어 참조).http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure자세한 내용은).

스트림 중간에 있는 패킷을 필터링하면 커널은 단순히 다른 쪽 끝에 패킷이 없다는 사실을 계속 알리고 다른 쪽 쪽에서는 패킷을 계속 재전송합니다(이미 보고 있는 동작, [TCP Retransmission]위의 표시에 유의하세요). 이러한 재전송을 계속 차단하면 스트림이 비동기화되고 연결이 끊어지며 스트림의 어떤 것도 처리되지 않습니다.

이 작업은 애플리케이션 계층에서 수행해야 합니다.

편집하다우리 둘 사이의 의견 교환(그 중 대부분은 삭제됨)을 통해 질문에 필요한 모든 세부 사항이 포함되어 있지 않을 수 있음이 분명해졌습니다. 내 답변을 수락하거나 전체 질문을 삭제하는 등 이 질문을 닫고 현재 정확히 무슨 일이 일어나고 있는지, 어떻게 발생하는지, 달성하려는 목표를 상당히 자세하게 설명하는 새 질문을 작성하는 것이 좋습니다.

지금 내가 말할 수 있는 건 어느 정도 자신있게 말할 수 있는 건 이것뿐이다.iptablesTCP 스트림의 중간에서 단일 패킷을 잘라내는 데 사용할 수 없으며 해당 스트림의 나머지 부분이 수신 응용 프로그램에서 올바르게 처리되기를 기대할 수 없습니다..

관련 정보