![iptables 규칙은 원시 소켓 패킷을 제어합니까?](https://rvso.com/image/776299/iptables%20%EA%B7%9C%EC%B9%99%EC%9D%80%20%EC%9B%90%EC%8B%9C%20%EC%86%8C%EC%BC%93%20%ED%8C%A8%ED%82%B7%EC%9D%84%20%EC%A0%9C%EC%96%B4%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내가 사용하는 프로그램은 원시 패킷 모드를 사용하여 일부 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 데이터를 보고 있습니다. 이는 작동하지 않았다는 것을 의미합니다.
결국 클라우드 공급자의 방화벽 기능을 사용하여 다른 계층에서 문제를 해결했습니다.