Linux Security Auditing Tool (lsat) é uma ferramenta de auditoria de segurança pós-instalação. Foi feita para design modular e novas funcionalidades podem ser adicionadas rapidamente. Ele verifica as entradas inetd e faz varreduras em pacotes RPM desnecessários. Ela está sendo desenvolvida e expandida para trabalhar com outras distribuições
Linux além do Red Hat (originalmente criada para esta distro) e verifica as versões do kernel.
A saída da varredura do relatório fica em um arquivo lsat.out. Em execuções subsequentes a saída estará no lsat.old anterior.
Para instalar esta ferramenta nós utilizamos o
Ubuntu 9.10, mas provavelmente como toda boa ferramenta, há versões em outros variantes do Linux. Não vamos entrar em detalhes nisso, de como instalar em outros Linux, mas seguindo a receita "a la Debian"...
Passo 1:
# apt-get install lsat
Passo 2:
# man lsat
Sintaxe:
lsat [OPÇÂO]
Suas principais opções são:
- -d - verifica se há inconsistência através de uma comparação com o comando diff entre o número de integridade gerado pelo md5 com um outro anterior, no formato lsatmd5.diff
- -m <distribuição> - força um teste específico para uma distro. Você pode checar na sua distro usando os nomes: redhat, debian, mandrake, solaris, gentoo
- -h - ajuda
- -a - exibe ajuda avançada
- -o <arquivo> - arquivo de saída (resultados), o padrão é last.out
- -r - verifica a integridade de um arquivo rpm. Apenas para RedHat ou Mandrake
- -s - verificação silenciosa, sem arquivo de saída
- -x <arquivo> - aqui "arquivo" é um arquivo de texto contendo os módulos que não serão usados na verificação. Eles são separados por vírgulas, tab ou "nova linha", com os nomes dos módulos que você NÃO quer usar.
- -v - modo verbose
- -w - saída de arquivo no formato .html
Nomes do módulos (uma pequena descrição):
- bpass - verifica a senha do carregador de boot
- cfg - verifica runlevel daemons (redhat)
- dotfiles - verifica dotfiles
- files - verifica sticky bits etc
- forward - verifica network forwarding
- ftpusers - verifica arquivos dos usuários com falhas em ftp
- inetd - verifica serviços desnecessários
- inittab - verifica runlevel etc.
- ipv4 - verifica por outras coisas sobre ipv4
- issue - verifica banners no arquivo issue
- kbd - verifica permissões kbd/login
- limits - verifica limites dos arquivos
- logging - verifica tamanho do que está sendo logado
- md5 - testa o md5 de todos os arquivos do sistema
- modules - verifica por módulos carregados no kernel.
- net - verifica rede
- open - verifica arquivos abertos
- passwd - verifica arquivo passwd com falhas
- perms - verifica permissões nos arquivos
- pkgs - verifica por pacotes não achados
- promisc - verifica se você está em modo promíscuo na interface de rede
- rc - verifica arquivos perdidos em arquivos rc
- rpm - testa/verifica a integridade de arquivos rpm
- securetty - verifica se o terminal tty se é seguro
- set - verifica por arquivos SUID
- ssh - verifica arquivo de configuração do ssh
- startx - verifica se há alguma porta tcp "ouvindo" no X
- umask - verifica umask padrão
- write - verifica arquivos de leitura/gravação
- www - saída de arquivo em formato .html
Módulos:
Atualmente estes são os módulos usados numa varredura padrão: checkbpass, checkdotfiles, checkfiles, checkftpusers, checkhostsfiles, checkinetd, checkipv4, checkissue, checkkbd, checklimits, checkmodule, checkmd5, checknet, checknetforward, checknetp, checkopenfiles, checkpasswd, checkperms, checkpkgs, checkrc, checkrpm, checksecuretty, checkset, checkssh, checkumask, checkwrite e checkwww. Há também uma breve descrição em cada módulo.
Escrever novos módulos é muito simples, basta ver o arquivo README.modules para mais informações. ;)
Quem sabe no próximo artigo?
Exemplo:
# lsat
Starting LSAT...
Getting system information...
Running modules...
Running checkpkgs module...
Running checkinetd module...
Running checkhostsfiles module...
Running checkinittab module...
Running checklogging module...
Running checkset module...
Running checkwrite module...
Running checkdotfiles module...
Running checkpasswd module...
Running checkfiles module...
Running checkumask module...
Running checkftpusers module...
Running checkrc module...
Running checkkbd module...
Running checklimits module...
Running checkssh module...
Running checkopenfiles module...
Running checkissue module...
Running checkwww module...
Running checkmd5 module...
Dependendo do seu sistema o arquivo gerado pode conter 1,2MB ou mais (o equivalente a quase 25000 linhas de log e comentários de segurança), no caso de HD de 160GB.
Fizemos uma máquina virtual e testamos, veja.
Vamos ver alguns comentários no arquivo lsat.out:
# cat lsat.out | less
ou
# gedit lsat.out
Por favor, considere a remoção dos pacotes
****************************************
Please consider removing these packages.
bind9-host
libbind9-50
libindicate-gtk1
libindicate3
libmail-sendmail-perl
webmin
Por favor, comente todas as informações do intetd.conf
****************************************
Please comment out all of these from inetd.conf.
****************************************
Lines found in hosts.allow
Make sure you wish to allow the following:
****************************************
Did not find ALL:ALL in hosts.deny.
Lines found in hosts.deny:
Por padrão o init level não está setado em nível 5. Bom!
****************************************
default init level is not set to 5. Good.
****************************************
Consider placing: auth.*
/var/log/secure
in your /etc/syslog.conf file.
****************************************
Consider placing: authpriv.*
/var/log/secure
in your /etc/syslog.conf file.
Os últimos 100 (ou menos) login falhados no seu sistema
****************************************
The last 100 (or less) failed login attempts on the system
Login Falhas Máximo Recente Em
root 0 0 12/31/69 21:00:00 -0300
daemon 0 0 12/31/69 21:00:00 -0300
bin 0 0 12/31/69 21:00:00 -0300
sys 0 0 12/31/69 21:00:00 -0300
sync 0 0 12/31/69 21:00:00 -0300
games 0 0 12/31/69 21:00:00 -0300
man 0 0 12/31/69 21:00:00 -0300
lp 0 0 12/31/69 21:00:00 -0300
mail 0 0 12/31/69 21:00:00 -0300
news 0 0 12/31/69 21:00:00 -0300
uucp 0 0 12/31/69 21:00:00 -0300
proxy 0 0 12/31/69 21:00:00 -0300
www-data 0 0 12/31/69 21:00:00 -0300
backup 0 0 12/31/69 21:00:00 -0300
list 0 0 12/31/69 21:00:00 -0300
irc 0 0 12/31/69 21:00:00 -0300
gnats 0 0 12/31/69 21:00:00 -0300
nobody 0 0 12/31/69 21:00:00 -0300
libuuid 0 0 12/31/69 21:00:00 -0300
syslog 0 0 12/31/69 21:00:00 -0300
messagebus 0 0 12/31/69 21:00:00 -0300
hplip 0 0 12/31/69 21:00:00 -0300
haldaemon 0 0 12/31/69 21:00:00 -0300
kernoops 0 0 12/31/69 21:00:00 -0300
polkituser 0 0 12/31/69 21:00:00 -0300
saned 0 0 12/31/69 21:00:00 -0300
gdm 0 0 12/31/69 21:00:00 -0300
speech-dispatcher 0 0 12/31/69 21:00:00 -0300
supervisor 0 0 12/31/69 21:00:00 -0300
snort 0 0 12/31/69 21:00:00 -0300
havp 0 0 12/31/69 21:00:00 -0300
clamav 0 0 12/31/69 21:00:00 -0300
mysql 0 0 12/31/69 21:00:00 -0300
Debian-exim 0 0 12/31/69 21:00:00 -0300
dansguardian 0 0 12/31/69 21:00:00 -0300
festival 0 0 12/31/69 21:00:00 -0300
ntp 0 0 12/31/69 21:00:00 -0300
mrpa 0 0 12/31/69 21:00:00 -0300
logcheck 0 0 12/31/69 21:00:00 -0300
Lista de arquivos com permissão SUID no sistema:
****************************************
This is a list of SUID files on the system:
/sbin/mount.ecryptfs_private
/bin/umount
/bin/su
/bin/fusermount
/bin/ping
/bin/mount
/bin/ping6
/lib/dbus-1.0/dbus-daemon-launch-helper
Lista de arquivos/diretórios com permissão SGID no sistema:
****************************************
This is a list of SGID files/directories on the system:
/sbin/unix_chkpwd
/etc/ppp/peers
/etc/chatscripts
/etc/logcheck/violations.d
/etc/logcheck/cracking.ignore.d
/etc/logcheck/cracking.d
/etc/logcheck/ignore.d.paranoid
/etc/logcheck/ignore.d.workstation
/etc/logcheck/ignore.d.server
/etc/logcheck/violations.ignore.d
/srv/cvs
/srv/cvs/CVSROOT
/srv/cvs/CVSROOT/Emptydir
Lista de arquivos normais em /dev. MAKEDEV está ok, mas
os outros não
****************************************
List of normal files in /dev. MAKEDEV is ok, but there
should be no other files:
/dev/.blkid.tab
/dev/.blkid.tab.old
/dev/.udev/queue.bin
/dev/.udev/db/block:sda9
/dev/.udev/db/block:sda8
/dev/.udev/db/block:sda7
/dev/.udev/db/block:sda6
/dev/.udev/db/block:sda5
/dev/.udev/db/block:sda15
/dev/.udev/db/block:sda14
/dev/.udev/db/block:sda12
/dev/.udev/db/block:sda11
/dev/.udev/db/block:sda10
/dev/.udev/db/input:event6
/dev/.udev/db/sound:card0
/dev/.udev/db/sound:controlC0
/dev/.udev/db/sound:hwC0D0
/dev/.udev/db/sound:audio
/dev/.udev/db/sound:pcmC0D0c
/dev/.udev/db/sound:adsp
/dev/.udev/db/sound:pcmC0D1c
/dev/.udev/db/sound:pcmC0D2c
/dev/.udev/db/sound:pcmC0D1p
/dev/.udev/db/sound:dsp
/dev/.udev/db/sound:pcmC0D0p
/dev/.udev/db/sound:mixer
/dev/.udev/db/sound:card1
/dev/.udev/db/net:wlan0
/dev/.udev/db/sound:adsp1
/dev/.udev/db/sound:dsp1
/dev/.udev/db/sound:pcmC1D0c
/dev/.udev/db/sound:controlC1
/dev/.udev/db/sound:audio1
/dev/.udev/db/sound:pcmC1D1c
/dev/.udev/db/sound:mixer1
/dev/.udev/db/video4linux:video0
/dev/.udev/db/video4linux:vbi0
/dev/.udev/db/video4linux:radio0
/dev/.udev/db/input:event5
/dev/.udev/db/sound:sequencer2
/dev/.udev/db/sound:sequencer
/dev/.udev/db/block:sda1
/dev/.udev/db/block:sda13
/dev/.udev/db/block:sda2
/dev/.udev/db/block:sdd
/dev/.udev/db/block:sda
/dev/.udev/db/block:sdc
/dev/.udev/db/block:sde
/dev/.udev/db/block:sdb
/dev/.udev/db/sound:seq
/dev/.udev/db/sound:timer
/dev/.udev/db/input:mouse1
/dev/.udev/db/input:event4
/dev/.udev/db/input:event1
/dev/.udev/db/input:event3
/dev/.udev/db/input:event0
/dev/.udev/db/input:event2
/dev/.udev/db/block:sr0
/dev/.udev/db/block:ram9
/dev/.udev/db/block:loop7
/dev/.udev/db/block:ram7
/dev/.udev/db/block:ram5
/dev/.udev/db/block:ram2
/dev/.udev/db/block:loop2
/dev/.udev/db/block:ram4
/dev/.udev/db/block:ram0
/dev/.udev/db/block:ram14
/dev/.udev/db/block:ram15
/dev/.udev/db/block:ram12
/dev/.udev/db/block:ram13
/dev/.udev/db/block:ram11
/dev/.udev/db/block:loop1
/dev/.udev/db/block:ram10
/dev/.udev/db/net:eth0
/dev/.udev/db/block:loop3
/dev/.udev/db/block:ram1
/dev/.udev/db/block:loop5
/dev/.udev/db/block:loop6
/dev/.udev/db/block:ram8
/dev/.udev/db/block:loop4
/dev/.udev/db/block:ram3
/dev/.udev/db/block:ram6
/dev/.udev/db/block:loop0
/dev/.udev/db/usb:1-9
/dev/.udev/db/usb:usb2
/dev/.udev/db/usb:usb1
/dev/.initramfs/varrun/sendsigs.omit
/dev/.initramfs-tools
Lista de arquivos com permissão de gravação
****************************************
This is a list of world writable files
/etc/rc.local
Esta é uma lista de grupo de arquivos graváveis
****************************************
This is a list of group writable files
/etc/pam.d/webmin
/etc/rc.local
/srv/cvs/CVSROOT/.#cvswrappers
/srv/cvs/CVSROOT/.#checkoutlist
/srv/cvs/CVSROOT/.#preproxy
/srv/cvs/CVSROOT/.#posttag
/srv/cvs/CVSROOT/.#rcsinfo
/srv/cvs/CVSROOT/.#verifymsg
/srv/cvs/CVSROOT/.#loginfo
/srv/cvs/CVSROOT/val-tags
/srv/cvs/CVSROOT/.#modules
/srv/cvs/CVSROOT/.#postproxy
/srv/cvs/CVSROOT/.#commitinfo
/srv/cvs/CVSROOT/.#config
/srv/cvs/CVSROOT/history
/srv/cvs/CVSROOT/.#postwatch
/srv/cvs/CVSROOT/.#notify
/srv/cvs/CVSROOT/.#postadmin
/srv/cvs/CVSROOT/.#taginfo
Lista de grupo de diretórios de graváveis:
****************************************
List of group writable directories:
/file0001
/backup
/file0004
/tmp
/file0003
/file0002
Lista de pastas com permissão de gravação
****************************************
List of world writable directories:
/backup0001
/backup0002
/tmp
/srv/cvs
/srv/cvs/CVSROOT
/srv/cvs/CVSROOT/Emptydir
/file0002
Lista dos arquivos .exrc encontrados no sistema
****************************************
This is a list of .exrc files found
Lista dos arquivos .forward encontrados no sistema
****************************************
This is a list of .forward files found on the system:
Lista dos arquivos .rhosts encontrados no sistema
****************************************
This is a list of .rhosts files found on the system:
Lista dos arquivos .netrc encontrados no sistema
****************************************
This is a list of .netrc files found on the system
Lista dos arquivos dotfiles encontrados no sistema
****************************************
This is a list of dotfiles found on the system
Por favor, considere a remoção destas contas de sistema.
Verifique se você irá precisar delas para aplicações de seu
sistema antes de remover. Além disso, consulte o arquivo
securitylinks.txt para mais informações.
****************************************
Please consider removing these system accounts.
Check to see if you need them for your system applications before
removing. Also, consult the securitylinks.txt file for more
information.
sync
man
lp
news
uucp
As seguintes contas são SUID 0 no arquivo /etc/passwd.
Retire se necessário.
****************************************
The following accounts are SUID 0 in /etc/passwd.
Remove if needed.
Remova as seguintes entradas (se houver) dos
respectivos arquivos passwd/group
****************************************
Remove the following entries (if any) from the
respective passwd/group file(s)
As seguintes contas não tem senhas, ou não estão vazias
****************************************
The following accounts have no/empty passwords
Saída de pwck, nota diretórios inexistentes etc
****************************************
Output of pwck, note non existent directories, etc
Saída de grpck, nota em grupos que acho que devem ser excluídos.
****************************************
Output of grpck, note groups it think should be deleted.
Verificar por sticky bits em arquivos tmp
****************************************
Checks for sticky bits on tmp files
-> is not chmod 644.
Check above files for chmod 644.
Check above dirs to ensure root ownership.
****************************************
Lista de arquivos com nenhum usuário ou grupo:
****************************************
List of files with no user or group:
/home/firebits
/home/firebits/.profile
/home/firebits/.gegl-0.0
/backup/DVD1/registro/rfc/rfc3245.txt.pdf
.
.
.
(continua)
****************************************
Checking default umask on system:
Default umask should be 022, 027 or 077. 002 is ok for RedHat.
Here are the filenames, and the umask number
found in each. Please read through the file and ensure that is what you want.
/etc/oinkmaster.conf: = 0027
/etc/profile: 022
****************************************
While checking ftpusers...
/etc/ftpusers does not exist or is not readable.
This is ok if you are not root, not
running ftp or your ftp daemon
does not use /etc/ftpusers.
Please triple check your configuration
and ensure you do not need /etc/ftpusers.
*****************************************
****************************************
Checking rc startup scripts:
These services were found in /etc/rc(2/3).d
Consider removing or disabling unneeded services.
****************************************
****************************************
Default limits hashed out in limits.conf.
Check /etc/security/limits.conf for the default entry.
Make sure to set hard and soft limits for default "*",
or for individual users.
****************************************
Output from ulimit, check to see if these are reasonable limits.
Resource limits can help prevent DOS attacks,
read up on them if you need to.
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 8192
coredump(blocks) 0
memory(kbytes) unlimited
locked memory(kbytes) 64
process unlimited
nofiles 1024
vmemory(kbytes) unlimited
locks unlimited
****************************************
sshd config file entries
Make sure these are commented out.
****************************************
Protcol 2 not found in sshd config, or you are doing 1,2.
Change to protcol 2 only.
****************************************
This is the lsof output, diff this against a previous run.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 23640 supervisor 58u IPv4 148387 0t0 TCP
192.168.1.2:40714->avocado.canonical.com:www (ESTABLISHED)
****************************************
/etc/issue exists. Make sure it does not have any
system specific information in it.
****************************************
/etc/issue.net exists. Make sure it does not have any
system specific information in it.
****************************************
/etc/motd exists. Make sure it does not have any
system specific information in it.
****************************************
/etc/banners dir not found.
Check securitylinks.txt for more info.
****************************************
No ExecCGIs found. Good.
****************************************
Check lsatmd5.out for output of checkmd5.
If this is a subsequent run, old one is called lsatmd5.out.old
Bom, não vou traduzir todo o log, você tem que se iterar também. ;)
Caso você tenha habilitado o módulo checkmd5, será gerado um enorme arquivo lsatmd5.out:
# gedit lsatmd5.out
.
.
.
a54d861749157cc576744d50d8d2d773 /etc/apache2/mods-available/authn_default.load
ea99aba14e9aa25c27653b9958239a6e /etc/apache2/mods-available/cache.load
bf972e82336c72b20d67d871ef77d4ce /etc/apache2/mods-available/authz_groupfile.load
2db2247ae37ae1e2bf9bf35413c14ab7 /etc/apache2/mods-available/status.conf
17f662fd023dbaaab9d89f9a11ae58c1 /etc/apache2/mods-available/dav_fs.load
ba7d09162b65d09397bd58be33138e4d /etc/apache2/mods-available/headers.load
e058e03c1d4f9e4d8e2c439ed75cc501 /etc/apache2/mods-available/proxy_ajp.load
f9b9a0503caeb92985bd840a28f5e5b9 /etc/apache2/mods-available/asis.load
d65845f053d08b82da239c73c9094c35 /etc/apache2/mods-available/authnz_ldap.load
86e21a672a4f245715a788f9873174ed /etc/apache2/mods-available/authn_dbd.load
9ed1ea15654bb594453438154b642539 /etc/apache2/mods-available/authz_owner.load
faad09687e64ebb9670aa0b8095d6642 /etc/apache2/mods-available/dav_lock.load
8a36e9a5542c8e24df6170052a31b62b /etc/apache2/mods-available/info.conf
8c13524d3a4955810e6434ff388c3168 /etc/apache2/mods-available/deflate.conf
51f3d40cb47a4bd739dedf1e6d69e646 /etc/apache2/mods-available/authz_dbm.load
50e63dc17612e22484a88f537e8aec8e /etc/apache2/mods-available/substitute.load
ed469867552a1145b8c3ffa5780ff83e /etc/apache2/mods-available/dav.load
3e8963a7df7c047be50a552d80a4f853 /etc/apache2/mods-available/env.load
b6882491a6d2b823da960f19a50b132f /etc/apache2/mods-available/dir.conf
735ac5f246738e11a53f6c515b8dfc48 /etc/apache2/mods-available/ldap.load
f03fe275174a5ed97b0f5f5726ccea60 /etc/apache2/mods-available/dbd.load
e3516d1fe624e456789497996a8c731c /etc/apache2/mods-available/dav_fs.conf
3d3719c88d01152e817f74fc2fd6ce9e /etc/apache2/mods-available/proxy.load
7177e2427eb7c78f1ab10c034a809793 /etc/apache2/mods-available/log_forensic.load
.
.
.
Caso haja uma diferença do md5sum de cada arquivo, algo mudou automaticamente (por exemplo, novas configurações e atualizações, outra situação, talvez você mesmo tenha mudado ou provavelmente você teve seu computador invadido).
Bom, depois de uma longa demora, afinal esta ferramenta verifica todo seu sistema, qual gerará muito acesso a disco, corre-se o risco do computador ficar lento a ponto de quase travar todo o sistema.
Obs.: Não é recomendável realizar o uso desta ferramenta em horário comercial, produção ou de pico, pois você poderá ter problemas com os usuários que irão reclamar da demora dos serviços.
Por isso, programe a varredura no CRON, para varrer à noite ou em outro horário menos utilizado, gerando menos problemas de lentidão.
Espero ter ajudado.
Visite o site
www.backtrack.com.br/forum.html para outras novidades.