• Ubuntu 22.04 一次及其繁琐的 允许 Traceroute 探测漏洞修复之旅


    前言:允许 Traceroute 探测是绿盟漏洞扫描器报出来的一个漏洞,如下图:

    我的系统是ubuntu 22.04,但由于是用户提供的虚拟机,会有些定制的部分,具体定制了哪部分就不知道了,直接描述问题。

    ==========

    解决问题的心路历程:

    1、traceroute 地址有返回信息,很简单的问题

            查询了网上的很多内容,说是通过iptables 生成规则并且执行就可以,但是我的系统iptables不是以服务形态出现的,没有办法使用 services restart iptables 、 systemctl reload iptables 等命令进行重启,导致网上的命令使用后都无法生效;

    2、管理员在系统安装了ufw,并做了配置

            使用fuw status 可以看到只开了22/80 两个端口,其他的都是关闭状态,但是查遍全网都没有如果合同ufw禁止使用udp端口的问题,后来看到了一个帖子是这么说的:

            ufw展示iptable的配置方式,具体实现还是通过iptables进行执行,看来还是得通过iptables入手解决问题。

    3、查找iptables的配置文件,怎么也找不到,使用 iptables-save 命令可以看到保存了一大堆的策略,可是不知道这些策略出自哪里

            通过 whereis iptables  发现了一个目录 /usr/share/ufw的目录,下面还有个iptables的目录,里面有一些配置文件,我感觉是找对了地方,但修改了半天还是无效。

            我把 /usr/share/ufw/iptables 的目录改名,重启后发现系统没有问题,策略依旧,所以证明这个目录里的内容是可有可无的。

    4、我把iptables里的策略导出,然后清空,把策略手动调整完,再写入,还是不行!!!

            具体我写入了什么信息,我就不详述了,看到最后就会明白,因为过程都没有成功过,我也没分析,到底是语法错误,还是写的内容少了,还是策略有冲突,总之没有成功

    5、由于 iptables 不是服务,每次只能通过重启刷新策略,结果惊讶的发现,每次重启后系统就会重置一些规则,说明有些规则是在我所编辑的文件之前就加载的,我只有找到这个地方才行,有是不断地寻找,最终我找到了这个目录   /etc/nfw  一个如此朴实无华而又指向明确的目录,里面的文件都是系统启动是就加载的文件,于是我把 before.rules里的所有和icmp有关的信息 都 DROP掉,重启后发现策略正确加载了,但是 ping traceroute 还是能正常执行,我无语了

    6、虽然策略依然没有生效,但是我觉得路径是正确的,我已经找到了所有和 ufw 以及iptalbes 有关的配置和保存位置,那么剩下的应该就是策略书写不对了,我在网站上搜索了大量的文章,直到看到下面这篇

    Linux中 ICMP相关漏洞处理 --Traceroute探测和ICMP timestamp请求响应漏洞 iptables命令 - yy9knsg - 博客园

    里面提到,要解决 traceroute 的问题需要把0/3/11都禁掉才可以,但文章的后续只给了13/14的禁用,于是我将0/3/11/13/14都禁用了,依旧无效,因为我不能reload iptables,我将这些配置写进了/etc/ufw/before.rules的文件,一共10条命令:

    1. -I INPUT -p icmp --icmp-type 0 -j DROP
    2. -I OUTPUT -p icmp --icmp-type 0 -j DROP
    3. -I INPUT -p icmp --icmp-type 3 -j DROP
    4. -I OUTPUT -p icmp --icmp-type 3 -j DROP
    5. -I INPUT -p icmp --icmp-type 11 -j DROP
    6. -I OUTPUT -p icmp --icmp-type 11 -j DROP
    7. -I INPUT -p icmp --icmp-type 13 -j DROP
    8. -I OUTPUT -p icmp --icmp-type 13 -j DROP
    9. -I INPUT -p icmp --icmp-type 14 -j DROP
    10. -I OUTPUT -p icmp --icmp-type 14 -j DROP

    重启后,所有 ping traceroute 的响应都没有了,问题终于解决了!!

    ==========

    问题的简单回顾:

    1、网路上大部分策略都是- A 的,比如:

    1. # ok icmp codes for INPUT
    2. -A ufw-before-input -p icmp --icmp-type echo-request -j DROP
    3. -A ufw-before-input -p icmp --icmp-type echo-reply -j DROP
    4. -A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
    5. -A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
    6. -A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
    7. -A ufw-before-input -p icmp --icmp-type echo-request -j DROP
    1. # ok icmp code for FORWARDi
    2. -A ufw-before-forward -p icmp --icmp-type echo-request -j DROP
    3. -A ufw-before-forward -p icmp --icmp-type echo-reply -j DROP
    4. -A ufw-before-forward -p icmp --icmp-type destination-unreachable -j DROP
    5. -A ufw-before-forward -p icmp --icmp-type time-exceeded -j DROP
    6. -A ufw-before-forward -p icmp --icmp-type parameter-problem -j DROP
    7. -A ufw-before-forward -p icmp --icmp-type echo-request -j DROP

    事实证明 -A的策略,即使全封了也没有解决问题,要用 -I 的策略才可以

    2、不知道为什么 -A的策略要用icmp的名称,-I的策略只用到 0/3/11/13/14这样的序列号就可以,我之前在-A的策略中用序列号,好像会报错,所以也没有深究,这块也给我造成了一些困扰;

    3、问题终于解决了,耗时约20个小时,希望能够大家一些借鉴。

    关于iptables 的链表的理论,这里留一个链接,以后再仔细研究。

    Iptables详解 iptables概念 链/表_富士康质检员张全蛋的博客-CSDN博客

  • 相关阅读:
    黑盒测试用例设计方法案例与练习题
    大数据——Scala 模式匹配
    Web学习day04
    语雀服务器P0事故的一些启发
    关于蓝桥杯单片机组自学的经验分享
    <C++>vector容器在算法题中应用那么广泛,确定不来深入了解一下吗
    DDP、pytorch的分布式 torch.distributed.launch 训练说明
    【学习总结】激光雷达与相机外参标定:原理与代码
    中兴笔试篇
    设计模式学习笔记之类图、对象之间的关系及设计模式概要
  • 原文地址:https://blog.csdn.net/tacity/article/details/127992854