AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 564621
Accepted
jayhendren
jayhendren
Asked: 2020-01-29 13:06:09 +0800 CST2020-01-29 13:06:09 +0800 CST 2020-01-29 13:06:09 +0800 CST

如何在不使用环回接口的情况下对主机进行端口扫描?

  • 772

我正在尝试审核主机上的防火墙规则。这通常使用 nmap 或类似的扫描工具非常简单。问题是我只能在主机本身上运行审计。通常,如果您使用 nmap 对当前主机运行端口扫描,nmap 将使用环回接口。这是一个问题,因为我关心的主机上的防火墙允许环回接口上的所有流量:

[my-host ~][I]% sudo iptables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
[...snip...]
2364K  123M ACCEPT     all  --  lo     any     anywhere             anywhere
[...snip...]

因此,当我扫描主机时,防火墙似乎允许所有端口:

[my-host ~][I]% sudo nmap -sA my-host 

Starting Nmap 6.40 ( http://nmap.org ) at 2020-01-28 13:53 MST
Nmap scan report for my-host (172.20.48.30)
Host is up (0.000015s latency). 
rDNS record for 172.20.48.30: my-host
All 1000 scanned ports on my-host (172.20.48.30) are unfiltered

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

所以我尝试指定要使用的接口,希望强制扫描通过主机的正常网络接口路由流量。但是 nmap 找不到任何开放的端口:

[my-host ~][I]% sudo nmap -sA my-host -e ens192 -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2020-01-28 13:54 MST
Nmap done: 1 IP address (0 hosts up) scanned in 0.44 seconds

但是,我知道,在其防火墙中,主机至少允许来自同一网络上任何其他主机的端口 22。当我从同一网络上的另一台主机扫描它时,我看到的是:

[my-other-host ~][I]% sudo nmap -sA my-host -Pn

Starting Nmap 6.40 ( http://nmap.org ) at 2020-01-28 13:55 MST
Nmap scan report for my-host (172.20.48.30)
Host is up (0.00021s latency).
rDNS record for 172.20.48.30: my-host
Not shown: 999 filtered ports
PORT   STATE      SERVICE 
22/tcp unfiltered ssh
MAC Address: 00:50:56:A0:34:4D (VMware)

Nmap done: 1 IP address (1 host up) scanned in 4.51 seconds

那么为什么我从自身扫描 my-host 时看不到这些结果呢?这是由于路由器配置(不幸的是我无权访问),还是我在某处犯了错误?

networking firewall
  • 1 1 个回答
  • 751 Views

1 个回答

  • Voted
  1. Best Answer
    jayhendren
    2020-02-20T10:16:53+08:002020-02-20T10:16:53+08:00

    问题是 Linux 路由表总是通过环回接口在本地路由流量,如果本地系统有一个网络接口侦听目标 IP 地址,则不会将其放在物理网络上。您可以看到本地路由表ip route show table local- 所有匹配本地路由表中规则的数据包都被环回。此外,本地路由表是自动维护的(在启动/关闭接口时添加/删除规则)并且不能手动更改。因此,即使明确指定要绑定的接口,nmap 扫描数据包也将始终在环回接口上结束(并且实际上错过了防火墙)。

    解决方案是创建一个命名空间虚拟网络来运行扫描。命名空间虚拟网络有自己的虚拟网络接口和路由表,与其他命名空间网络(包括根网络命名空间)分开。这意味着跨命名空间发送的数据包似乎来自外部网络,不被视为本地数据包。

    我按照此处的指南创建了一个命名空间网络。最后,创建网络的脚本如下所示:

    test_source_ip='5.5.5.5'
    test_dest_ip='5.5.5.6'
    ip netns add testns
    ip netns exec testns ip link set dev lo up
    ip link add veth0 type veth peer name veth1
    ip link set veth1 netns testns
    ip netns exec testns ifconfig veth1 ${test_source_ip}/24 up
    ifconfig veth0 ${test_dest_ip}/24 up
    

    testns是虚拟命名空间网络的名称;你可以随心所欲地调用你的。

    源 IP 和目标 IP 可以是任意 IP 地址,这意味着您可以在运行扫描时欺骗任意源 IP 地址,这非常有用。但是请注意,不要掩盖系统可能想要与之通信的任何真实 IP 地址。

    最后,运行 nmap 扫描是确保它从命名空间网络中运行的问题。您还需要扫描根命名空间中配对的虚拟以太网适配器的 IP 地址(不是系统的实际 IP 地址):

    ip netns exec testns nmap -sA -n ${test_dest_ip}
    

    您应该看到您的扫描运行,就好像它实际上来自 5.5.5.5。

    [vagrant@2d33f851-838c-4 ~]$ sudo ip netns exec testns nmap -sA -n 5.5.5.6 
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2020-02-05 17:41 MST
    Nmap scan report for 5.5.5.6
    Host is up (0.000066s latency).
    Not shown: 997 filtered ports
    PORT     STATE      SERVICE
    22/tcp   unfiltered ssh
    1234/tcp unfiltered hotline
    5678/tcp unfiltered rrac
    MAC Address: FE:64:90:7E:51:81 (Unknown)
    
    Nmap done: 1 IP address (1 host up) scanned in 5.13 seconds
    [vagrant@2d33f851-838c-4 ~]$
    
    • 2

相关问题

  • 查找与端口关联的线程/脚本?

  • 关于网络挂载文件的问题

  • IP地址可以以255结尾而不是广播IP地址吗?

  • 无法识别arp命令或ip命令哪个MAC地址输出正确

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve