Seguraça extrema com LIDS

Este artigo nos introduz ao LIDS (Linux Intrusion Detection System), um sistema robusto que aplicado como patch no kernel nos oferece recursos extremos de configurações de segurança do sistema operacional.

[ Hits: 52.119 ]

Por: Anderson L Tamborim em 21/02/2004 | Blog: http://y2h4ck.wordpress.com


Instalando o LIDS



2.1 - Como aplicar o patch do LIDS ao meu kernel?


A primeira coisa que devemos fazer é entrar em www.lids.org e baixar a versão de LIDS que corresponde ao kernel que iremos compilar, recomendo o kernel 2.4.24.

Se você não possui a versão deste kernel, poderá baixa-lo em www.kernel.org. Não entrarei em detalhes de como recompilar o kernel, se caso você que esteja lendo não possui tal habilidade, procure documentação antes de prosseguir.

Vamos descompactar o arquivo:

$ tar -zxvf lids-lids_version-kernel_version.tar.gz

Agora vamos entrar na pasta do nosso kernel:

$ cd /usr/src/linux

Agora aplicar o patch:

# patch -p1 < /path/to/lids/patch/lids-lids_version-kernel_version.patch

Agora que o patch está aplicado, configure o seu kernel normalmente com o "make menuconfig". Você verá que apareceu um menu a mais na lista com o nome de Linux Intrusion Detection System.

Para que o LIDS funcione, você deverá ter selecionados os seguintes esquemas:

[*]   Prompt for development and/or incomplete code/drivers
[*]   Sysctl Support


General setup ---> 
[*] Networking support 
[*] PCI support 
(Any) PCI access mode
[*] PCI quirks
[ ] PCI bridge optimization (experimental)
[*] Backward-compatible /proc/pci
[ ] MCA support
[ ] SGI Visual Workstation support 
[*] System V IPC 
[ ] BSD Process Accounting 
[*] Sysctl support
<*> Kernel support for a.out binaries 
<*> Kernel support for ELF binaries 
<*> Kernel support for MISC binaries
<M> Kernel support for JAVA binaries (obsolete)
< > Parallel port support
[ ] Advanced Power Management BIOS support

Networking options ---> *(Personalize de acordo com suas 
                          necessidades)
<*> Packet socket 
[*] Kernel/User netlink socket 
[*] Routing messages
<*> Netlink device emulation 
[*] Network firewalls 
[ ] Socket Filtering
<*> Unix domain sockets 
[*] TCP/IP networking 
[ ] IP: multicasting 
[*] IP: advanced router 
[ ] IP: policy routing
[*] IP: equal cost multipath 
[ ] IP: use TOS value as routing key 
[*] IP: verbose route monitoring
[*] IP: large routing tables
[ ] IP: kernel level autoconfiguration
[*] IP: firewalling
[*] IP: firewall packet netlink device
[ ] IP: transparent proxy support 
[*] IP: masquerading 
--- Protocol-specific masquerading support will be built as 
    modules.
[*] IP: ICMP masquerading 
--- Protocol-specific masquerading support will be built as 
    modules.
[*] IP: masquerading special modules support
<M> IP: ipautofw masq support (EXPERIMENTAL)
<M> IP: ipportfw masq support (EXPERIMENTAL)
<M> IP: ip fwmark masq-forwarding support (EXPERIMENTAL)
[*] IP: optimize as router not host
< > IP: tunneling
< > IP: GRE tunnels over IP
[*] IP: aliasing support
[ ] IP: ARP daemon support (EXPERIMENTAL)
[*] IP: TCP syncookie support (not enabled per default)
--- (it is safe to leave these untouched)
< > IP: Reverse ARP 
[*] IP: Allow large windows (not recommended if <16Mb of 
    memory)
< > The IPv6 protocol (EXPERIMENTAL) 


opções do lids no kernel -->
Linux Intrusion Detection System ---> 
[*] Linux Intrusion Detection System support (EXPERIMENTAL) 
--- LIDS features 
(1024) Maximum protected objects to manage 
(1024) Maximum ACL subjects to manage 
(1024) Maximum ACL objects to manage 
(1024) Maximum protected proceeds
[ ] Hang up console when raising a securit alert
[ ] Security alert when execing unprotected programs before 
    sealing LIDS
