iptables 규칙은 원시 소켓 패킷을 제어합니까?

iptables 규칙은 원시 소켓 패킷을 제어합니까?

내가 사용하는 프로그램은 원시 패킷 모드를 사용하여 일부 TCP 연결을 생성합니다. 제가 이 두 명령을 실행했다고 가정해 보겠습니다.

/sbin/iptables -A INPUT -s 8.0.0.0/8 -j DROP
/sbin/iptables -A OUTPUT -d 8.0.0.0/8 -j DROP

해당 네트워크로 패킷이 전송되지 않는다고 가정해도 안전합니까?

답변1

불행히도 작동하지 않는 것 같습니다. 제가 확인한 방법은 다음과 같습니다. 1.1.1.1과 2.2.2.2라는 두 개의 서버를 사용해 보겠습니다. 1.1.1.1은 패킷을 보내고 2.2.2.2는 수신합니다.

먼저 2.2.2.2에서 스니핑을 설정해 보겠습니다.

➜  ~ sudo tcpdump -vv 'src 1.1.1.1'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

이제 포트 995에서 해당 IP로 패킷을 보내겠습니다.

$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1

예상대로 2.2.2.2의 1.1.1.1에서 트래픽이 발생하고 있습니다.

11:18:49.330632 IP (tos 0x0, ttl 250, id 54321, offset 0, flags [none], proto TCP (6), length 40)
    1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [S], cksum 0x5e8a (correct), seq 4248475135, win 65535, length 0
11:18:49.331688 IP (tos 0x0, ttl 59, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [R], cksum 0x5e87 (correct), seq 4248475136, win 0, length 0

이제 1.1.1.1에서 이를 차단하고 조사를 반복해 보겠습니다.

$ /sbin/iptables -A OUTPUT -d 2.2.2.2  -j DROP
$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1

불행하게도 우리는 더 많은 tcpdump 데이터를 보고 있습니다. 이는 작동하지 않았다는 것을 의미합니다.

결국 클라우드 공급자의 방화벽 기능을 사용하여 다른 계층에서 문제를 해결했습니다.

관련 정보