Pular para o conteúdo principal

Ferramenta de segurança

SNORT - Ferramenta de segurança

Introdução


IPS é uma ferramenta para detecção e prevenção de comportamentos suspeitos em nossa rede podendo até mesmo tomar ações em uma invasão e gerar alertas.

Hoje a no mercado à diversos fabricantes de roteadores que já aplica esse recursos de IPS para a segurança da rede.

Nosso IPS estará dentro da nossa rede tratando os pacotes de origem do firewall.









Nessa imagem retrata o sentido onde ficará o nosso IPS servindo como uma ponte que irá tratar todo nosso tráfego.

Método


O IPS ( Prevenção de atividades ) trabalha como um IDS ( detecção de atividades) trabalhando como forma de defesa como:

Planejamento → politicas e cadeias de regras
Prevenção → IPS
Detecção → IDS
Resposta → E-mail, alerta, encerrar sessão ( REJECT/DROP ) e reporta.


SNORT ( Intrusion Detection ) é uma aplicação que descobre, analisa e reporta uma atividade não autorizada.

Ambiente


Nosso ambiente será instalado em CENTOS com todos os bloqueios e liberação ativados, apenas acessos remotos da porta 22 conforme as regras abaixo:





























Lembrando que iremos liberar todo o repasse que irá ser filtrado:
# iptables -A FORWARD -j ACCEPT
# service iptables save 

Pronto, agora iremos começar com a instalação e configuração.

Configuração


Instalando dependência do daq:
# yum install flex bison
# wget https://www.snort.org/downloads/snort/daq-2.0.2.tar.gz -C /usr/src

# tar -xvf /usr/src/daq-2.0.2.tar.gz
# cd daq-2.0.2
#./configure && make && make install

Instalando dependências:
# yum install libpcap-devel gcc-c++ libpcre zlib-devel libdnet-devel

Iremos baixar o código fonte do snort:
# cd /usr/src
# wget https://www.snort.org/downloads/snort/snort-2.9.6.2.tar.gz

Descompacte o arquivo:
# tar -xvf snort-2.9.6.2.tar.gz
# ln -s snort-2.9.6.2 snort

Depois disso iremo compilar o snort:
# cd /usr/src/snort
# ./configure
# make && make install

Agora iremos testar executa-lo:
[root@serv-IPS snort]# snort
Running in packet dump mode


--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet


--== Initialization Complete ==--


,,_ -*> Snort! <*-
o" )~ Version 2.9.6.2 GRE (Build 77)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.4.0
Using PCRE version: 8.33 2013-05-28
Using ZLIB version: 1.2.3

Commencing packet processing (pid=22364)

Pronto, agora iremos configurar o snort dividindo as configurações e cadeias:
# mkdir /etc/snort/{eth0,rules}
# cp /usr/src/snort/etc/snort.conf /etc/snort/eth0
# cp /usr/src/snort/preproc_rules/* /etc/snort/rules

Criando usuário para o serviço por medidas de segurança:
# groupadd snort
# useradd snort -g snort
# passwd -l snort
# chown snort. /etc/snort

Quando terminamos o processo ele mostra o relatório dos pacotes que forão monitorados de forma detalhada:
# snort
[ctrl]+[c]