[*] Try not to flood logs
(60)Authorised time between two identic logs (seconds)
[*] Allow switching LIDS protections 
(3)Number of attempts to submit password
(3) Time to wait after a fail (seconds)
[ ] Allow remote users to switch LIDS protections
[ ] Allow any program to switch LIDS protections
[*] Allow reloading config. File
[*] Port Scanner Detector in kernel
[*] Send security alerts through network 
[ ] Hide klids kernel thread 
(3) Number of connection tries before giving up
(30)Sleep time after a failed connection
(16)Message queue size


Muito bem, agora recompile seu kernel normalmente como sempre faz. Adicione a imagem no seu gerenciador de inicialização e tudo mais. Pronto, seu kernel tem suporte ao LIDS.

2.2 - Instalando Lidsadm & Lidsconf


Entre na pasta onde você descompactou o LIDS:

$ tar -zvxf lidstools-version.tar.gz
$ cd lidstools-version
$ ./configure
$ make
$ su -
# make install


Junto ao LIDS, a versão que vem do lidstools já é antiga, puxe a versão 0.5.1 na página do LIDS e compile ela.

Muito bem, depois que terminar de compilar ele vai pedir uma senha, coloque uma que se lembre depois, porque ela será muito importante.

Depois que você instalar poderá ver se está tudo rodando perfeitamente:

$ lidsadm -v

Ele retornará a versão do lidsadm.

Bom... Primeira DICA: não reinicie seu sistema ainda ou então ele estará totalmente bloqueado. Recomendo-lhe limpar todas as funções do LIDS antes de reiniciar.

Se você olhar em /etc/lids/, teremos 2 arquivos:

Lids.cap -> Arquivo com as funções de capabilities
Lids.conf -> com as Entradas de configuração que editaremos

São os principais que usaremos.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução ao LIDS
   2. Instalando o LIDS
   3. Conhecendo o LIDS
   4. Configurando o LIDS
   5. Configurações básicas para o sistema
   6. Considerações finais
Outros artigos deste autor

SECtool - Análise Local para Linux

PaX: Solução eficiente para segurança em Linux

Carnivore e Altivore: Os predadores do FBI

OpenVZ: Virtualização para servidores Linux

Segurança extrema com LIDS: novos recursos

Leitura recomendada

Segurança Física (Parte 1)

SELinux - Segurança em Servidores GNU/Linux

Como assinar digitalmente um documento criado no Br/OpenOffice

Os segredos da criptografia com o Gcipher

Malware, Vírus e Hacking. Estamos seguros usando Linux?

  
Comentários
[1] Comentário enviado por fabio em 21/02/2004 - 12:34h

Já cansei de ouvir falar sobre LIDS, mas como nunca dei a devida atenção para segurança, nunca tinha procurado saber do que se tratava. Lendo esse artigo agora posso afirmar, essa é uma ferramenta fantástica. Parabéns!

[2] Comentário enviado por viniciusr em 22/02/2004 - 00:44h

parabens spawn... D:
meu maninho :X
root (un)security comming...

[3] Comentário enviado por Copyleft em 22/02/2004 - 13:07h

Oi, muito bom o artigo, fiz tudo, estou apenas tendo algumas respostas diferentes em relacao as regras e duvidas (de lei:)).
/sbin/lidsconf -A -s /usr/local/apache/bin/httpd -o /etc/httpd -j READONLY
lidsconf: cannot find the object file
/sbin/lidsconf -A -o /etc/lilo.conf -j DENY
lidsconf: the type is less than default permssion, this rule is useless
Estes sao apenas alguns exemplos, na maioria esta funcionado, alguem sabe qual meu erro aqui, no FAQ do site parecem ser as mesmas...alguem sabe de outro local com algumas?
Estava lendo (um livro muito velho), nele recomenda-se deixar o
[ ] Security alert when execing unprotected programs before
sealing LIDS selecionado, qual valor vcs recomendam?
E a respeito do 30:CAP_INIT_KILL, melhor deixar + ou -?
Desde ja agradeco pela ajuda:)



[4] Comentário enviado por Copyleft em 22/02/2004 - 14:22h

