# Como utilizar o comando ss

# Simular o tcpview

```shell
watch -n 1 "sudo ss -tunap"
```

# Portas específicas

```shell
ss -tunap sport = :80
ss -tunap '( dport = :80 or dport = :443 )'
ss -tunap '( dport = :80 or dport = :443 or dport = :8080 )'
ss -tunap '( dport >= :8000 and dport <= :9000 )'
ss -4 -tunap '( dport = :443 )'
```

- `dport = :443`: Filtra conexões com **porta de destino 443** (HTTPS).
- `-4`: IPv4 (opcional, remova se quiser IPv6 também).
- `-t`: TCP (já que HTTPS usa TCP).
- `-u`: UDP (não necessário aqui, mas pode ser incluído se quiser).
- `-n`: Exibe IPs numéricos.
- `-a`: Mostra todas as conexões (ativas e em escuta).
- `-p`: Exibe processos associados.

# Filtrar por estado (ex.: ESTABLISHED, LISTEN)

```shell
ss -t state established   # Conexões ativas
ss -t state listening     # Portas em escuta (LISTEN)
```

# Fazendo um filtro por IP

```shell
ss -tunap | grep '192.168.1.100'  # Filtra por IP
```

# Exibindo apenas IPv4 ou IPv6

```shell
ss -4 -tunap  # Filtra apenas conexões IPv4
ss -6 -tunap  # Filtra apenas conexões IPv6
```

### **Alternativa com filtro de família de endereços (mais explícito):**

No `ss`, você também pode usar `-f inet` (IPv4) ou `-f inet6` (IPv6):

```shell
ss -f inet -tunap    # IPv4
ss -f inet6 -tunap   # IPv6
```

# Excluindo algumas portas

```shell
ss -4 -tunap '( dport != :22 )'
ss -4 -tunap '( sport != :22 and dport != :22 )'
ss -4 -tunap | grep -v ':22'
ss -4 -tunap '( dport != :22 and dport != :80 and dport != :443 )'
```

# Testes feito nos meus servidores

```shell
# No real time
ss -4 -tno state established '( dport = :80 or dport = :443 )' dst 131.72.154.130
# Real time
watch -n 1 "ss -4 -tno state established '( dport = :80 or dport = :443 )' dst 131.72.154.130"

# No real time
ss -4 -tno state established '( dport = :80 or dport = :443 )' | grep '131.72.154.'
# Real time
watch -n 1 "ss -4 -tno state established '( dport = :80 or dport = :443 )' | grep '131.72.154.'"
```

Nesses dois últimos exemplos com o grep, temos um efeito parecido com um filtro feitos para redes/CIDR. No nosso exemplo, um /24.

Podemos também remover as portas e obter quaisquer conexões com a faixa de rede `131.72.154.0/24`

```shell
# No real time
ss -4 -tno state established | grep '131.72.154.'
# Real time
watch -n 1 "ss -4 -tno state established | grep '131.72.154.'"
```

- `-4`: Filtra IPv4.
- `-t`: TCP.
- `-n`: Exibe IPs numéricos.
- `-o`: Mostra timers (opcional).
- `state established`: Apenas conexões ativas.
- `dst 131.72.154.130`: Filtra por destino específico.

# Comando final (recomendado):

```shell
watch -n 1 "ss -4 -antp '( dport = :80 or dport = :443 )' | grep -E 'ESTAB.*131.72.154.'"
```

- `-a`: Mostra todas as conexões (útil para `ESTABLISHED`).
- `-p`: Exibe processos associados.
- `grep -E 'ESTAB.*131.72.154.'`: Filtra conexões estabelecidas na rede desejada.

# Observações

Algumas vezes os processos não serão exibidos pq são serviços do sistema e para que aparecam, precisam ser iniciado com o `ROOT` ou então com o `SUDO`

## **Soluções e Comandos Úteis:**

#### Execute com **sudo** para ver processos de sistema:

```shell
watch -n 1 "sudo ss -tunap"
```

#### Use `lsof` para detalhes:

```shell
sudo lsof -i :22  # Verifica a porta 22 (SSH)
sudo lsof -i :68  # Verifica a porta 68 (DHCP)
```

### **Explicação dos Estados:**

- **ESTAB (ESTABLISHED)**: Conexão ativa entre dois hosts.
- **UNCONN (UNCONNECTED)**: Típico de UDP (não há "conexão" estabelecida).
- **LISTEN**: Porta em escuta aguardando conexões.

[https://blog.mygraphql.com/en/notes/low-tec/network/tcp-inspect/](https://blog.mygraphql.com/en/notes/low-tec/network/tcp-inspect/)

[https://www.linode.com/docs/guides/ss/](https://www.linode.com/docs/guides/ss/)

[https://ioflood.com/blog/ss-linux-command/](https://ioflood.com/blog/ss-linux-command/)

[https://www.sans.org/blog/linux-incident-response-using-ss-for-network-analysis/](https://www.sans.org/blog/linux-incident-response-using-ss-for-network-analysis/)

[https://www.networkworld.com/article/971764/using-the-ss-command-on-linux-to-view-details-on-sockets.html](https://www.networkworld.com/article/971764/using-the-ss-command-on-linux-to-view-details-on-sockets.html)