Run time for packet processing was 1440.171048 seconds
Snort processed 898 packets.
Snort ran for 0 days 0 hours 24 minutes 0 seconds
Pkts/min: 37
Pkts/sec: 0
===============================================================================
Memory usage summary:
Total non-mmapped bytes (arena): 610304
Bytes in mapped regions (hblkhd): 6868992
Total allocated space (uordblks): 488736
Total free space (fordblks): 121568
Topmost releasable block (keepcost): 118624
===============================================================================
Packet I/O Totals:
Received: 898
Analyzed: 898 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0
===============================================================================
Breakdown by protocol (includes rebuilt packets):
Eth: 898 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 809 ( 90.089%)
Frag: 0 ( 0.000%)
ICMP: 37 ( 4.120%)
UDP: 20 ( 2.227%)
TCP: 752 ( 83.742%)
IP6: 0 ( 0.000%)
IP6 Ext: 0 ( 0.000%)
IP6 Opts: 0 ( 0.000%)
Frag6: 0 ( 0.000%)
ICMP6: 0 ( 0.000%)
UDP6: 0 ( 0.000%)
TCP6: 0 ( 0.000%)
Teredo: 0 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 0 ( 0.000%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 0 ( 0.000%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 89 ( 9.911%)
IPX: 0 ( 0.000%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 0 ( 0.000%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 0 ( 0.000%)
ICMP Disc: 0 ( 0.000%)
All Discard: 0 ( 0.000%)
Other: 0 ( 0.000%)
Bad Chk Sum: 149 ( 16.592%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 0 ( 0.000%)
S5 G 2: 0 ( 0.000%)
Total: 898
===============================================================================

Testando


Iremos realizar, dentro da nossa DMZ no servidor LDAP iremos realizar uma instalação do pacote:
# apt-get install nmap

E no log do Snort podemos vizualizar todo o tráfego com as flags e demais informações:
07/31-17:52:00.596096 192.168.16.9:38622 -> 200.236.31.3:80
TCP TTL:64 TOS:0x0 ID:46184 IpLen:20 DgmLen:52 DF
***A***F Seq: 0x7736D894 Ack: 0x93FD2ACA Win: 0x7E04 TcpLen: 32
TCP Options (3) => NOP NOP TS: 44004111 166540838
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:52:00.770173 200.236.31.3:80 -> 192.168.16.9:38622
TCP TTL:53 TOS:0x0 ID:41253 IpLen:20 DgmLen:52 DF
***A***F Seq: 0x93FD2ACA Ack: 0x7736D895 Win: 0x93 TcpLen: 32
TCP Options (3) => NOP NOP TS: 166540856 44004111
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:52:00.770549 192.168.16.9:38622 -> 200.236.31.3:80
TCP TTL:64 TOS:0x0 ID:46185 IpLen:20 DgmLen:52 DF
***A**** Seq: 0x7736D895 Ack: 0x93FD2ACB Win: 0x7E04 TcpLen: 32
TCP Options (3) => NOP NOP TS: 44004155 166540856
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Ele analisa e quando à algum tráfego suspeito sofrerá uma ação como bloqueio e entre outros, iremos na sequência realizar uma varredura de porta em uma outra máquina apontando para firewall utilizando o nmap:
















Em nosso Snort  podemos ver diversas requisições em diversas portas, mas que forão bloqueados:

07/31-17:59:47.597146 192.168.16.9:57249 -> 192.168.122.254:80
TCP TTL:57 TOS:0x0 ID:35137 IpLen:20 DgmLen:40
***A**** Seq: 0x0 Ack: 0x19720765 Win: 0x400 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:59:47.597258 192.168.16.9:57249 -> 192.168.122.254:443
TCP TTL:56 TOS:0x0 ID:4394 IpLen:20 DgmLen:44
******S* Seq: 0x19720765 Ack: 0x0 Win: 0x400 TcpLen: 24
TCP Options (1) => MSS: 1460
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:59:47.597349 192.168.16.9 -> 192.168.122.254
ICMP TTL:47 TOS:0x0 ID:6766 IpLen:20 DgmLen:28
Type:8 Code:0 ID:37258 Seq:0 ECHO
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:59:48.595361 192.168.122.10 -> 192.168.16.9
ICMP TTL:64 TOS:0xC0 ID:61495 IpLen:20 DgmLen:68
Type:3 Code:1 DESTINATION UNREACHABLE: HOST UNREACHABLE
** ORIGINAL DATAGRAM DUMP:
192.168.16.9:57249 -> 192.168.122.254:80
TCP TTL:56 TOS:0x0 ID:35137 IpLen:20 DgmLen:40
Seq: 0x0
(12 more bytes of original packet)
** END OF DUMP
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:59:48.595405 192.168.122.10 -> 192.168.16.9
ICMP TTL:64 TOS:0xC0 ID:61496 IpLen:20 DgmLen:72
Type:3 Code:1 DESTINATION UNREACHABLE: HOST UNREACHABLE
** ORIGINAL DATAGRAM DUMP:
192.168.16.9:57249 -> 192.168.122.254:443
TCP TTL:55 TOS:0x0 ID:4394 IpLen:20 DgmLen:44
Seq: 0x19720765
(16 more bytes of original packet)
** END OF DUMP
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


07/31-17:59:48.595421 192.168.122.10 -> 192.168.16.9
ICMP TTL:64 TOS:0xC0 ID:61497 IpLen:20 DgmLen:56
Type:3 Code:1 DESTINATION UNREACHABLE: HOST UNREACHABLE
** ORIGINAL DATAGRAM DUMP:
192.168.16.9 -> 192.168.122.254
ICMP TTL:46 TOS:0x0 ID:6766 IpLen:20 DgmLen:28
Type: 8 Code: 0 Csum: 26229 Id: 37258 SeqNo: 0
** END OF DUMP
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+



Então o NIDS funciona como uma camada adicional de segurança analisando todo o tráfego.

Conclusão

Snort é um software completo e configuravel podendo realizar integrações com demais aplicações para melhor segurança. 

Bibliografia

Comentários

Postagens mais visitadas deste blog

QOS Intermediário - Implantação em cliente real

Implantação de QOS - Intermediário Introdução Nessa etapa seguiremos novamente o caminho do controle de tráfego, mas com uma pitada mais avançada delimitando por classes e em tempo real. Nessa video aula trará um pouco de shell-script junto com controle de tráfego e passando um pouco que vai ser um dos próximos tópicos que é o ZABBIX. O video realmente ficou extenso, porque tentei documentar ao máximo cada parte e explicar o porque da utilização de cada função.

Zabbix - Entendendo Agentes

Zabbix Agente - Instalação e configuração Introdução O Zabbix trabalha em sua estrutura basicamente duas funções como: Gerente - Zabbix que armazena informações e entre outras, agindo como Servidor ) Agente - Zabbix instalado em hosts que coleta informações para serem enviadas ao gerente.  O que iremos entender nesse tutorial é os modos como os agentes trabalha ativo e passivo. Ativo - Ele envia os dados para o servidor ( gerente ), muito utilizado quando o host está em outras redes através de firewall. Passivo - Ele aguarda solicitação do servidor ( gerente ) para a entrega dos dados. A configuração do agente e de acordo com as nossas necessidades no momento.

IDS Sistema detecção de intrusão - FAIL2BAN

IDS com FAIL2BAN Introdução IDS é um sistema de detecção de intrusos que podemos implementar em dois segmentos em rede e sistema. Iremos abordar o fail2ban, uma poderosa ferramenta contra tentativas de força bruta ( meio de ataque através de diversas tentativas de acesso ), esse serviço é muito utilizado em servidores que respondem diretamente a internet, a configuração acaba sendo muito útil para bloqueio sendo sua principal vantagem a velocidade. Funcionamento Partindo de analises rigorosas de log como tentativas repetitivas de falhas como por exemplo em uma tentativa de acesso via SSH em nosso firewall: Jun 28 20:24:13 serv-firewall unix_chkpwd[1491]: password check failed for user (root) Jun 28 20:24:13 serv-firewall sshd[1489]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost= 192.168.122.1 user= root Jun 28 20:24:15 serv-firewall sshd[1489]: Failed password for root from 192.168.122.1 port