sábado, 25 de agosto de 2012

Slackware com GRSecurity

GRSecurity, é um patch para kernel, que visa um controle baseado em regras, onde podemos dizer que seria um Hardening para Kernel.

Para maiores informações segue o link do projeto:

http://grsecurity.net/

De acordo a versão stable do projeto até a escrita deste artigo, a versão  a ser utilizada é a 3.2.28.

http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.28.tar.bz2

Patch GRSecurity

http://grsecurity.net/stable/grsecurity-2.9.1-3.2.28-201208232048.patch

Vamos iniciar a compilação do kernel:



Em Security Options:



Selecione GRSecurity:


Abaixo você terá os menus de configuração, selecione as opções de acordo ao uso necessário, lembrando que é bom ler a documentação antes.


Após a seleção siga com as etapas finais de compilação do Kernel:



Adicione uma segunda entrada no Lilo apontando para o novo Kernel:

Vamos a instalação de mais dois pacotes, o paxctl e pax-utils.

wget http://pax.grsecurity.net/paxctl-0.7.tar.bz2

wget http://distfiles.exherbo.org/distfiles/pax-utils-0.4.tar.xz

Instalação padrão make e make install para ambos.

Agora vamos da um restart no servidor e visualizar o mesmo já utilizando Grsecurity:


Veja até o símbolo mudou : - )

Podemos visualizar com o comando dmesg a ação já tomada direto no boot do sistema:


 Agora com a instalação do gradm, porém vamos compilar sem a opção de uso do PAM:

Vamos iniciar:

# gradm -P admin
# gradm -P shutdown
# gradm -E

Sugiro ler a documentação antes de por em produção, um exemplo se não tiver ciência do que ativar no kernel, até mesmo um simples scp de uma máquina para outro vai ser negado:

Aug 25 16:58:25 unbrokeable kernel: [  391.827246] grsec: From 192.168.1.33: (default:D:/usr/sbin/sshd) denied open of /proc/1557/oom_score_adj for writing by /usr/sbin/sshd[sshd:1557] uid/euid:0/0 gid/egid:0/0, parent /usr/sbin/sshd[sshd:1497] uid/euid:0/0 gid/egid:0/0
Aug 25 16:58:25 unbrokeable kernel: [  391.874415] grsec: From 192.168.1.33: (default:D:/usr/sbin/sshd) denied access to hidden file /var/empty by /usr/sbin/sshd[sshd:1557] uid/euid:0/0 gid/egid:0/0, parent /usr/sbin/sshd[sshd:1497] uid/euid:0/0 gid/egid:0/0
Aug 25 16:58:25 unbrokeable sshd[1557]: fatal: Missing privilege separation directory: /var/empty

No próximo artigo, vamos falar mais sobre o gradm2 e o pax-utils.

segunda-feira, 23 de abril de 2012

LMD - Linux Malware Detect - SlackWare

Neste post estarei falando sobre uma ótima ferramenta de detecção de Malware, o LMD (Linux Malware Detect).

Vamos a instalação:

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

tar -xvf maldetect-current.tar.gz

cd maldetect-*

sh install.sh


O arquivo de configuração:

/usr/local/maldetect/conf.maldet

Abaixo segue um exemplo:



Uma alteração importante a ser feita para o Slackware é a alterar a variável do inotify_webdir.

Por default estará desta forma:

inotify_webdir=public_html

Alteramos para:

inotify_webdir=/var/www/htdocs


Após estes passos vamos começar a monitorar

Criamos um arquivo onde nele incluíremos os PATHS que vamos estar monitorando em realtime:

root@boot-v1:/etc/scripts# cat maldet_path.sh
/home
/tmp
/var/www/htdocs/

Depois vamos executar a monitoração conforme abaixo:

root@boot-v1:/etc/scripts# maldet --monitor /etc/scripts/maldet_path.sh
Linux Malware Detect v1.4.1
            (C) 2002-2011, R-fx Networks
            (C) 2011, Ryan MacDonald
inotifywait (C) 2007, Rohan McGovern
This program may be freely redistributed under the terms of the GNU GPL v2

maldet(7607): {mon} set inotify max_user_instances to 128
maldet(7607): {mon} set inotify max_user_watches to 46080
/usr/bin/wc: /usr/local/maldetect/sess/inotify.paths.7607: No such file or directory
maldet(7607): {mon} added /home to inotify monitoring array
maldet(7607): {mon} added /tmp to inotify monitoring array
maldet(7607): {mon} added /var/www/htdocs/ to inotify monitoring array
maldet(7607): {mon} starting inotify process on 3 paths, this might take awhile...
maldet(7607): {mon} inotify startup successful (pid: 7695)
maldet(7607): {mon} inotify monitoring log: /usr/local/maldetect/inotify/inotify_log




Segue um trecho do Log, onde a monitoração em realtime vai nos avisar de uma possível alteração dentro do diretório:


root@boot-v1:/usr/local/maldetect/inotify# tail -f inotify_log
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44
/usr/local/maldetect/inotify/inotify_log MODIFY 27 Feb 21:55:44



Para maiores informações cisite o site oficial:


http://www.rfxn.com

domingo, 22 de abril de 2012

Monitorando Attacks SYN FLood com Floodmon


Segue uma breve descrição do FLoodmon retirado direto do site.

"Floodmon é um pequeno daemon em Perl,  usado para monitorar um servidor Linux, contra ataques de inundação SYN (Dos DDos).

Trabalha principalmente por ajustes, diretamente na pilha TCP/IP, usando ativação/desativação, tamanho das filas, tempo limite, e retransmissões.

Todas as modificações são feitas em tempo real no sistema em '/ proc'.

Possui 4 níveis de proteção, cada um com sua própria configuração e pode ser bastante agressivo, se necessário.

Pode alertar o administrador de um possível ataque por e-mail ou SMS.

No envio de e-mail, os relatórios são detalhados incluem uma captura dos segmentos SYN para análise."

Vamos utilizar o build do link para podermos criar o pacote versão Slackware.

http://slackbuilds.paissad.net/floodmon/floodmon.SlackBuild

Após a intalação do Floodmon, vamos configurá-lo:

Os arquivos de configuração vai estar em /etc/floodmon.conf

echo 5120 > /proc/sys/net/core/somaxconn

Segue abaixo um exemplo do arquivo floodmon.conf:


Segue a saída do comando floodmon --stats:

root@boot-v1:~# floodmon --stats
[ ------------------- TCP ------------------- ]
- current SYN_RECV sockets  . . : 0
- sockets SYN_RECV reset  . . . : 0
- syncookies sent . . . . . . . : 0
- syncookies received . . . . . : 0
- invalid syncookies received . : 0
- failed connection attempts  . : 14
- received segments . . . . . . : 13,157
- sent segments . . . . . . . . : 8,383
- in/out seg. ratio . . . . . . : 1.569
[ ------------------ Route ------------------ ]
- null-routed IPs/blocks  . . . : 0
[ ------------------- IP -------------------- ]
- dropped packets (OutNoRoutes) : 0
[ ------------------ ICMP --------------------]
- received  . . . . . . . . . . : 0
- sent  . . . . . . . . . . . . : 0
- in/out ratio  . . . . . . . . : --
[ ------------------- UDP ------------------- ]
- received packets  . . . . . . : 2,521
- sent packets  . . . . . . . . : 2,521
- in/out ratio  . . . . . . . . : 1.000
[ ------------------ eth0 ------------------- ]
- total bytes received  . . . . : 10,089,066
- total bytes sent  . . . . . . : 1,190,331
- total packets received  . . . : 14,949
- total packets sent  . . . . . : 8,495
- in/out packets ratio  . . . . : 1.760
[ ------------------------------------------- ]

RKHunter Rootkit Detect

Neste artigo vou falar sobre uma ótima ferramenta para detecção de rootkit no sistema, além de detectar rootkits ela também informa de alguma má configuração no S.O que pode comprometer a integridade do mesmo.

Efetue o Download do Build:

http://downloads.sourceforge.net/rkhunter/rkhunter-1.3.8.tar.gz

http://slackbuilds.org/slackbuilds/13.37/system/rkhunter.tar.gz

Após efetuar o processo de instalação vamos efetuar o update e a primeira checagem no nosso S.O.

root@boot-v1:~# rkhunter --update
[ Rootkit Hunter version 1.3.8 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ No update ]
  Checking file programs_bad.dat                       [ No update ]
  Checking file backdoorports.dat                       [ No update ]
  Checking file suspscan.dat                                [ No update ]
  Checking file i18n/cn                                         [ No update ]
  Checking file i18n/de                                         [ No update ]
  Checking file i18n/en                                         [ No update ]
  Checking file i18n/zh                                         [ No update ]
  Checking file i18n/zh.utf8                                  [ No update ]


Vamos efetuar uma checagem:
root@boot-v1:~# rkhunter -c

Vamos automatizar um simples script e acrestar no cron:

root@boot-v1:/tmp# cat rkhunterexec.sh

#!/bin/bash

( /usr/bin/rkhunter --versioncheck
/usr/bin/rkhunter --update
/usr/bin/rkhunter --cronjob --report-warnings-only) | /usr/bin/mail -s "Rkhunter Output" thiago.laurito@gmail.com


Este script vai fazer as rotinas de update do database e versão.

Vamos adicioná-lo cron:

00 23 * * * /etc/scripts/rkhunter-script.sh -c --cronjob
 
Segue um log após checagem:
 
root@boot-v1:/var/log# tail -f rkhunter.log
[00:30:50] Rootkits checked : 251
[00:30:50] Possible rootkits: 0
[00:30:50]
[00:30:50] Applications checks...
[00:30:50] Applications checked: 6
[00:30:50] Suspect applications: 0
[00:30:50]
[00:30:50] The system checks took: 3 minutes and 25 seconds
[00:30:50]
[00:30:50] Info: End date is Sun Apr 22 00:30:50 BRT 2012
 

Arquivo do blog