文章声明:此文基于木子实操撰写 \
生产环境:CentOS Linux release 7.9.2009 (Core) \
问题关键字:禁用ICMP,禁用ICMPv6
正如前文《你还在看水文吗?速度取关吧!》所述,为了能够更好的传播Linux基础知识,同时也为巩固、沉淀个人知识体系,在经过很长时间的思考后,木子决定率先开启一个专题系列《Linux基础》,其系列以Linux基础出发,如:系统安装、磁盘管理、安全配置、路由配置、防火墙配置、性能监控、系统管理、高级命令技巧、工具链等等,它基于所有Linux发行版为基础,不仅仅局限于:CentOS、Rocky Linux、Debian、Ubuntu、Arch Linux,欢迎有兴趣的同学参与其中。此系列教程,首发于微信公众号【欧巴云】,并同步发送至博客:https://www.oubayun.com。
今天我们将学习如何在Linux服务器上禁用ICMP和ICMPv6重定向。ICMP重定向功能在路由器上使用,因此,如果您的Linux服务器未充当路由器,那么作为一般的安全实践,建议禁用重定向。即使您的Linux服务器充当并打开了路由转发功能,您也可以使用内核参数(sysctl)有选择的禁用某些接口上的ICMP重定向。
有两种忽略ICMP请求的方法。以下部分仅涵盖IPv4网络。
我们可以添加一条防火墙规则以阻止所有TCMP重定向。
首先获取活动区域列表:
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
因为我使用默认的public
区域,所以我将防火墙规则应用至此区域:
firewall-cmd --permanent --add-icmp-block=redirect --zone=public
重载规则
firewall-cmd --reload
验证规则是否生效
filewall-cmd --list-all
# 有如下输出,即生效成功
icmp-blocks: redirect
如果您的Linux服务器启用了路由转发功能,则可以选择在所有接口或指定接口上禁用ICMP重定向。
在所有接口上禁用ICMP重定向:
net.ipv4.conf.all.accept_redirects = 0
仅禁用eth0接口上的ICMP重定向:
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 1
如果您的Linux服务器未充当路由器,则可以在所有接口上禁用ICMP重定向:
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
您可以在/etc/sysctl.d/98-disable-icmpv4.conf中添加以下配置:
#cat /etc/sysctl.d/98-disable-icmpv4.conf
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
生效配置:
systemctl -system
我们可以使用类似的方法来忽略Linux服务器上的ICMPv6请求。
要阻止所有接口上的ICMPv6重定向,请使用:
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 --icmpv6-type 137 -j DROP
要禁用单个eth0接口的ICMPv6请求,请使用:
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -i eth0 -p icmpv6 --icmpv6-type 137 -j DROP
重载配置:
firewall-cmd --reload
firewall-cmd --direct --get-all-rules
忽略ICMPv6重定向背后的逻辑与IPv4使用的逻辑不同。要使主机忽略ICMPv6重定向,我们必须将主机作为IPv6网关运行(启用IPv6转发):
# 指定接口上启用转发,忽略ICMPv6重定向
net.ipv6.conf.<interface>.forwarding=1
# 所有接口上启用转发,忽略ICMPv6重定向
net.ipv6.conf.all.forwarding=1
要么,禁用每个接口的ICMPv6重定向:
net.ipv6.conf.<inteface>.accept_redirects=0
您可以在新文件/etc/sysctl.d/97-disable-icmpv6.conf
中添加以下配置参数:
vi /etc/sysctl.d/97-disable-icmpv6.conf
net.ipv6.conf.eth0.accept_redirects=0
net.ipv6.conf.eth1.accept_redirects=0
生效配置:
sysctl --system
这里我们简单学习了如何禁用ICMPv4和ICMPv6重定向消息的不同方法。在生产环境中,这些是增强单台Linux服务器安全性的基本标准。对于IPv6,如果您不在环境中使用IPv6,也可以完全禁用它。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。