我正在主机上用 iptables 设置防火墙。我想禁用时间戳 ICMP 请求,但它是有线的,我只允许类型 8(回显请求)进入主机,但即使如此,我仍然可以获取主机的时间戳
64 bytes from xxxxxxxxx: icmp_seq=2 ttl=61 time=2.56 ms
TS: 36654775 absolute
-6423
3
1
-4
0
4
0
-2
Unrecorded hops: 1
我尝试仅允许类型 8,但是不起作用,看来我能做的就是让所有 ICMP 请求通过,或者拒绝所有请求,以下是我正在使用的配置脚本。
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCEPT
# allow the icmp
iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT
# services
iptables -A INPUT -p TCP --dport 22 -j ACCEPT # SSH
iptables -A INPUT -p UDP --sport 53 -j ACCEPT # DNS
iptables -A INPUT -p TCP --sport 53 -j ACCEPT # DNS
iptables -A INPUT -p TCP --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p TCP --dport 443 -j ACCEPT # HTTPS
# allow the replay from outgoing established connection
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
Linux 内核版本为 2.6.18,iptables 版本为 v1.3.5。这有什么问题?如何阻止时间戳请求?
答案1
我尝试了 的时间戳选项ping
,看起来 ICMP 类型仍为 8,并且时间戳请求是 IP 选项的一部分。这可能是您没有过滤请求的原因,因为它们看起来就像 的常规回显请求iptables
。
有一个名为 ipv4options 的匹配扩展,您可能想要探索它来阻止时间戳。