Skip to main content

212.4 Tarefas de Segurança


Comandos para Scan e Testes de Portas


Boa parte desse tópico já foi visto no tópico 205.2, mas vou deixar links para assuntos específicos.



NMAP


O Nmap (“Network Mapper”) é uma ferramenta de código aberto para exploração de rede e auditoria de segurança. Ela foi desenhada para escanear rapidamente redes amplas, embora também funcione muito bem contra hosts individuais. O Nmap utiliza pacotes IP em estado bruto (raw) de maneira inovadora para determinar quais hosts estão disponíveis na rede, quais serviços (nome da aplicação e versão) os hosts oferecem, quais sistemas operacionais (e versões de SO) eles estão executando, que tipos de filtro de pacotes/firewalls estão em uso, e dezenas de outras características.


Embora o Nmap seja normalmente utilizado para auditorias de segurança, muitos administradores de sistemas e rede consideram-no útil para tarefas rotineiras tais como inventário de rede, gerenciamento de serviços de atualização agendados, e monitoramento de host ou disponibilidade de serviço.

$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2021-06-22 20:24 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000064s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh

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

# Verificando o S.O.:
$ sudo nmap -O localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2021-06-22 20:26 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds


NETSTAT


Usado para obter informações de Rede como conexões de rede, tabelas de roteamento, estatística de interfaces entre outros. Se usado sem argumento mostrará todas as conexões estabelecidas e sockets.


OpçãoDescrição
-iExibe as estatística de todas as interfaces.
-sExibe as estatística por protocolo.
-aExibe as estatística de todos os sockets.
-tFiltra para pesquisas mostrando apenas TCP.
-uFiltra para pesquisas mostrando apenas UDP.
-l (L)Exibe as conexões que estão em LISTEN (OUVINDO).

# Exibindo as estatísticas:
$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 569 0 124 0 405 0 0 0 BMRU
lo 65536 134 0 0 0 134 0 0 0 LRU

# Exibindo por protocolo (não vou colocar a saída toda!):
$ netstat -s
Ip:
Forwarding: 2
571 total packets received
4 with invalid addresses
0 forwarded
0 incoming packets discarded
566 incoming packets delivered
542 requests sent out
2 outgoing packets dropped
Icmp:
4 ICMP messages received
0 input ICMP message failed
ICMP input histogram:
destination unreachable: 4
9 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 9

# Exibindo por sockets (não vou colocar a saída toda!):
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 lpic2:ssh _gateway:32874 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 lpic2:bootpc 0.0.0.0:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 19845 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 19848 /run/snapd.socket
unix 2 [ ACC ] STREAM LISTENING 19850 /run/snapd-snap.socket
unix 2 [ ACC ] SEQPACKET LISTENING 16451 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 19852 /run/uuidd/request
unix 2 [ ] DGRAM 25851 /run/user/1000/systemd/notify
unix 2 [ ACC ] STREAM LISTENING 25854 /run/user/1000/systemd/private
unix 2 [ ACC ] STREAM LISTENING 16420 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 25859 /run/user/1000/bus
unix 2 [ ACC ] STREAM LISTENING 16422 /run/systemd/userdb/io.systemd.DynamicUser
unix 2 [ ACC ] STREAM LISTENING 25860 /run/user/1000/gnupg/S.dirmngr
unix 2 [ ACC ] STREAM LISTENING 25861 /run/user/1000/gnupg/S.gpg-agent.browser
unix 2 [ ACC ] STREAM LISTENING 25863 /run/user/1000/gnupg/S.gpg-agent.extra
unix 2 [ ACC ] STREAM LISTENING 16433 @/org/kernel/linux/storage/multipathd
unix 2 [ ACC ] STREAM LISTENING 25866 /run/user/1000/gnupg/S.gpg-agent.ssh
unix 2 [ ACC ] STREAM LISTENING 16431 /run/lvm/lvmpolld.socket


SS


Similar ao netstat, mas o ss faz parte do pacote iproute2, que é o mesmo pacote que o novo comando ip pertence. As opções de uso são as mesmas.


Usado para verificar as conexões ativas na máquina, portas abertas, em quais portas está escutando, em qual delas tem conexão estabelecida dentre muitas outras funcionalidades.

# Mostrar conexões estabelecidas (UDP e TCP):
$ ss -tu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 0 192.168.121.52:ssh 192.168.121.1:45604

# Portas que estão sendo escutadas:
$ ss -tul
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:*
udp UNCONN 0 0 192.168.121.52%eth0:bootpc 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
tcp LISTEN 0 128 [::]:ssh [::]:*

# Exibindo o resumo das estatísticas:
$ ss -s
Total: 151
TCP: 4 (estab 1, closed 0, orphaned 0, timewait 0)

Transport Total IP IPv6
RAW 1 0 1
UDP 2 2 0
TCP 4 3 1
INET 7 5 2
FRAG 0 0 0

# Exibindo somente as conexões TCP que estão em Listening:
$ ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 [::]:ssh [::]:*


NETCAT


Usado para fazer verificação de conexão, com isso, conseguimos saber se uma porta em escutando e respondendo reuisições, o nc funciona da mesma forma, exatamente igual.

# Verificando se tem algo escutando uma porta:
$ netcat localhost 22
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2

# Fazendo um scan:
$ netcat -zv localhost 22
Connection to localhost 22 port [tcp/ssh] succeeded!


# Criar uma conexão para teste numa porta:
$ nc -k -l -p 12345

# Em outro terminal, verificar se tem algo escutando essa porta:
$ nc -zv localhost 12345


TELNET


O Telnet é um protocolo de rede utilizado para permitir que um computador acesse outro computador através da rede e interaja com ele como se estivesse conectado diretamente, mesmo que estejam em locais físicos diferentes.


O Telnet é um protocolo de texto simples, onde as informações são transmitidas em texto sem criptografia, o que significa que qualquer pessoa com acesso à rede pode interceptar e ler as informações sendo transmitidas. Por isso, o Telnet é considerado um protocolo inseguro.


No entanto, devido à sua falta de segurança, o Telnet foi amplamente substituído pelo SSH (Secure Shell), que usa criptografia para proteger as informações transmitidas e tornar a conexão mais segura.


Mas ele ainda é usado para testar portas de servidores remotos e até fazer um levantamento leve de versão de aplicação:

$ telnet 192.168.121.10 22
Trying 192.168.121.10...
Connected to 192.168.121.10.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5

Por exemplo, no caso acima é possível saber a versão do SSH e qual a distribuição está rodando no servidor.



Sistemas de Detecção de Intrusão


Para detectar intrusão no sistema é usado um IDS/IPS. IDS (Intrusion Detection System) e IPS (Intrusion Prevention System) são sistemas de segurança que monitoram e analisam o tráfego de rede em busca de possíveis atividades maliciosas ou anomalias.


O IDS é um sistema que detecta possíveis ameaças e alerta os administradores sobre possíveis ataques. Ele é capaz de detectar ataques como varreduras de portas, tentativas de login com credenciais inválidas e outras atividades que possam indicar uma tentativa de invasão. O IDS pode ser baseado em regras pré-definidas, análise de comportamento, assinaturas de ataques conhecidos, entre outros métodos.


Já o IPS é um sistema que não apenas detecta, mas também previne e bloqueia possíveis ameaças. Ele pode agir automaticamente, bloqueando o tráfego malicioso ou restringindo o acesso a recursos críticos do sistema. O IPS é capaz de tomar medidas como bloqueio de portas, filtragem de pacotes, encerramento de conexões, entre outros.


Como exemplo de IDS temos o Snort e para IPS temos o Fail2Ban.



SNORT


O Snort é um sistema de detecção de intrusão de rede (IDS) de código aberto amplamente utilizado. Ele monitora o tráfego de rede em tempo real e detecta possíveis ataques ou comportamentos maliciosos com base em regras pré-definidas.


O Snort pode ser usado em uma variedade de situações, desde pequenas redes domésticas até grandes redes corporativas. Ele é executado em um servidor dedicado e pode ser configurado para monitorar o tráfego de toda a rede ou de partes específicas dela. Quando um alerta é gerado, o Snort pode notificar o administrador da rede ou tomar medidas automáticas para bloquear o tráfego malicioso.


Uma das vantagens do Snort é sua capacidade de personalização. Os administradores de rede podem criar suas próprias regras para detectar ameaças específicas, ou podem baixar e instalar regras criadas pela comunidade de usuários do Snort.


O Snort também possui um modo de prevenção de intrusão de rede (IPS), que pode bloquear o tráfego malicioso em tempo real. No entanto, o modo IPS requer configuração cuidadosa para evitar falsos positivos ou negativos.


Para instalar o snort podemos fazer:

$ sudo apt install -y snort

Os arquivos de configuração ficam em /etc/snort.



Fail2Ban


O Fail2Ban é uma ferramenta de segurança que visa prevenir ataques de força bruta e outras formas de abuso de serviços de rede. Ele faz isso monitorando logs de vários serviços, como SSH, Apache, Nginx, e outros, em busca de tentativas de login mal sucedidas ou outras atividades suspeitas.


Quando o Fail2Ban detecta um número especificado de tentativas falhas, ele adiciona uma regra de firewall para bloquear o endereço IP do qual as tentativas foram feitas. Esse bloqueio é temporário e pode ser configurado para durar um determinado período de tempo.


O Fail2Ban é altamente configurável e permite que os administradores personalizem as regras para cada serviço que desejam monitorar. Além disso, ele também fornece relatórios de atividade que permitem aos administradores ver quais endereços IP foram bloqueados e por que motivo.


O Fail2Ban é uma ferramenta útil para proteger sistemas contra ataques de força bruta e outras formas de abuso de serviços de rede. No entanto, é importante lembrar que o Fail2Ban não é uma solução completa de segurança e deve ser usado em conjunto com outras medidas de segurança, como senhas fortes e atualizações regulares do sistema.


Para instalar o Fail2Ban podemos fazer:

$ sudo apt install -y fail2ban

Os arquivos de configuração ficam em /etc/fail2ban.

  • fail2ban.conf
    Arquivo de configurações gerais do processo do Fail2Ban.


  • jail.conf
    Mantém as regras de bloqueio para cada aplicações.


O Fail2Ban bloqueia baseado em Iptables.



OpenVAS


OpenVAS (Open Vulnerability Assessment System) é uma estrutura de gerenciamento de vulnerabilidades de código aberto que permite a detecção, avaliação e gerenciamento de vulnerabilidades de segurança em sistemas e redes.


O OpenVAS consiste em um servidor de gerenciamento de vulnerabilidades, que é responsável pela coordenação dos testes de vulnerabilidade em vários clientes e gerencia o banco de dados de vulnerabilidades. Ele também inclui um conjunto de clientes que são usados para executar varreduras de vulnerabilidade em alvos designados e apresentar os resultados da varredura para o servidor.


O OpenVAS usa uma arquitetura de plug-in, o que significa que os usuários podem estender a funcionalidade do sistema escrevendo seus próprios plugins ou baixando e instalando plugins de uma biblioteca centralizada.


O OpenVAS é voltado para Pentest, possui a arquitetura Cliente/Servidor, onde o Servidor armazena um conjunto de testes de vulnerabilidades (NVT - Network Vulnerability Tests) e executa esses testes nos clientes para detectar falhas.



Boletins de Segurança


São informações sobre vulnerabilidade de um sistema, sempre que sair uma nova vulnerabilidade esses sistemas tem como intuito informar os Administradores.



Fontes


https://www.debian.org/security/

https://www.cert.br/

https://www.cisa.gov/

https://www.securityfocus.com