2012-06-01 2 views
0

표준 TCP 스택이 따르지 않는 비헤이비어를 생성하기 위해 비표준 TCP 소켓을 사용해야하는 보안 테스트를 실행 중입니다. 나는 원시 소켓을 사용하여 그러한 트래픽을 생성한다.TCP 트래픽 용 원시 소켓을 사용할 때 커널이 들어오는 패킷을받지 못하도록하십시오.

다른 끝점으로부터의 응답이 수신되면 TCP 연결은 커널에 알려지지 않고 RESET을 발행합니다. 이 문제를 방지하려면 정상적인 해결책은 나가는 모든 RESET (예 : iptables -A OUTPUT -p tcp -dport 50000 --tcp-flags RST RST -j DROP)을 삭제하는 iptables 규칙을 정의하는 것입니다.

그러나 내 특별한 경우 RESET은 테스트 중에 생성되는 유효한 세그먼트이기도합니다. 내가 필요한 것은 그 연결에서 모든 세그먼트를 걸러 낼 수있는 방법이다. 그래서 커널 TCP 스택은 관련이 없으며 원시 소켓의 모든 세그먼트에 접근 할 수있다. 아이디어를 얻으려면 어떻게해야합니까? iptables로 가능합니까? 호스트의 IP 주소를 사용하려고 리눅스의 TCP/IP 스택이 문제에 대한 호출 싸움을 미리 루이스

답변

0

에서

감사합니다.

대신 별도의 IP 주소를 사용하여 해당 장치를 tun 장치에 연결하고 raw 소켓 대신 tun 장치에서 원시 IP 패킷을 가져옵니다 (tun 장치를 인터페이스하는 일부 샘플 코드는 http://www.secdev.org/projects/tuntap_udp/에서 사용할 수 있습니다) . 그렇게하면 Linux TCP/IP 스택이 방해받지 않게됩니다 (라우팅 기능 제외).

+0

욕조 장치를 사용하는 문제는 트래픽이 상자 내부에있을 것이므로 외부 테스터 상자에서 테스트중인 시스템으로 테스트해야한다는 것입니다. 그런 이유로 테스터 상자에서 RESET을 포함하여 TCP 세그먼트를 생성 할 방법이 필요합니다. –

관련 문제