이 도구를 처음 사용하기 때문에 일부 테스트를 실행하기 위해 로컬 주소( 192.168.1.1
및 )를 사용하여 192.168.1.2
Ubuntu를 실행하는 2개의 VM이 있습니다 .iptables
.2
나는 머신이 해당 인터페이스에서 들어오는 모든 패킷을 삭제하기를 원합니다 .
위에서 다음과 같은 규칙을 만들었습니다 .2
.iptables -I INPUT 1 -i eth0 -j DROP
iptables -S
나에게 줘
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -j DROP
그리고iptables -L
Chain INPUT(policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
규칙이 작동하는지 확인하기 위해 먼저 시스템에 핑을 보냈고 .2
모든 패킷이 손실되었으며 이는 정상적인 것처럼 보였습니다. 그런 다음 시스템에서 .1
다음을 수행했습니다..1
echo -n "Hello world" > /dev/udp/192.168.1.2/3636
그리고 .2
기계 에서tcpdump -u -i eth0 port 3636
패킷이 캡처되었는데 이유를 이해할 수 없습니다. 내가 무엇을 놓치고 있나요?
iptables 규칙에 의해 차단된 모든 패킷을 캡처하는 방법이 있습니까?
답변1
네트워크 스택에는 여러 부분이 있습니다. 패킷이 도착하면 연속적인 네트워크 계층을 따라 이러한 부분을 단계별로 통과합니다.TCP 덤프이 경로를 따라 들어오는 패킷을 가장 먼저 보는 사람 중 하나이고 나가는 패킷을 보는 마지막 사람 중 하나입니다.
너는 이것을 볼 수 있다일반 네트워크의 Netfilter 및 패킷 흐름회로도를 살펴보겠습니다(확대하려면 클릭).
TCP 덤프기본 캡처는 AF_PACKET에서 발생하고 DROP 규칙은 filter/INPUT에 있습니다.
이는 심지어TCP 덤프패킷 캡처,iptables이후에도 여전히 삭제되지만 프로세스에서 이를 받을 기회가 생기기 전에는 삭제됩니다.
다음을 수행 iptables-save -c
하고 표시되는 모든 패킷을 검사하여 이를 확인할 수 있습니다.TCP 덤프[1:39]
규칙을 삭제하기 전에 카운터에 증분(추가된 대로)을 얻습니다.
이제 손실된 패킷을 캡처하세요.iptables당신이 사용할 수있는신경망 로그로깅 규칙은 정확히 동일한 필터를 사용하는 DROP 규칙 바로 앞에 있습니다(중복을 피하기 위해 사용자 연결을 사용할 수 있지만 이는 단지 예일 뿐입니다). DROP 규칙 앞에 이 규칙을 삽입할 수 있습니다.
iptables -I INPUT -i eth0 -j NFLOG --nflog-group 10
그리고 그것이 얻는 것을 포착하십시오 :
tcpdump -n -e -i nflog:10
그리고로그: 10이것은 의사 인터페이스입니다.TCP 덤프이러한 로그를 검색합니다(선택한 그룹 10에서. 가능한 모든 인터페이스는 를 사용하여 찾을 수 있습니다 tcpdump -D
). -e
MAC 주소와 같은 이더넷 정보는 없지만 이더넷이 아니라 IPv4이기 때문입니다 . 너는 다른 것을 선택할 수 있다--nflog-그룹여러 캡처를 쉽게 분리하려는 경우(그러나 다음을 사용할 수도 있습니다)TCP 덤프자체 필터).