Carregando...
LinuxRedes

Cheatsheet de comandos de redes no Linux

Verificando conexões com um computador remoto em uma porta (TCP e UDP)

Usando netcat (já pré instalado na maioria dos Linux)

Verificando se a conexão do host para um pc remoto está ok usando a linha de comando com netcat/nc:

# -v = verbose, mostra mais output
# -z = envia um pacote vazio, apenas vê se existe alguem escutando
# Use o parâmetro -n para não usar DNS
# Use o parâmetro -w <qtde segundos> para definir o tempo de timeout
# Testa a conexão com a porta 80
netcat -v google.com 80
# testa a conexão entre a porta 1 e a porta 1000 TCP (port scanning)
netcat -v domain.com 1-1000
# -u tenta conexão entre a porta 1 e a porta 100 UDP
netcat -z -u -v domain.com 1-1000

Referências
https://www.digitalocean.com/community/tutorials/how-to-use-netcat-to-establish-and-test-tcp-and-udp-connections-on-a-vps

https://www.computerhope.com/unix/nc.htm

Usando nmap (precisa instalar)

Instale o nmap:

sudo apt install nmap

Comandos interessantes:

# Escaneando todas as portas TCP abertas de um computador ou vários computadores usando só o começo, SYN, do three-way-handshake. Ele não chega a fazer o handshake completo.
# Esse método requer que os alvos estejam abertos para receber pacotes ICMP, isso porque o ICMP acelera o processo de escanemaneto dos hosts.
sudo nmap -sS <IP DESTINO> #Escaneando todas as portas
sudo nmap -sS -v 192.168.88.1 # Para ver o que está acontecendo em tempo real "verbose"
sudo nmap -sS <IP DESTINO> -p 80
sudo nmap -sS <IP DESTINO> -p 80,443,1234 # Escaneando várias portas
# Para fazer o three-way-handshake completo, substitua o -sS por -sT. Nesse modo não precisamos de sudo pois o pacote não precisa ser forjado.
nmap -sT <IP DESTINO>
nmap -sT <IP DESTINO> -p 80,443,1234
# Para utilizar TCP puro, útil em casos onde o ICMP está bloqueado use o parâmetro -Pn
# Os pacotes demorarão mais tempo para ocorrer mas funcionam puramente com TCP.
sudo nmap -sS -Pn <IP DESTINO>
nmap -sT -Pn <IP DESTINO>

Conexão com servidor usando SSL/TLS (TCP)

Usando openssl (nativo, geralmente)

Uma forma de testar conexão com um servidor usando SSL/TLS é usar o openssl:

openssl s_client -connect google.com:443

Usando nmap (precisa instalar)

Verificando conexões conexões abertas no seu computador

Comando ss (nativo)

Comando netstat (nativo)

Comando tcptrack (precisa instalar)

Comando iftop (precisa instalar)

Referências
https://computingforgeeks.com/how-to-check-tcp-connections-states-in-linux-with-netstat/

https://www.cyberciti.biz/faq/check-network-connection-linux/

Descobrindo quais portas estão abertas no seu Computador

Comando lsof

# para instalar
sudo apt install lsof

# comandos
sudo lsof -i
sudo lsof -i -P -n
sudo lsof -i -P -n | grep LISTEN

Comand netstat

# yum install net-tools     [On CentOS/RHEL]
# apt install net-tools     [On Debian/Ubuntu]
# zypper install net-tools  [On OpenSuse]
# pacman -S netstat-nat     [On Arch Linux]
# Linux
sudo netstat -tulpn
netstat -tulpn | grep LISTEN
sudo netstat -lptu
sudo netstat -lptu | grep LISTEN
# ou...
sudo ss -tulw
sudo ss -tulwn

# Windows
netstat -bano | more
netstat -bano | grep LISTENING
netstat -bano | findstr /R /C:"[LISTENING]"

# OpenBSD
netstat -na -f inet | grep LISTEN
netstat -nat | grep LISTEN

#FreeBSD/MacOS
netstat -anp tcp | grep LISTEN
netstat -anp udp | grep LISTEN

Comando nmap

sudo nmap -sT -O localhost
sudo nmap -sU -O 192.168.2.13 ##[ list open UDP ports ]##
sudo nmap -sT -O 192.168.2.13 ##[ list open TCP ports ]##
# Ou listar TCP/UDP tudo junto
sudo nmap -sTU -O 192.168.2.13

Referências

Artigos do Cyberciti
https://www.cyberciti.biz/faq/unix-linux-check-if-port-is-in-use-command/
https://www.cyberciti.biz/faq/how-to-check-open-ports-in-linux-using-the-cli/
https://www.cyberciti.biz/tips/linux-display-open-ports-owner.html

Artigo maketecheasier
https://www.maketecheasier.com/check-open-ports-linux/

Descobrindo conexões SSH abertas no Linux
https://www.golinuxcloud.com/list-check-active-ssh-connections-linux/

Cheats com SSH

Criando túnel SSH

ssh admin@server1.example.com -L 8080:server1.example.com:3000

Agora é possível acessar, a partir do computador local usando localhost:8080, o endereço server1.example.com:3000 do computador remoto.

