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.
Comentários
Postar um comentário