Voltei, bom eu dei uma olha e vi que estas menssagens sao bugs...nao se deve usar o lidstools-0.5.1 e lidstools-0.5.2 com kernel 2.4.24, nesta ja aproveitei e instalei o kernel 2.6.2 com o lids-2.0.4pre1-2.6.2 e lidstools-0.4 (recomendado), pelo fato desta versao ter uns lances de bloquear worms em HTTP, FTP, POP3, mas ta em desenvolvimento...alguem aqui esta usando, caso esteja, ta dando muito pau?
Se colocar assim funciona:
lidsconf -A -o /etc/ipsec.secrets -j DENY
lidsconf -A -o /etc -j READONLY
Se inverter nao rola:
lidsconf -A -o /etc -j READONLY
lidsconf -A -o /etc/ipsec.secrets -j DENY
Tem este patch pra corrigir:
-------------------------------------------------------------
diff -u -r1.1.1.1 lidsconf.c
--- lidsconf.c 17 Feb 2004 06:20:27 -0000 1.1.1.1
+++ lidsconf.c 20 Feb 2004 05:29:07 -0000
@@ -802,7 +802,7 @@
exit_error(2,"you must define the default rules for object
files");
}
/* if current type have less persmission of defualt _rule */
- if( type < default_rule ) {
+ if( type < default_rule && !sys_cap ) {
exit_error(2,"the type is less than default permssion, this rule is
useless"); }
}
------------------------------------------------------------
Acho que devemos testar algumas coisas antes de publicarmos,principalmente o que envolve seguranca.
Em todo caso valeu pelo artigo publicado, desperto meu interesse nesta ferramenta, to gostando muito dela.
PS. To rodando no 2.6.2 e ta indo.

[5] Comentário enviado por y2h4ck em 23/02/2004 - 01:54h

CopyLeft se vc pudesse me adicionar em seu icq para conversarmos melhor sobre o LIDS... ficarei muito grato obrigado :)

[6] Comentário enviado por y2h4ck em 25/02/2004 - 17:41h

A proposito nao tive bug nenhum em minha instalacao creio que seria mais interessante reinstalar pq deve ter dado algum problema por ai ... aqui ele esta funcionando perfeitamente num servidor de missao critica com mais de 200 dias de Uptime ... portanto meu amigo ... antes de vc vir falar para mim testar algumas coisas ... acho melhor VC ver se esta fazendo a coisa direito ...
mas obrigado pelo post ate mais :)

[7] Comentário enviado por Copyleft em 26/02/2004 - 00:03h

Sem duvida nao eh aqui o erro, eh um bug, tanto que se vc perceber o patch foi escrito no dia idsconf.c 20 Feb 2004 05:29:07 , nao teria como ter sido eu que escrevi, sendo que instalei no dia 22, quem afirma que eh um bug eh o responsavel como segue:
It is a bug..try following patch


------------------------- cut here ---------------------------------------------------
diff -u -r1.1.1.1 lidsconf.c
--- lidsconf.c 17 Feb 2004 06:20:27 -0000 1.1.1.1
+++ lidsconf.c 20 Feb 2004 05:29:07 -0000
@@ -802,7 +802,7 @@
exit_error(2,"you must define the default rules for object
files");
}
/* if current type have less persmission of defualt _rule */
- if( type < default_rule ) {
+ if( type < default_rule && !sys_cap ) {
exit_error(2,"the type is less than default permssion, this rule is
useless"); }
}
---------------------- cut here -----------------------------------------------------------

The problem is, this checking should only performance on all the acl with a "SUBJECT", for
other acl without a "SUBJECT", you can do any thing you want..:-).

Thanks for reporting the bug! It will be release in next version.

Huagang

Desculpe se pareceu que quis desprestigiar seu trabalho, se vc diz que nao teve problemas acredito, nao uso icq por isso nao entrei em contato.

[8] Comentário enviado por removido em 15/12/2006 - 07:15h

Legal seu artigo, só não concordei com o título. O LIDS é uma ótima ferramenta que pode até fazer um sistema extremamente seguro, mas com as regras que você colocou no artigo, não achei o artigo corresponde com o título. Mas de qualquer modo parabéns por esse artigo e pelo seus artigos disponibilizados no site do LIDS. Principalmete pela tradução do artigo feito pelo criador do LIDS!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts