UP | HOME

LPI-2 202-450 Topico 212.4
Tarefas de segurança

Índice

212.4 Tarefas de segurança- Objetivos

Peso 3

O candidato deve ser capaz de buscar alertas de segurança de diversas fontes, instalar, configurar e operar sistemas de detecção de intrusos, aplicar patches de segurança e corrigir erros.

Conhecimentos-chave:

Lista parcial dos arquivos, termos e ferramentas utilizados:

212.4 Tarefas de segurança - Conteúdo

Todo administrador deve estar atento a possíveis ataques e invasões. Para isso operações de atualização de sistemas e pacotes de software, e monitoria ativa devem fazer parte da rotina de administração da rede. Além disso, é importante atualizar-se junto a boletins de segurança mantidos por entidades especializadas.

Existem algumas ferramentas de segurança incorporadas ao GNU/Linux, algumas delas são gratuitas e outras custam investimento. Para o exame LPIC2 precisamos de noções nas seguintes:

  • nmap;
  • nc ou netcat;
  • telnet;
  • iptables;
  • fail2ban;
  • Snort;
  • openVAS;

Entidades de segurança tradicionais

Entidades tradicionais que emitem boletins de segurança, frequentes e relevantes são a lista Bugtraq, atualmente mantida pelo Security Focus, CERT e CIAC.

CERT

https://www.cert.org

  • Computer Emergency Response Team ou time de resposta a emergências computacionais (em tradução nossa), especificamente, o CERT Coordination Center ou CRET-CC está localizado na Carnegie Mellon University;
  • fornece ferramentas para avaliações e análises de vulnerabilidades, incluindo uma lista abrangente de vulnerabilidades conhecidas e vetores de ataque;
  • Frequentemente encontrado trabalhando com organizações governamentais ou instituições privadas em relação a questões de política de segurança de computação.

US-CERT

https://www.us-cert.gov

  • United States - Computer Emergency Response Team ou time de resposta a emergências computacionais dos Estados Unidos, em tradução nossa;
  • fornece respostas classificadas de governos a incidentes de segurança de computação;
  • atua com o CERT-CC em questões de política da informação.

BugTraq

Tratase de uma mailing list hospedada por Security Focus em:

https://bugtraq.securityfocus.com/archive

  • Trata-se de uma lista de EMail baseada em subscrição;
  • criada e mantida por Security Focus Organization;
  • é uma lista moderada (e bastante detalhada) para discuções e anúncios sobre vulnerabilidades de segurança;
  • esta lista fornece detalhes sobra as vulnerabilidades à medida que são descobertas e relatadas, incluindo o que é afetado (versões, tipos, dispositivos e sistemas operacionais), qual é a vulnerabilidade e quaisquer vetores de ataque conhecidos.

CIAC

O Computer Incident Advisory Capability (CIAC) foi a equipe original de resposta a incidentes de segurança em computadores do Departamento de Energia dos Estados Unidos. O CIAC foi formado em fevereiro de 1989, com o patrocínio conjunto do Escritório do CIO do DOE e da Força Aérea. A função principal do CIAC era, como o nome indica, avisar as pessoas sobre incidentes de computação. Basicamente, isso significa vulnerabilidades de segurança, alertas de vírus e hoax e preocupações semelhantes com a segurança da informação. O CIAC foi membro fundador do GFIRST, o Fórum Governamental de Equipes de Resposta a Incidentes e Segurança e do FIRST, uma organização internacional de resposta a incidentes e segurança. O CIAC publicou relatórios e boletins de incidentes até ser oficialmente renomeado para DOE-CIRC e transferido para Las Vegas, Nevada, em outubro de 2008.

https://www.energy.gov/cio/about-our-services/integrated-joint-cybersecurity-coordination-center

Ferramentas para varredura de portas

Os scanners de portas são ferramentas que nos ajudam a identificar portas abertas em um host ou em uma rede de computadores. Os administradores podem usá-los para revisar as políticas de segurança e monitorar os serviços de rede. Existe uma abundância de ferramentas de varredura para o GNU/Linux porém para o exame LPIC2 vamos focar nas ferramentas nc ou netcat, nmap e telnet.

nc ou netcat

O comando netcat (ou nc em sua forma abreviada) é um utilitário poderoso e fácil de usar que pode ser empregado para praticamente qualquer coisa no GNU/Linux em relação a soquetes TCP ou UDP ou UNIX.

Pode ser usado para abrir conexões TCP, ouvir em portas TCP e/ou UDP arbitrárias (coisa que já fizemos nos laboratórios do tópico 213-3), enviar pacotes e fazer varredura de portas (propriedade que importa para esse tópico).

┌─[root@Debian-lpi]──[12:25]──[~]
└─[502]─># nc -vz localhost 21-500
localhost [127.0.0.1] 80 (http) open
localhost [127.0.0.1] 25 (smtp) open
localhost [127.0.0.1] 22 (ssh) open

###
# Adicionando mais modificadores "v" no comando
###

┌─[root@Debian-lpi]──[12:26]──[~]
└─[503]─># nc -vvz localhost 21-50
localhost [127.0.0.1] 50 (?) : Connection refused
localhost [127.0.0.1] 49 (tacacs) : Connection refused
localhost [127.0.0.1] 48 (?) : Connection refused
localhost [127.0.0.1] 47 (?) : Connection refused
localhost [127.0.0.1] 46 (?) : Connection refused
localhost [127.0.0.1] 45 (?) : Connection refused
localhost [127.0.0.1] 44 (?) : Connection refused
localhost [127.0.0.1] 43 (whois) : Connection refused
localhost [127.0.0.1] 42 (nameserver) : Connection refused
localhost [127.0.0.1] 41 (?) : Connection refused
localhost [127.0.0.1] 40 (?) : Connection refused
localhost [127.0.0.1] 39 (?) : Connection refused
localhost [127.0.0.1] 38 (?) : Connection refused
localhost [127.0.0.1] 37 (time) : Connection refused
localhost [127.0.0.1] 36 (?) : Connection refused
localhost [127.0.0.1] 35 (?) : Connection refused
localhost [127.0.0.1] 34 (?) : Connection refused
localhost [127.0.0.1] 33 (?) : Connection refused
localhost [127.0.0.1] 32 (?) : Connection refused
localhost [127.0.0.1] 31 (?) : Connection refused
localhost [127.0.0.1] 30 (?) : Connection refused
localhost [127.0.0.1] 29 (?) : Connection refused
localhost [127.0.0.1] 28 (?) : Connection refused
localhost [127.0.0.1] 27 (?) : Connection refused
localhost [127.0.0.1] 26 (?) : Connection refused
localhost [127.0.0.1] 25 (smtp) open
localhost [127.0.0.1] 24 (?) : Connection refused
localhost [127.0.0.1] 23 (telnet) : Connection refused
localhost [127.0.0.1] 22 (ssh) open
localhost [127.0.0.1] 21 (ftp) : Connection refused
 sent 0, rcvd 0
-z
faz o netcat para simplesmente scannear as portas sem necessariamente enviar nenhum dado através delas;
-v
habilita o modo verboso;
-4 ou -6
faz o netcat varrer dentro dos protocolos IPv4 ou IPv6.

O comando nmap

O Nmap é uma ferramenta em código livre (GPLv2) muito útil para administradores de redes e de sistemas GNU/Linux. Ele é usado para explorar redes, realizar varreduras de segurança, auditoria de rede e, também, encontrar portas abertas em máquinas remotas. Ele pode fazer descoberta de hosts, identificação de sistemas operacionais, filtros de pacotes em portas e portas abertas em hosts remotos.

┌─[root@Debian-lpi]──[12:51]──[~]
└─[501]─># nmap -v -r 192.168.83.12,30

