Featured image of post 服务器禁止Ping

服务器禁止Ping

查看SSH登陆失败记录,发现有持续不断的撞库,仅开启必要的端口,同时把Ping功能关闭缓解一下

关闭 ping

是否允许 ping 由两个因素决定,内核参数和防火墙,只有两个因素都允许的情况下,才能允许被 ping。

内核参数关闭 ping 功能

临时设置 PING 操作

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

/proc 目录是一个虚拟的文件系统,它提供了一种访问内核数据结构的方式。/proc/sys/net/ipv4/icmp_echo_ignore_all 文件特别用于控制内核是否忽略所有的 ICMP echo 请求。当这个文件的值设置为 1 时,内核将不会处理任何进入的 ICMP echo 请求,即不会对 ping 请求做出响应。 icmp_echo_ignore_all 不是真实文件,所以不能通过 vim 来编辑修改。

永久设置 PING 操作

# 0表示允许,1表示禁止
echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
# 使配置生效
sysctl -p

防火墙关闭 ping

这里使用的是 Linux 平台常用的 iptable 防火墙

关闭 ping

# 禁止 ping 功能
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
  • -A INPUT: 向 INPUT 链添加一条规则。INPUT 链是 iptables 中用于处理进入本机的数据包的地方。

  • -p icmp: 指定规则适用于 ICMP 协议。ICMP(Internet Control Message Protocol)是用于发送控制消息的网络层协议,例如,当你使用 ping 命令时,就是发送 ICMP 请求。

  • --icmp-type 8: 指定规则匹配的 ICMP 类型。ICMP 类型 8 对应于 echo request,也就是我们通常所说的 ping 请求。这意味着这条规则将会匹配所有进入的 ping 请求。

  • -s 0/0: 指定源地址为任何地址。0/0 是一个 CIDR 表示法,代表所有的 IPv4 地址。这里使用 0/0 表示这条规则不限制源 IP 地址,适用于所有来源的 ICMP 请求。

  • -j DROP: 指定匹配到的数据包的处理动作为 DROPDROP 动作意味着所有匹配到该规则的数据包都将被丢弃,不会被本机响应或进一步处理。

开启 ping

如果想要允许 ping 设置

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  • -A INPUT: 这条命令添加一条规则到 INPUT 链,该链用于处理进入本机的数据包。

  • -p icmp: 指定规则适用于 ICMP 协议。

  • --icmp-type echo-request: 指定规则匹配的 ICMP 类型为 echo-request,这是 ICMP 协议中用于 ping 操作的请求类型。

  • -j ACCEPT: 指定匹配到的数据包的处理动作为 ACCEPT,即接受这些数据包,允许它们通过防火墙。 第一条命令配置防火墙允许所有进入的 ICMP echo-request 类型的数据包通过,这通常意味着允许外部设备对本机发起 ping 请求。

  • -A OUTPUT: 这条命令添加一条规则到 OUTPUT 链,该链用于处理从本机出去的数据包。

  • -p icmp: 指定规则适用于 ICMP 协议。

  • --icmp-type echo-reply: 指定规则匹配的 ICMP 类型为 echo-reply,这是 ICMP 协议中用于 ping 操作的响应类型,即当本机收到 echo-request 后,发出的响应。

  • -j ACCEPT: 指定匹配到的数据包的处理动作为 ACCEPT,即接受这些数据包,允许它们通过防火墙。

第二条命令配置防火墙允许所有出去的 ICMP echo-reply 类型的数据包通过,这通常意味着允许本机对外部 ping 请求做出响应。

将这两条规则结合起来,它们确保了本机可以正常地发送和接收 ping 请求及其响应,这对于网络故障排查和基本的网络连通性测试是非常重要的。如果只有 echo-request 规则而没有 echo-reply 规则,那么其他设备可能无法收到本机的 ping 响应;反之亦然,如果没有 echo-request 规则,本机将无法接收到其他设备的 ping 请求。

Licensed under CC BY-NC-SA 4.0