AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 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

Como posso fazer uma varredura de porta em um host sem usar a interface de loopback?

  • 772

Estou tentando auditar regras de firewall em um host. Isso normalmente é bastante simples de fazer com o nmap ou uma ferramenta de verificação semelhante. O problema é que só consigo executar a auditoria no próprio host. Normalmente, se você executar uma varredura de porta com o nmap no host atual, o nmap usará a interface de loopback. Isso é um problema porque os firewalls nos hosts que me interessam permitem todo o tráfego na interface de loopback:

[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...]

E consequentemente, quando eu escaneio o host, todas as portas parecem ser permitidas pelo firewall:

[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

Então, tentei especificar a interface a ser usada, esperando forçar a varredura para rotear o tráfego pela interface de rede normal do host. Mas o nmap não consegue encontrar nenhuma porta aberta:

[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

No entanto, sei que, em seu firewall, o host permite pelo menos a porta 22 de qualquer outro host na mesma rede. Quando faço a varredura de outro host na mesma rede, é isso que vejo:

[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

Então, por que não consigo ver esses resultados ao digitalizar meu host a partir de si mesmo? Isso é devido à configuração do roteador (que infelizmente não tenho acesso), ou estou cometendo um erro em algum lugar?

networking firewall
  • 1 1 respostas
  • 751 Views

1 respostas

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

    O problema é que as tabelas de roteamento do Linux sempre roteiam o tráfego localmente através da interface de loopback e não o colocam na rede física se o sistema local tiver uma interface de rede escutando o endereço IP de destino. Você pode ver a tabela de roteamento local com ip route show table local- todos os pacotes que correspondem a uma regra na tabela de roteamento local são retornados. Além disso, a tabela de roteamento local é mantida automaticamente (as regras são adicionadas/removidas ao ativar/desativar as interfaces) e não podem ser alteradas manualmente. Portanto, os pacotes de varredura do nmap sempre terminarão na interface de loopback (e efetivamente perderão o firewall), mesmo quando especificar explicitamente a interface à qual se ligar.

    A solução é criar uma rede virtual com namespace para executar a verificação. Uma rede virtual com namespace tem suas próprias interfaces de rede virtual e tabelas de roteamento separadas de outras redes com namespace, incluindo o namespace da rede raiz. Isso significa que os pacotes enviados pelos namespaces parecem vir de uma rede externa e não são considerados pacotes locais.

    Eu segui o guia aqui para criar uma rede com namespace. No final, o script para criar a rede ficou assim:

    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é o nome da rede virtual com namespace; você pode chamar de seu como quiser.

    O IP de origem e o IP de destino podem ser qualquer endereço IP arbitrário, o que significa que você pode falsificar endereços IP de origem arbitrários ao executar uma verificação, o que é bastante útil. Tenha cuidado, no entanto, para não mascarar nenhum endereço IP real com o qual o sistema possa querer se comunicar.

    Por fim, executar sua varredura nmap é uma questão de garantir que ela seja executada dentro da rede com namespace. Você também precisa verificar o endereço IP do adaptador ethernet virtual emparelhado no namespace raiz (NÃO o endereço IP real do sistema):

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

    E você deve ver sua verificação sendo executada como se realmente viesse de 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

relate perguntas

  • Encontrar threads/scripts associados a uma porta?

  • Pergunta sobre arquivos montados em rede

  • Um endereço IP pode terminar em 255 e não ser um endereço IP de transmissão?

  • Incapaz de identificar qual saída de endereço MAC do comando arp ou comando ip está correta

  • Roteador estranho funciona com centos 6 [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve