前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Linux中禁用ICMP和ICMPv6重定向

如何在Linux中禁用ICMP和ICMPv6重定向

原创
作者头像
欧巴云
修改2021-01-25 18:04:43
4.3K0
修改2021-01-25 18:04:43
举报
文章被收录于专栏:木子说木子说

文章声明:此文基于木子实操撰写 \

生产环境: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重定向。

IPv4下禁用ICMP重定向

有两种忽略ICMP请求的方法。以下部分仅涵盖IPv4网络。

使用防火墙规则

我们可以添加一条防火墙规则以阻止所有TCMP重定向。

首先获取活动区域列表:

代码语言:txt
复制
firewall-cmd --get-active-zones

public
  interfaces: eth0 eth1

因为我使用默认的public区域,所以我将防火墙规则应用至此区域:

代码语言:txt
复制
firewall-cmd --permanent --add-icmp-block=redirect --zone=public

重载规则

代码语言:txt
复制
firewall-cmd --reload

验证规则是否生效

代码语言:txt
复制
filewall-cmd --list-all
# 有如下输出,即生效成功
icmp-blocks: redirect

使用内核参数(sysctl)

如果您的Linux服务器启用了路由转发功能,则可以选择在所有接口或指定接口上禁用ICMP重定向。

在所有接口上禁用ICMP重定向:

代码语言:txt
复制
net.ipv4.conf.all.accept_redirects = 0

仅禁用eth0接口上的ICMP重定向:

代码语言:txt
复制
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 1

如果您的Linux服务器未充当路由器,则可以在所有接口上禁用ICMP重定向:

代码语言:txt
复制
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中添加以下配置:

代码语言:txt
复制
#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

生效配置:

代码语言:txt
复制
systemctl -system

如何为IPv6禁用ICMP重定向

我们可以使用类似的方法来忽略Linux服务器上的ICMPv6请求。

使用防火墙规则

要阻止所有接口上的ICMPv6重定向,请使用:

代码语言:txt
复制
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 --icmpv6-type 137 -j DROP

要禁用单个eth0接口的ICMPv6请求,请使用:

代码语言:txt
复制
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -i eth0 -p icmpv6 --icmpv6-type 137 -j DROP

重载配置:

代码语言:txt
复制
firewall-cmd --reload
firewall-cmd --direct --get-all-rules

使用内核参数(sysctl)

忽略ICMPv6重定向背后的逻辑与IPv4使用的逻辑不同。要使主机忽略ICMPv6重定向,我们必须将主机作为IPv6网关运行(启用IPv6转发):

代码语言:txt
复制
# 指定接口上启用转发,忽略ICMPv6重定向
net.ipv6.conf.<interface>.forwarding=1

# 所有接口上启用转发,忽略ICMPv6重定向
net.ipv6.conf.all.forwarding=1

要么,禁用每个接口的ICMPv6重定向:

代码语言:txt
复制
net.ipv6.conf.<inteface>.accept_redirects=0

您可以在新文件/etc/sysctl.d/97-disable-icmpv6.conf中添加以下配置参数:

代码语言:txt
复制
vi /etc/sysctl.d/97-disable-icmpv6.conf
net.ipv6.conf.eth0.accept_redirects=0
net.ipv6.conf.eth1.accept_redirects=0

生效配置:

代码语言:txt
复制
sysctl --system

结论

这里我们简单学习了如何禁用ICMPv4和ICMPv6重定向消息的不同方法。在生产环境中,这些是增强单台Linux服务器安全性的基本标准。对于IPv6,如果您不在环境中使用IPv6,也可以完全禁用它。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在最前面
  • IPv4下禁用ICMP重定向
    • 使用防火墙规则
      • 使用内核参数(sysctl)
      • 如何为IPv6禁用ICMP重定向
        • 使用防火墙规则
          • 使用内核参数(sysctl)
          • 结论
          相关产品与服务
          主机安全
          主机安全(Cloud Workload Protection,CWP)基于腾讯安全积累的海量威胁数据,利用机器学习为用户提供资产管理、木马文件查杀、黑客入侵防御、漏洞风险预警及安全基线等安全防护服务,帮助企业构建服务器安全防护体系。现支持用户非腾讯云服务器统一进行安全防护,轻松共享腾讯云端安全情报,让私有数据中心拥有云上同等级别的安全体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档