为什么tcpdump会捕获被iptables拦截的数据包?如何过滤掉这些数据包?

为什么tcpdump会捕获被iptables拦截的数据包?如何过滤掉这些数据包?

我正在使用此命令来调试我的 SIP 流量tcpdump -i eth0 -nt port 5060 -v

输出如下:

IP (tos 0x0, ttl 113, id 6082, offset 0, flags [none], proto UDP (17), length 504)
    128.90.192.88.56177 > 172.31.78.225.5060: SIP, length: 476
        REGISTER sip:54.84.215.2:5060 SIP/2.0
        To: <sip:[email protected]>
        From: <sip:[email protected]>;tag=e5f4a9461830e4f7a15059
        Via: SIP/2.0/UDP 10.2.38.49:56177;branch=A3DG5FK-d91443-95107561815059-1--d91443-;rport
        Call-ID: e5f4a946183180e4f7a15059
        CSeq: 1 REGISTER
        Contact: <sip:[email protected]:56177>
        Expires: 3600
        Max-Forwards: 70
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: Samsung OfficeServ
        Content-Length: 0

IP (tos 0x0, ttl 105, id 28245, offset 0, flags [none], proto UDP (17), length 500)
    128.90.59.90.49529 > 172.31.78.225.5060: SIP, length: 472
        REGISTER sip:54.84.215.2:5060 SIP/2.0
        To: <sip:[email protected]>
        From: <sip:[email protected]>;tag=e5f4a933383e4f7a13062
        Via: SIP/2.0/UDP 10.4.0.14:49529;branch=A3DG5FK-d91443-17576214913062-1--d91443-;rport
        Call-ID: e5f4a93338364e4f7a13062
        CSeq: 1 REGISTER
        Contact: <sip:[email protected]:49529>
        Expires: 3600
        Max-Forwards: 70
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: Samsung OfficeServ
        Content-Length: 0

... etc...

因为我的服务器已经运行了很长时间,所以很多机器人都发现了它,并且烦人地发送无效请求,如上所示。

我已经阻止了 IP 128.90.192.88128.90.59.90并且 tcpdump 仍在捕获该流量。

root@ip-172-31-78-225:~# iptables -nL | grep 128.90.192.88
DROP       all  --  128.90.192.88        0.0.0.0/0

我怎样才能过滤掉这些数据包?我的防火墙 (iptables) 阻止了 1000 多个 IP,并且我不想使用那么多 IP 构建过滤器。我知道我可以创建一个白名单,但我只是好奇是否有办法过滤掉这些数据包并了解它们为何被捕获。此外,我想继续使用这种方法来阻止发送无效请求的机器人。如果我只能分析未被阻止的数据包来决定是否阻止该 IP,那就太好了。

答案1

抱歉,这个问题可能与其他问题重复:https://stackoverflow.com/a/57073203/637142

无论如何,解决方案是:


#NFLOG traffic going to port 5060 (both tcp and udp)
iptables -A INPUT -p udp --dport 5060 -j NFLOG
iptables -A INPUT -p tcp --dport 5060 -j NFLOG

# now capure any trific from NFLOG
tcpdump -i nflog -nUlNt -v

相关内容