Por que o firewall-cmd não pode listar as portas ativas no meu pc local?

0
sudo nmap -p0-65535 127.0.0.1
Starting Nmap 7.40 ( https://nmap.org ) at 2018-02-06 19:03 HKT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 65525 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
110/tcp  open  pop3
143/tcp  open  imap

Listar portas com o firewall-cmd.

sudo firewall-cmd --zone=public --list-ports

Nenhuma porta listada! Como obter as mesmas portas exibidas com o firewall-cmd como com o nmap?

    
por scrapy 06.02.2018 / 12:08

2 respostas

0

É possível que essas regras sejam definidas com base no serviço e não na porta diretamente. Execute sudo firewall-cmd --list-all e verifique se você tem os serviços listados permitidos na zona correta. Você pode ver no meu exemplo que ssh , dhcpv6-client são permitidos, o que não mostra as portas reais.

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Se você quiser ver as portas do ssh, pode ver a regra desse serviço:

# cat /usr/lib/firewalld/services/ssh.xml
    
por 06.02.2018 / 12:13
0
firewall-cmd --zone public --list-all | awk '/services/ { for (i=2;i<=NF;i++) { print $i;system("grep -o port=.* /usr/lib/firewalld/services/"$i".xml") } }'

Uma solução que utiliza firewalld-cmd e awk seria como acima. Execute o comando firewall-cmd --zone public --list-all para obter a lista de serviços e, em seguida, retire a linha de serviços com awk. Fazendo um loop em cada serviço nesta linha (palavra delimitada por espaço), executamos um comando grep procurando por quaisquer portas em /usr/lib/firewalld/services/<service name>.xml

Observe que há risco associado à injeção de comando ao executar a função do sistema awk.

    
por 06.02.2018 / 12:36

Tags