tcpdump가 iptables를 우회합니까?


48

실수로 오픈 리졸버 DNS 서버를 설정했는데,이 서버는 곧 러시아에서 러시아로 발생하는 많은 DDoS 공격에 사용되었습니다. 따라서 신뢰할 수있는 IP를 제외한 모든 사람을 위해 두 DNS 서버에서 포트 53을 완전히 차단했습니다. 작동하지만 더 이상 연결할 수 없지만 이상한 것은 eth1 (공용 인터넷이있는 서버의 인터페이스)에서 tcpdump를 실행할 때 공격자에서 포트 53으로 들어오는 패킷이 많이 있다는 것입니다.

iptables가 삭제하더라도 tcpdump가 이러한 패킷을 표시하는 것이 정상입니까? 아니면 iptables를 잘못 구성 했습니까?

반면에 나는 이전에했던 서버에서 나가는 패킷을 보지 못하므로 방화벽이 작동한다고 가정합니다. 커널이 패킷을 완전히 삭제하지 않는다는 것이 놀랍습니다. 아니면 tcpdumpiptables에 도착하기 전에 패킷을 보는 방식으로 커널에 연결되어 있습니까?

답변:


61

좋은 질문입니다.

실제로 tcpdumpIN 도중에 와이어 (및 NIC의 경우) 다음에 발견 된 첫 번째 소프트웨어 이고 OUT 에있는 마지막 소프트웨어 입니다.

Wire -> NIC -> tcpdump -> netfilter/iptables

iptables -> tcpdump -> NIC -> Wire

따라서 모든 패킷이 인터페이스에 도달하고 모든 패킷이 인터페이스를 떠나는 것을 볼 수 있습니다. tcpdump에서 볼 수 있듯이 포트 53에 대한 패킷은 응답을 얻지 못하므로 iptables 규칙이 올바르게 구성되었는지 확인했습니다.

편집하다

아마도 몇 가지 세부 사항을 추가해야 할 것입니다. tcpdump패킷 소켓 을 생성하는 라이브러리 인 libpcap을 기반으로 합니다 . 네트워크 스택에서 규칙적인 패킷이 수신되면, 커널은 먼저 새로 도착한 패킷에 관심이있는 패킷 소켓이 있는지 확인하고 패킷 소켓이 있으면 해당 패킷 소켓으로 패킷을 전달합니다. ETH_P_ALL 옵션을 선택하면 모든 프로토콜이 패킷 소켓을 통과합니다.

libpcap의의 옵션을 가진 하나의 패킷 소켓이 활성화 구현은, 자신의 사용을 위해 사본을 유지하고, 먼저 건네 포함이 일반적인 방법으로 커널에 의해 처리되는 네트워크 스택, 위에 패킷 다시 복제 넷 필터 커널을 iptables의 공백 대응 . 나가는 길에 같은 순서로 ( , 첫 번째 넷 필터가 패킷 소켓을 통과 한 후 마지막으로 통과) 같은 방식으로 진행됩니다.

이것은 해킹되기 쉬운가? 하지만 물론. 방화벽이 손에 닿기 전에 libpcap 을 사용하여 루트킷으로 향하는 통신을 가로채는 개념 증명 루트킷이 있습니다. 그러나 간단한 구글 쿼리 가 libpcap 에서도 트래픽을 숨기고있는 작업 코드를 발굴한다는 사실과 비교할 때조차도이 말도 안됩니다 . 그러나 대부분의 전문가들은 네트워크 패킷 필터를 디버깅 할 때 장점이 단점보다 훨씬 크다고 생각합니다.


허용 된 패킷과 삭제 된 패킷을 볼 수 있도록 표시하는 방법이 있습니까?
Petr

2
당신이 iptables에 떨어 패킷을 기록 할 수 @Petr, thegeekstuff.com/2012/08/iptables-log-packets
MariusMatutiae
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.