Extra – Usando o mesmo IP ou hostname para acessar o endereço desejado

Algumas páginas web (conexão HTTP ou HTTPS) usam o IP ou hostname (DNS) digitado no browser como garantia de que a conexão não esteja sendo passada por um tunel. Isso é comum com Modens 3g/4g, por exemplo.

Para falsear um DNS é fácil, basta alterar o arquivo /etc/hosts e colocar lá o endereço desejado

Para falsear um IP, você precisará usar o iptables.
No exemplo abaixo fazemos todos pacotes direcionados ao IP 192.168.1.1 na porta 80 TCP serem redirecionados ao localhost (127.0.0.1) na porta 80

sudo iptables -t nat -I OUTPUT --dst 192.168.1.1 -p tcp --dport 80 -j REDIRECT --to-ports 80

Ou para redirecionar todas as portas:

sudo iptables -t nat -A OUTPUT -d 192.168.1.1 -j DNAT --to-destination 127.0.0.1

Lembre-se que ao criar um túnel apontando para a porta 80 localhost, você precisa criá-lo com sudo (pois a porta 80 é especial):

sudo ssh admin@server1.example.com -L 80:192.168.1.1:80

Para ver e excluir a regra de NAT no iptables:

# Ver regras cadastradas com seus números
sudo iptables -t nat -L --line-numbers
# Anote o nome da CHAIN e o numero da linha e substitua-o no comando para apagar a regra
# https://www.svennd.be/remove-iptables-prerouting-nat-rule/
sudo iptables -t nat -D OUTPUT 1

Criando túnel reverso SSH

ssh admin@server1.example.com -R 8080:localhost:3000

Agora é possível acessar, a partir do computador remoto usando localhost:8080, o endereço localhost:3000 do computador local .

Permitindo servidor SSH acessar cliente SSH

Referências
https://www.tecmint.com/create-ssh-tunneling-port-forwarding-in-linux/

Fazendo proxy dinâmico SOCKS com OpenSSH

ssh -D 1080 admin@server1.example.com

Entrar no navegador, configurar o proxy com SOCKS.

Usar!

Referências
https://www.tecmint.com/create-ssh-tunneling-port-forwarding-in-linux/

https://www.digitalocean.com/community/tutorials/how-to-route-web-traffic-securely-without-a-vpn-using-a-socks-tunnel

DNS

Utilizando o DNS para obter um IP

host google.com.br
dig google.com.br
nslookup google.com.br

Quais servidores DNS estão sendo utilizados?

# Funciona se o systemd-resolve estiver sendo usado para gerenciar o DNS
systemd-resolve --status

# Ou
cat /etc/resolv.conf

# Se estiver usando o NetworkManager, veja ele aqui
nmcli device show | grep DNS

# Outra forma de ver com o NetworkManager Ubuntu>= 15
nmcli device show <interfacename> | grep IP4.DNS

# Outra forma de ver com o NetworkManager Ubuntu<= 14
nmcli device list iface <interfacename> | grep IP4
# Como fazer uma consulta DNS usando um servidor específico?
dig @8.8.8.8 google.com.br
dig @1.1.1.1 cade.com.br

Descobrindo servidores de DNS na rede com nmap (precisa instalar)

Descobrindo servidores DNS na rede com NMAP

sudo nmap --script broadcast-dhcp-discover

Ferramentas do pacote dnsutils (vale a pena instalar)

sudo apt install dnsutils
# Isso habilitará os comandos
# dig
# nslookup

Detectando atividade de DNS com tcpdump

# Verificando todas as interfaces
tcpdump -nt udp port 53

# Limitando a uma interface
tcpdump -nt -i eth0 udp port 53

Referência
https://nil.uniza.sk/using-tcpdump-diagnostics-dns-debian/

Referências
https://wiki.archlinux.org/index.php/Domain_name_resolution

Rotas e Roteamento

Qual caminho um pacote fará para chegar até seu destino? Por qual interface? Por qual ip?

Usando traceroute

# instalando traceroute
sudo apt install traceroute

# Usando traceroute com pacotes UDP (modo legado)
traceroute website.com

# Usando traceroute com pacotes ICMP (método semelhante usado pelo windows, tracert). Se você consegue fazer ping no computador de destino, esse é recomendado
sudo traceroute -I website.com

# Usando traceroute com pactoes TCP, por padrão, na porta 80.
# Usa o método half-open, onde manda um pacote SYN e não responde mais
sudo traceroute -T website.com
sudo traceroute -T -p 443 website.com

# Usando traceroute com pacotes UDP
traceroute -U website.com

# Usando traceroute com pacotes UDP na porta 53
traceroute -UL website.com

Referências

Manual do traceroute
https://linux.die.net/man/8/traceroute

Tutorial do traceroute – How to Geek
https://www.howtogeek.com/657780/how-to-use-the-traceroute-command-on-linux/

Usando ip route

# Usando ip route
# essa solução funciona apenas para endereços de IP (não DNS)
ip route get 200.200.200.200
Deixe um comentário

O seu endereço de e-mail não será publicado.