Starting Nmap 7.40 ( https://nmap.org ) at 2021-12-17 12:51 -03
Initiating ARP Ping Scan at 12:51
Scanning 2 hosts [1 port/host]
Completed ARP Ping Scan at 12:51, 0.23s elapsed (2 total hosts)
Initiating Parallel DNS resolution of 2 hosts. at 12:51
Completed Parallel DNS resolution of 2 hosts. at 12:51, 0.00s elapsed
Initiating SYN Stealth Scan at 12:51
Scanning 2 hosts [1000 ports/host]
Discovered open port 22/tcp on 192.168.83.30
Discovered open port 21/tcp on 192.168.83.12
Discovered open port 22/tcp on 192.168.83.12
Discovered open port 25/tcp on 192.168.83.30
Discovered open port 80/tcp on 192.168.83.30
Discovered open port 139/tcp on 192.168.83.12
Increasing send delay for 192.168.83.30 from 0 to 5 due to 28 out of 92 dropped probes since last increase.
Increasing send delay for 192.168.83.12 from 0 to 5 due to 28 out of 92 dropped probes since last increase.
Discovered open port 445/tcp on 192.168.83.12
Increasing send delay for 192.168.83.30 from 5 to 10 due to 14 out of 46 dropped probes since last increase.
Increasing send delay for 192.168.83.12 from 5 to 10 due to 14 out of 46 dropped probes since last increase.
Increasing send delay for 192.168.83.30 from 10 to 20 due to 11 out of 33 dropped probes since last increase.
Increasing send delay for 192.168.83.12 from 10 to 20 due to 11 out of 33 dropped probes since last increase.
Increasing send delay for 192.168.83.30 from 20 to 40 due to 11 out of 31 dropped probes since last increase.
Increasing send delay for 192.168.83.12 from 20 to 40 due to 11 out of 31 dropped probes since last increase.
Increasing send delay for 192.168.83.30 from 40 to 80 due to 11 out of 28 dropped probes since last increase.
Increasing send delay for 192.168.83.12 from 40 to 80 due to 11 out of 29 dropped probes since last increase.
SYN Stealth Scan Timing: About 43.06% done; ETC: 12:53 (0:00:41 remaining)
Discovered open port 3306/tcp on 192.168.83.30
Discovered open port 9101/tcp on 192.168.83.30
Discovered open port 9102/tcp on 192.168.83.30
Discovered open port 9103/tcp on 192.168.83.30
Discovered open port 9102/tcp on 192.168.83.12
Completed SYN Stealth Scan against 192.168.83.30 in 93.14s (1 host left)
Completed SYN Stealth Scan at 12:53, 93.55s elapsed (2000 total ports)
Nmap scan report for 192.168.83.12
Host is up (0.00051s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
9102/tcp open  jetdirect
MAC Address: 0E:EC:A1:5C:CF:B1 (Unknown)

Nmap scan report for 192.168.83.30
Host is up (0.00032s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
3306/tcp open  mysql
9101/tcp open  jetdirect
9102/tcp open  jetdirect
9103/tcp open  jetdirect
MAC Address: F4:CE:46:27:2A:A4 (Hewlett Packard)

Read data files from: /usr/bin/../share/nmap
Nmap done: 2 IP addresses (2 hosts up) scanned in 94.02 seconds
           Raw packets sent: 2674 (117.624KB) | Rcvd: 2674 (106.992KB)
-v
esta opção configura o nmap para trazer mais informações sobre o host remoto;
-r
scaneia as portas em ordem numérica da menor para a maior.

Existem alguns opcionais que acionam técnicas de varredura específicas:

-sS, -sT, -sA, -sW, -sM
TCP SYN, TCP Connect, TCP ACK, TCP Window e TCP Maimon respectivamente;
-sN, -sF, -sX
TCP Null, TCP FIN e TCP Xmas respectivamente;
--scanflags <flags>
varre uma flag TCP específica;
-sI <zombie host[:porta]>
Idlescan;
-sO
varre sobre o protocolo IP;

O comando telnet

Telnet é um comando de usuário e um protocolo sobre TCP/IP para acessar computadores remotos. Por meio do Telnet, um administrador ou outro usuário pode acessar o computador de outra pessoa remotamente. Na Web, os protocolos HTTP e FTP nos permitem solicitar arquivos específicos de computadores remotos, mas não estar realmente conectado como um usuário desse computador. Com o Telnet, nós nos conectamos como um usuário regular com quaisquer privilégios que você possa ter concedido ao aplicativo e dados específicos naquele computador.

Telnet é um dos primeiros protocolos de login remoto na Internet. Foi lançado inicialmente nos primeiros dias da rede IP em 1969 e foi por muito tempo a forma padrão de acessar computadores remotos em rede. É um protocolo cliente-servidor que fornece ao usuário uma sessão de terminal para um host remoto a partir do aplicativo cliente telnet. Como o protocolo não fornece medidas de segurança integradas, como criptografia do processo de autenticação ou criptografia dos dados trafegados, ele sofre de sérios problemas de segurança que limitaram sua utilidade em ambientes onde a rede não é totalmente confiável. O uso de Telnet na Internet pública deve ser evitado devido ao risco de espionagem e coleta de credenciais.

Hoje o uso do Telnet como cliente de sessão está restrito a acessos a ativos de rede simples como switches, roteadores e appliances isolados.

Mas o Telnete encontrou sobrevida como uma eficiente ferramenta de teste de portas e protocolos, pois o comando permite conectar em qualquer socket que seja informado na chamada do programa.

┌─[root@Debianlpi]──[12:53]──[~]
└─[502]─># telnet 192.168.10.128 21 
Trying 192.168.10.128...
Connected to 192.168.10.128.
Escape character is '^]'.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 04:38. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.

OpenVAS

O OpenVAS (Open Vulnerability Assessment System ou sistema aberto de avaliação de vulnerabilidade) é um conjunto de ferramentas que fornece informações sobre vulnerabilidades e vários níveis de alerta quando descoberto. A boa notícia é que todos os produtos OpenVAS são software livre e a maioria dos componentes são licenciados sob a GNU General Public License (GPL).

Características:

  • Usa um banco de dados (constantemente atualizado) de vulnerabilidade conhecida para várias ferramentas remotas e aplicativos de acesso remoto;
  • Identifica e relata brechas de segurança conhecidas ou descobertas em nosso ambiente;
  • testa as definições de configuração para problemas de segurança e destaca as mudanças a serem feitas;
  • comercialmente disponível e suportado.

asdf

Estratégias e ferramentas de proteção

Para o GNU/Linux exitem uma grande quantidade de estratégias e de ferramentas de segurança e proteção disponíveis. Para o exame LPIC2 aqui iremos listar alguns pontos chave.

Regras de firewall

Como já esperado podemos utilizar o firewall do GNU/Linux o iptables para incrementar a segurança de nosso host.

Imaginemos um host com GNU/Linux atuando como roteador entre uma rede privada e a Internet. Nesse cenário uma estratégia de segurança simples seria bloquear todas as tentativas de conexão para o nosso host provindas de endereços de IP público permitindo entrada apenas de conexções já estabelecidas. A seguir, ẽ mostrado um exemplo de aplicação dessa estratégia:

  1. Libera o tráfego dos pacotes gerados localmente:

    iptables -A INPUT -i lo -j ACCEPT

  2. Liberar entrar pela interface eth0 (no exemplo esta é a interface ligada na Internet) somente os pacotes pertencentes (ESTABLISHED) ou relacionados (RELATED) a uma conexão pré-existente;

    iptables -A input -m state --state ESTABLISHED,RELATED -j ACCEPT

  3. Estabelecer como DROP a política default na chain INPUT da tabela Filter:

    iptables -P INPUT DROP

  4. Por fim, todas as regras relativas a serviços publicados nesse servidor (como por exemplo acesso SSH para administração) devem ser adicionados:

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    Observação quando o SSH está liberado em uma interface acessível pela internet o acesso por senha no usuário root deve ser desabilitado, a autenticação apenas por chaves para esse usuário é uma alternativa interessante principalmente se formos aplicar a ferramenta Fail2ban.

Fail2ban

Fail2ban é um aplicativo de análise de log que monitora os logs do sistema em busca de sintomas de um ataque automatizado em nosso servidor. Quando uma tentativa de comprometimento é localizada, usando os parâmetros definidos, o Fail2ban adicionará uma nova regra ao iptables para bloquear o endereço IP do invasor, por um determinado período de tempo ou permanentemente.

O Fail2ban também pode nos alertar por e-mail informando que um ataque está ocorrendo.

O Fail2ban concentra-se principalmente em ataques SSH, embora possa ser configurado para funcionar para qualquer serviço que use arquivos de log e possam estar sujeito a um comprometimento.

Após instalado os arquivos de configuração do Fail2ban residem em /etc/fail2ban.

┌─[root@Centos7lpi]──[15:16]──[~]
└─[1006]─># ls -l
total 48
drwxr-xr-x 2 root root  4096 Aug  4 21:00 action.d
-rw-r--r-- 1 root root  2328 Jul 31  2015 fail2ban.conf
drwxr-xr-x 2 root root  4096 Aug  2  2015 fail2ban.d
drwxr-xr-x 3 root root  4096 Aug  4 21:00 filter.d
-rw-r--r-- 1 root root 18562 Jul 31  2015 jail.conf
drwxr-xr-x 2 root root  4096 Aug  4 21:00 jail.d
-rw-r--r-- 1 root root  1939 Jul 31  2015 paths-common.conf
-rw-r--r-- 1 root root   642 Jul 31  2015 paths-debian.conf

O Fail2bvan lê os arquivos de configuração .conf primeiro e, em seguida, os arquivos .local substituem quaisquer configurações. Por isso todas as mudanças na configuração devem ser feitas nos arquivos .local, deixando os arquivos .conf intocados.

O arquivo fail2ban.local

O arquivo fail2ban.conf contém o perfil de configuração padrão. As configurações padrão nos darão um trabalho de configuração razoável. Se quisermos fazer alguma alteração, é melhor fazê-lo em um arquivo separado, fail2ban.local, que sobrescreve fail2ban.conf. Logo para iniciar o setup execute:

copy fail2ban.conf fail2ban.local

O arquivo jail.local

Em sistemas Debian e derivados o arquivo jail.local por padrão já terá as configurações necessárias para proteger o serviço ssh, porém em distribuições Redhat e derivadas esse setup precisa ser feito manualmente. Porém todos os outros protocolos como HTTP, FTP e tais estarão desabilitados. Para mudar isso precisamos criar o arquivo jail.local copiando do arquivo jail.conf.

copy jail.conf jail.local

#
# JAILS
#

#
# SSH servers
#

[sshd]
port    = ssh
logpath = %(sshd_log)s


[sshd-ddos]
# This jail corresponds to the standard configuration in Fail2ban.
# The mail-whois action send a notification e-mail with a whois request
# in the body.
port    = ssh
logpath = %(sshd_log)s


[dropbear]
port     = ssh
logpath  = %(dropbear_log)s

[selinux-ssh]
port     = ssh
logpath  = %(auditd_log)s
maxretry = 5

Lista de diretivas gerais importantes:

ignoreip
para ignoriar endereços de IP específicos, por padrão o Fail2ban nunca banirá o endereço de localhost;
bantime
o tempo pelo qual o endereço de IP ficará banido. Se setado um tempo negativo ele ficará banido permanentemente. O padrão é 600 segundos (10 minutos);
findtime
o período de tempo entre as tentativas de login antes que um banimento seja executado. Por exemplo, se o Fail2ban for configurado para banir um IP após 5 tentativas de login malsucedidas, essas 5 tentativas devem ocorrer dentro do limite de tempo definido de 10 minutos. O valor nesse campo sempre é definido em segundos, portanto para 10 minutos usa-se 600;
maxretry
quantas tentativas de login erradas serão permitidas antes de um bloqueio.

Lista de diretivas relativas a alertas:

destemail
o endereço de EMail que deverá receber os alertas;
sendername
o nome sob o qual o EMail será entregue;
sender
o endereço de EMail que o Fail2ban usará para remeter os alertas.

Lista de diretivas para configuração das jail:

enabled
habilita a respectiva jail;
port
a porta que referencia ao Fail2ban o serviço a tratar. Se estiver usando uma porta padrão, o nome do serviço pode ser definido nessa diretiva. Se estiver utilizando uma porta não tradicional, o número dessa porta deve ser colocado nessa diretiva;
filter
o nome do arquivo em /etc/fail2ban/filter.d/ que contém a expressão regular que irá filtrar o log em busca dos IPs a serem bloqueados. O sufixo .conf não precisa ser incluído;
logpath
define o caminho do arquivo de log a analisar;
maxretry
sobrescreve o valor da diretiva global maxretry para a jail específica;
action
aqui pode-se adicionar uma configuração extra, se a ação padrão não for adequada para a jail em questão. Ações adicionais devem ser colocadas em /etc/fail2ba/action.d/.
Os filtros

O diretório /etc/fail2ban/filter.d/ por padrão já vem populado com uma boa quantidade de filtros úteis para os mais variados serviços e propósitos. É uma boa estudar os arquivos que constam aqui.

Firewall vs IDS vs IPS

Qual é a diferença?

Firewall
Um dispositivo ou aplicativo que analisa cabeçalhos de pacote e aplica a política com base no tipo de protocolo, endereço de origem, endereço de destino, porta de origem e/ou porta de destino. Os pacotes que não correspondem à política são rejeitados;
IDS
Intrusion Detection System ou sistema de detecção de intrusão, em tradução nossa. Consiste em dispositivo ou aplicativo que analisa pacotes inteiros, tanto o cabeçalho quanto a carga útil, procurando por eventos conhecidos. Quando um evento conhecido é detectado, uma mensagem de log é gerada detalhando o evento.
IPS
Intrusion Prevention System ou sistema de prevenção de intrusão, em tradução nossa. Consiste num dispositivo ou aplicativo que analisa pacotes inteiros, tanto o cabeçalho quanto a carga útil, procurando por eventos conhecidos. Quando um evento conhecido é detectado, o pacote é rejeitado.
Snort

Snort é um sistema de detecção de intrusão de rede (IDS) de código aberto e gratuito criado por Martin Roesch em 1998. O Snort agora é desenvolvido pela Sourcefireand e a má notícia é que ele é propriedade da Cisco desde 2013.

Características:

  • O Snort pode ajudar a determinar quando alguém/algo está "sondando" nosso sistema em busca de vulnerabilidades, ou atacando com vetores conhecidos;
  • a análise do tráfego de rede é executada em tempo real (chamada 'sniffing') para determinar se/quando os ataques estão ocorrendo;
  • O Snort pode ser configurado em três modos:

    1. sniffer;
    2. logger de pacotes;
    3. detecção de intrusão de rede.

    No modo sniffer, o programa lerá pacotes de rede e os exibirá no console. No modo de logger de pacotes, o programa registrará os pacotes no disco. No modo de detecção de intrusão, o programa monitora o tráfego da rede e o analisa em relação a um conjunto de regras definido pelo usuário. O programa executará uma ação específica com base no que foi identificado;

Uma boa alternativa ao Snort é o Suricata.

Autor: Jeremias Alves Queiroz

Criado em: 2021-12-19 dom 12:45

Valid XHTML 1.0 Strict