当在我的主机中接收到IPsec流量时,我想测试我的防火墙配置,我也想知道如何处理它(首先删除它)。
出于测试的原因,我已经部署了两个容器(启用了ipv6 ),然后我创建了一个使用的ESP包(取自:https://github.com/secdev/scapy/blob/master/test/ipsec.uts#L2730):
p = IPv6()
p.dst="fe80::42:acff:fe10:ee04"
p /= TCP(sport=45012, dport=80)
p /= Raw('testdata')
p = IPv6(raw(p))
sa = SecurityAssociation(ESP, spi=0x222, crypt_algo='NULL', crypt_key=None, auth_algo='NULL', auth_key=None)
e = sa.encrypt(p)我想添加一个防火墙规则,它将丢弃这个包。
我目前的配置是:
# ip6tables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -d fe80::42:acff:fe10:ee04/64 -i eth0 -p esp -j DROP
-A INPUT -d fe80::/64 -i eth0 -p esp -j DROP
-A INPUT -m ipv6header --header esp --soft -j DROP我也尝试过,但失败了:
# ip6tables -A INPUT -m esp --espspi 546 -j DROP
ip6tables: Invalid argument. Run `dmesg' for more information.然而,我还没有找到一个方法来做到这一点。我的tcpdump显示收到了该数据包:
# tcpdump -i eth0 dst fe80::42:acff:fe10:ee04 -vvv
14:16:33.971545 IP6 (hlim 64, next-header ESP (50) payload length: 40) fe80::42:acff:fe10:ee03 > b4f9f118b0e7: ESP(spi=0x00000222,seq=0x1), length 40一些重要信息:
# uname -r
5.0.8-1.el7.elrepo.x86_64
# cat /etc/system-release
CentOS Linux release 7.5.1804 (Core)
# ip6tables -V
ip6tables v1.4.21发布于 2019-04-23 16:15:19
您不能使用tcpdump来确定防火墙是否工作,因为它在iptables处理数据包之前接收数据包。
相反,您可以编写记录感兴趣的通信量的iptable规则,或者可以检查规则命中计数器中的每条规则,以查看流量是否击中它们。
https://serverfault.com/questions/964242
复制相似问题