Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
www.linuxsecurity.com.br
jccirqueira@microsigarp.com.br
Sr. Renato,
Sem dvidas a comunidade de administradores de redes,
analistas de segurana e fuadores de planto esto
muito gratos mais uma vez, agora pela criao desse
excelente veculo de informao. Seria excelente que
esse material fosse mensal e impresso. Sou cadastrado
no site, e apesar de nunca ter contribuido com nada,
sou muito grato por toda a informao disponibilizada.
Resposta: Muito obrigado Jos, faremos o possvel
para torn-la mensal assim que os esforos forem
suficientes. Muito obrigado por suas palavras de
incentivo e espero que goste dessa nova edio! No
se esquea tambm que essa revista no minha,
mas de toda a comunidade! Os agradecimentos so
todos direcionados a esses excelentes profissionais que
nos ajudaram.
Revista para venda
Rodrigo Trevisan
Analista de Sistemas Jr (Letti Tecnologia S/C Ltda.)
rodrigo@letti.com.br
Gostaria de saber se existe essa revista para venda
(pois pra mim e complicado imprimir aqui na empresa).
Gostei muito do conteudo, Voces estao de parabens
pela revista!!!
Resposta: Obrigado por suas palavras Rodrigo. Por
enquanto a revista est disponvel apenas online, para
que no haja custos ao usurio final, j que o objetivo
aqui apenas disseminar conhecimento ok?
Parabns pela Revista eletrnica
Andrey R. Freitas
Profissional de Anlise/desenvolvimento em Internet
andreyn@bol.com.br
Parabns pela iniciativa de criar uma revista
especialmente dedicada a segurana. Gostaria de saber como posso participar da elaborao da Revista
LinuxSecurity Magazine atravs de artigos ? De quanto
em quanto tempo ser lanado um novo nmero e
quantos artigos devero serem enviados ?
www.linuxsecurity.com.br
Agradecimento
Gostaria de agradecer a todos pelos mais
de
450
emails
recebidos
com
parabenizaes pela revista, sugestes,
dicas, e me desculpar pela relativa demora
para responder cada um deles. Como j
disse anteriormente, essa revista pertence
a todos vocs, ento retribuo a todos com
um grande e sincero MUITO OBRIGADO!
Revista LinuxSecurity
Adriano Filippin - SDCNet e-Solutions
adriano@sdcnet.com.br
Gostaria de parabenizar todos os responsveis pela
criao da LinuxSecurity Magazine, achei as materias
bem interessantes, estvamos mesmo precisando de
uma publicao desse tipo, principalmente para ns
que adotamos o ambiente Linux como nosso principal
sistema operacional, e pode ter certeza que vou ser
leitor assduo dessa revista. Parabns a todos.
www.linuxsecurity.com.br
ndice
07 - Como obter melhor performance do Apache no Unix
Fabio Wakim Trentini
14 - As 1001 utilidades do FreeBSD LiveCD
Edson Brandi
23 - slocate (Secure Locate)
Rubens Queiroz de Almeida
26 - Monitorando trfego de rede interna utilizando SASacct/RRDtool
Diogo Florenzano Avelino
colabarao de Marcus Maciel
30 - Monitorao com RRDTool
Rodrigo P. Telles
35 - Construindo filtros para o qmail
Diego Linke - Gamk
39 - Enriquecendo os Logs do seu sistema Unix e Facilitando a Auditoria Parte 2
Renato Murilo Langona
46 - RAID via Software em GNU/Linux - Recursos, Possibilidades e Apliaes
Jos Roberto Kerne
58 - Guia rpido para a configurao do Amavis com Postfix no Conectiva Linux 8.0
Emerson Reis
63 - Criptografia de disco
Jair Valmor Basso Jnior
68 - (In)Segurana Bsica no MySQL
Glaudson Ocampos
76 - Introduo Anlise Forense - Parte II
Leonardo Alcntara Moreira
79 - Sniffers - Bsico e Deteco
Sumit Dhar
87 - Corridas e chegadas
Izar Tarandach
91 - Vitaminando o velho Syslogd
Sandro Melo
101 - Usando o jail no FreeBSD
Jean Milanez Melo
www.linuxsecurity.com.br
Colaboradores
Diretor Executivo: Renato M. Langona
Diretor de Operaes: Renato M. Langona
Diretor de Marketing: Renato M. Langona
Colaboradores especiais: Luiz Gustavo M. Nozella
Editorial
da
www.linuxsecurity.com.br
www.linuxsecurity.com.br
O comeo de tudo
Sistemas
email: trentas@uol.com.br
Informaes Adicionais
consultor de sistemas do
UOLInc e mantm o site Apache
Brasil.
Site: http://www.apachebrasil.com.br
www.linuxsecurity.com.br
o mod_auth_digest.
EXPAT: Incorpora da biblioteca de
parsing de XML Expat, para mdulos do
Apache que processam XML. Na distribuio
do Apache no existe nenhum mdulo que
necessite dessa regra, mas se, por exemplo,
existir a necessidade de utilizar o mod_dav
(que um mdulo de terceiros), a Expat ser
requerida.
IRIXN32 e IRIXNIS: Regras especficas
para compilar o Apache na plataforma Irix
(SGI).
SHARED_CHAIN: Algumas plataformas
tm problemas em carregar bibliotecas
necessrias para certos mdulos, como por
exemplo, que o mod_ssl precisa carregar a
lib do openssl para subir. Essa regra corrige
o problema, por isso ela apenas deve ser
habilitada caso necessrio.
WANTHSREGEX: Esta regra habilita um
engine interno de processar regular
expressions, em vez de utilizar o prprio
engine do sistema operacional, que
normalmente suficiente.
Quando voc compila o Apache ele vem
com um limite hardcoded de 256 clientes
simultneos, que obviamente podemos
aumentar setando uma simples varivel de
ambiente, a CFLAGS.
Ao juntar todas as otimizaes, segue
abaixo um exemplo de como compilar o
Apache com limite de 2048 clientes
simultneos, todas as regras desabilitadas,
suporte a DSO e compilando todos os mdulos
(inclusive o experimental mod_mmap_static,
que ser falado adiante):
# export CFLAGS=DHARD_SERVER_LIMIT=2048'; \
./configure \
disable-rule=DEV_RANDOM \
disable-rule=EXPAT \
disable-rule=IRIXN32 \
disable-rule=IRIXNIS \
disable-rule=SHARED_CHAIN \
disable-rule=WANTHSREGEX \
enable-module=most \
enable-module=mmap_static \
enable-shared=max \
prefix=/usr/local/apache \
&& make && make install
Depois de instalar, podemos rodar strip
no executvel principal e em seus mdulos,
no intuito de remover as tabelas de smbolos,
assim:
# cd /usr/local/apache/ ; strip
bin/* libexec/*
MinSpareServers <nmero>
o nmero mnimo de processos que
ficam abertos sem atender a nenhuma
requisio, e se o Apache precisar criar mais
processos filhos ele vai aumentando o
MinSpareServers num algoritmo de
progresso geomtrica at atender a nova
demanda. O default 5, e deve ser
aumentado em sites de muito trfego. Nota
que se o MinSpareServers for maior que o
StartServers, o nmero de processos filhos
criados na inicializao ser o nmero setado
no MinSpareServers.
MaxSpareServers <nmero>
o nmero mximo de processos
que ficam abertos sem atender a nenhuma
requisio, para garantir que no caso de
um crescimento de demanda, j existam
processos prontos para atender as
requisies. O default 10, e novamente
em servidores com muito trfego e
possveis picos de audincia,
recomendado aumentar este nmero.
MaxClients <nmero>
No importa quantas requisies
simultneas o Apache pode atender, ele
respeitar o numero mximo de clientes
simultneos fixado nessa diretriz. Esta
diretriz importante para colocar um limite
fsico de at quanto o processo pai pode
gerar filhos, pois a cada filho criado um
pedao da memria RAM que se vai da
mquina em questo. O default 256, e
para aumentar este valor necessrio alterar
na hora da compilao, conforme descrito
no incio do artigo.
Keepalives e Timeouts
Quatro diretrizes mais importantes a
respeito de timeouts do HTTP, a seguir:
TimeOut <nmero>
Este timeout o tempo corrido desde
a conexo estabelecida ate o primeiro GET
do cliente, ou desde o ltimo ACK recebido
se ainda existem mais dados para vir. O
default 300 segundos, e pode ser reduzido
a at 60 segundos. Um tempo menor que
esse podem ocorrer alguns problemas
servindo arquivos com muitos bytes.
MaxRequestsPerChild <nmero>
KeepAlive <on|off>
www.linuxsecurity.com.br
10
ExpiresActive <on|off>
Esta diretriz habilita ou desabilita o
header de caching dos documentos servidos
em HTTP/1.1. Pode ser colocada dentro de
um
<Directory>,
<Location>,
<VirtualHost>, etc...
ExpiresDefault <cdigo+nmero>
O cdigo citado serve se voc quer
cachear por data de modificao (mtime)
ou de acesso (atime), mais o nmero de
segundos de expirao. Codificando o
exemplo do site de notcias acima,
chegamos ao seguinte trecho:
<Location /noticias>
ExpiresActive on
ExpiresDefault M3600
</Location>
ExpiresByType <mime-type>
<cdigo+nmero>
www.linuxsecurity.com.br
11
12
www.linuxsecurity.com.br
13
www.linuxsecurity.com.br
14
As
Um pouco de Histria
Informaes Adicionais
Trabalha profissionalmente com FreeBSD desde 1995
tendo atuado como consultor junto a vrias empresas
nos ltimos anos. um membro ativo da comunidade
FreeBSD, sendo o responsvel pelo site FreeBSD
Primeiros Passos (www.primeirospassos.org),
fundador do Grupo Brasileiro de Usurios FreeBSD
(www.fugspbr.org), responsvel pelo projeto FreeBSD
LiveCD(livecd.sourceforge.net). Atualmente trabalha
como
Gerente
de
Tecnologia
no
iBest
(www.ibest.com.br).
Site:
www.linuxsecurity.com.br
15
16
17
www.linuxsecurity.com.br
18
fi
if [ -r ${i}/freebsd/X11R6.flp ]; then
vnconfig -c /dev/vn8c ${i}/freebsd/X11R6.flp
sleep 2
mount /usr/X11R6
fi
fi
done
# Verifica se os virtual nodes foram montados (atraves de um arquivo de
controle)
# se encontrar o arquivo da a particao como montada, se nao encontrar
gera a particao
# em MFS e descompacta os arquivos necessarios.
#
if [ -r /tmp/XYZ123_ ]; then
echo O /tmp foi montado via virtual node
else
mount_mfs -s 32768 -c 20 -o nodev,noexec,nosuid,noatime swap /
tmp 2>&1
echo Gerando /tmp em MFS
fi
if [ -r /var/XYZ123_ ]; then
echo O /var foi montado via virtual node
else
mount_mfs -s 32768 -c 20 -o noatime swap /var 2>&1
/usr/sbin/mtree -deU -f /etc/mtree/BSD.var.dist -p /var >/dev/
null 2>&1
logs=/usr/bin/awk $1 != # { printf %s , $1 } /etc/
newsyslog.conf
if [ -n $logs ]; then
/usr/bin/touch $logs
fi
/usr/bin/touch /var/log/lastlog
echo Gerando /var em MFS
fi
if [ -r /etc/XYZ123_ ]; then
echo O /etc foi montado via virtual node
else
mount_mfs -s 32768 -c 20 -o noatime swap /etc 2>&1
tar -xzpf /mfs/etc.tgz -C / >/dev/null 2>&1
www.linuxsecurity.com.br
19
options
ROOTDEVNAME=\cd9660:acd0\
options
UNION
pseudo-device
vn
15
Uma vez feitos esses ajustes bastou
gerar um CD bootavel, o que foi feito com o
comando mkisofs (as opes exatas podem
ser vistas nos scripts do toolset). A maioria
das pessoas se surpreende ao saber que foi
to simples resolver um problema que
incomodava a comunidade h tanto tempo,
mas a pura verdade. Usamos um pouco de
www.linuxsecurity.com.br
20
Possibilidades de uso
Essa , sem duvida, a melhor coisa do
FreeBSD LiveCD. As possibilidades de uso
so inmeras, ficando restritas na maior
parte das vezes sua necessidade/
criatividade.
A partir do Toolset voc pode criar discos
customizados paras as mais diversas funes
tais como:
oRepair Disk
oInstall Disk
oJump Start Install
oDisaster Recovery
oX terminal
oRoteador
oBridge
oFirewall
oEtc
A maioria dos administradores de
sistemas podem se beneficiar de varias
dessas funes sendo considerado como
sendo as mais interessantes Jump Start
Install e Disaster Recovery.
Para exemplificar melhor uma das
possibilidades de uso do FreeBSD LiveCD,
www.linuxsecurity.com.br
21
www.linuxsecurity.com.br
22
www.linuxsecurity.com.br
23
Informaes Adicionais
Mentor de diversos projetos ligados ao software livre incluindo a lista Dicas-L
Site: http://www.dicas-l.unicamp.br
www.linuxsecurity.com.br
24
--database:
$ slocate database=.slocate.db
tex
Forneceu-se no exemplo a instruo de
se buscar por arquivos que contenham os
caracteres tex em seu nome.
O tempo de resposta do comando
slocate excelente. Rarissimas vezes ser
necessria a criao de um banco de dados
pessoal, a no ser que o sistema seja muito
grande e contenha centenas de milhares de
arquivos. Mesmo nestas condies a busca
bastante eficiente.
Caso realmente se opte por um banco
de dados individual, uma boa alternativa
criar um alias que especifique as diretivas
apropriadas:
alias Slocate=slocate
database=$HOME/.slocate.db
www.linuxsecurity.com.br
25
www.linuxsecurity.com.br
26
1. Introduo
O que fazer quando o seu link Internet
no suficiente para a utilizao de seus
usurios/servidores? Inicialmente, comentase muito em QoS/CBQ (Quality of Service),
em que a grande jogada estar utilizando
limitao de banda, pretendendo com isso
garantir aos seus servios que um usurio
no v abusar do consumo do link. Em
conjunto limitao de banda ideal
tambm utilizar um software capaz de
monitorar esses usurios e poder analisar
abusos na rede e horrios de pico, exibindo
grficos e quantidade de transferncia diria
ou de determinados perodos. E isso abrange
todos os servios, no s navegao web,
como tambm transferncias FTP, utilizao
de softwares peer2peer (Napster, KaZaA,
AudioGalaxy e similares), envio/recepo de
e-mails e etc.
2. SASacct
O SASacct um pacote para
accounting utilizado para monitorao do
trfego numa rede TCP/IP atravs de
funes presentes no Kernel dos sistemas
operacionais. O SASacct invoca um filtro de
pacotes externo (ipfstat, ipchains, iptables,
pfctl), coletando os dados e registrando num
arquivo de log informaes para cada IP
sendo monitorado. Sua portabilidade para
diversos sistemas operacionais e diversas
verses de filtros de pacotes suportados
uma das suas caractersticas. Atualmente,
suporta: Linux 2.2.x com ipchains, Linux
2.4.x com iptables, *BSD utilizando ipf/pf.
Ele gera grficos como os do MRTG,
Informaes Adicionais
Atua como Consultor em Redes/Segurana,
Solues sob GNU/Linux e Web e tambm como
mantenedor/desenvolvedor de contudo do site
Underlinux.
Site: http://www.diogo.underlinux.com.br
www.linuxsecurity.com.br
27
libpng (http:Erro! A
referncia de hyperlink no
vlida.)
Utilizada pelo RRDtool para gerar as
imagens dos grficos.
RRDtool (http://eestaff.ethz.ch/~oetiker/)
Biblioteca para gerao de grficos
Perl 5.x (http://www.perl.org)
4. Instalando o RRDtool
Munido do pacote do RRDtool
(rrdtool.tar.gz), descompacte o mesmo:
#
#
#
#
#
cd
rrdtool-1.0.39/
./configure
make
make install
make site-perl-install
www.linuxsecurity.com.br
28
iptables -I SASACCT -s
200.200.200.200 -d 0/0 -j ACCEPT
iptables -I SASACCT -s 0/0 -d
200.200.200.200 -j ACCEPT
Sugiro no caso de outro filtro de pacotes,
que o leitor leia o arquivo README do
SASacct, onde ele apresenta as regras
bsicas para outros filtros.
6. Instalando/Configurando o
SASacct
Inicialmente acesse o site do projeto
(http://rousse.pm.org/sasacct) e faa
download do mesmo.
Download: http://rousse.pm.org/
sasacct/sasacct-1.0.tar.gz
O SASacct se resume a poucos arquivos
Perl (.plx e .cgi) e um de configurao, alm
de suas documentaes e exemplos.
Descompacte-o:
# cp *.plx /usr/local/bin/
# cp *.conf /etc/
# cp *.cgi /apache/cgi-bin/
www.linuxsecurity.com.br
29
@data_str =
(AREA:indata#C0C0C0:In,
LINE1:outdata#333333:Out,
# /usr/local/bin/htmlmaker.plx
Posteriormente, s acessar atravs
do seu browser o diretrio em que fora
destinado o repositrio HTML/png.
7.1. Crontab
Para automatizar a gerao dos grficos
e a captao dos dados, sugiro colocar a
seguinte linha no crontab do usurio que
rodar os grficos.
# crontab -e
Adicione a linha abaixo:
para
@data_str =
(AREA:indata#00cc00:In,
LINE1:outdata#0000FF:Sa.da,
7. Executando SASacct
Para finalizar o nosso processo e
executar o scripts que sero responsveis
pela gerao dos grficos, basta digitarmos:
# /usr/local/bin/sasacct.plx
*/5 * * * * /usr/local/bin/
sasacct.plx
Assim, ele ir gerar de 5 em 5 minutos
o grfico, fazendo tambm a captao dos
logs no iptables e realizando indexao dos
arquivos rrd. Caso o trfego de sua rede
seja muito grande, sugiro, colocar para rodar
o sasacct -r de 5 em 5 minutos. Colocar no
crontab sasacct -g de hora em hora. E
finalmente sasacct -s semanalmente. A
opo -r faz a captao dos logs, a -g
gera os grficos, e a -s realiza a
reindexao dos arquivos rrd.
www.linuxsecurity.com.br
30
Principais Desvantagens
* No coleta dados
* No gera pginas HTML
* No gera indexadores HTML
www.linuxsecurity.com.br
31
iptables
iptables
iptables
iptables
iptables
iptables
iptables
-N
-A
-A
-A
-A
-A
-A
portas
INPUT -j
portas -p
portas -p
portas -p
portas -p
portas -p
portas
tcp dport
tcp dport
tcp dport
tcp dport
udp dport
80 -j ACCEPT
21 -j ACCEPT
110 -j ACCEPT
25 -j ACCEPT
53 -j ACCEPT
rm -f /tmp/ping
www.linuxsecurity.com.br
32
Referncias:
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool
http://people.ee.ethz.ch/~oetiker/webtools/mrtg/
mrtg-rrd.html
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
mailinglists.html
http://www.quiknet.com/~twitham/wx200/
Temp.html#Temp_Month
http://www.orcaware.com/orca/orca-example/
www.linuxsecurity.com.br
33
Figura 01
Figura 02
Figura 03
www.linuxsecurity.com.br
34
Ficha do Autor
Nome: Rodrigo Pereira Telles
Idade: 23 anos
Profisso: Administrador de
Sistemas Unix, Consultor de
Segurana e Desenvolvedor de
Ferramentas GPL
email: rodrigo@telles.org
Informaes Adicionais
Ferramentas GPL Desenvolvidas:
.: Webtools:
http://www.webtools.linuxsecurity.com.br
.: SecurityLog2html/netfilter2html:
http://webtools.linuxsecurity.com.br
.: qmail-filter/queue-admin:
http://qmail.linuxsecurity.com.br
Mantenedor/Desenvolvedor do contedo do site:
http://www.dicaslinux.com.br
www.linuxsecurity.com.br
35
Tipo 1
Basicamente quando chega um e-mail
atravs do SMTP o qmail trabalha:
qmail-smtpd -> qmail-queue -> qmailsend ...
Quando um e-mail est saindo do
servidor (enviado por um usurio local) o
qmail trabalha:
#!/usr/bin/awk -f
BEGIN {
IGNORECASE=1
QMAILQUEUE=/var/qmail/bin/
qmail-queue-old
getline pid < /dev/pid
file_tmp=(/tmp/email. pid)
r=(getline < file_tmp)
if (r == -1) {
t=system(/usr/bin/touch
file_tmp)
Ficha do Autor
Nome: Diego Linke - Gamk
Idade: 20 anos
Profisso: System/Network
Administrator
email: gamk@gamk.com.br
Informaes Adicionais
Atualmente Consultor de Segurana e Diretor de
Tecnologia da Web4ever Solutions.
www.linuxsecurity.com.br
36
}
if (t != 0) { exit 81 }
header = 1
achei = 0
}
{
if ($0 ~ /^$/) { header = 0 }
if (header) {
if ($0 ~ /^Subject: Branca de
neve\ *$/) {
achei = 1
exit 31
}
if ($0 ~ /^Subject: I Love
you\ *$/) {
achei = 1
exit 31
}
}
print >> file_tmp
}
END {
if (achei == 0) {
system(/bin/cat file_tmp
| QMAILQUEUE)
}
system(rm -f file_tmp)
}
Para instalarmos deveramos realizar as
aes (levando em considerao que ele se
chama teste.awk) :
cd /var/qmail/bin
mv qmail-queue qmail-queue-old
cp PATH_DO_ARQUIVO/teste.awk .
chown qmailq:qmail teste.awk
chmod 6755 teste.awk
ln -s /var/qmail/bin/teste.awk
qmail-queue
Este exemplo muito simples, ele est
81 = Internal bug
31 = Mail server permanently rejected message
Caso queira alterar estas mensagems,
edite o arquivo qmail.c do source do qmail e
recompile o qmail. Existe a possibilidade
ainda de se personalisar alguns exit codes
(63,64,65... entre outros) para mensagems
personalizadas quando o e-mail for barrado
por ter um subject invlido ou um arquivo
invlido.
Veja um exemplo de um e-mail sendo
barrado:
www.linuxsecurity.com.br
37
data
354 go ahead
From: Diego Linke
<gamk@gamk.com.br>
To: Renato Langona
<renato@linuxsecurity.com.br>
Subject: BRANCA de NeVe
Tipo 2
Neste segundo tipo, os filtros sero
aplicados junto ao qmail-local, portanto eles
serviro apenas para um usurio.
Ns iremos colocar dentro do HOME do
usurio um arquivo chamado .qmail. Atravs
dele iremos chamar programas externos.
Veja um exemplo de .qmail do usurio
gamk:
|/var/qmail/bin/no_html
./Maildir/
#!/bin/sh
DOMINIO=gamk.com.br
USUARIO=gamk
msg_ok () {
echo From: Diego Linke - GAMK
<gamk@gamk.com.br>
echo To: $SENDER
echo Subject: E-mail em HTML
echo
echo Oie $SENDER,
echo
echo Esta mensagem e
automatica!
echo
echo Estou enviando esta
mensagem pois voce me enviou um email com formato HTML e isso nao
me agrada muito! Por favor retire
esta opcao do seu cliente de email.
echo Obrigado,
echo
echo Diego Linke gamk@gamk.com.br
}
html_ok () {
msg_ok | /var/qmail/bin/qmailinject -f$USUARIO@$DOMINIO
$SENDER
}
tmpfile=/tmp/mail_html_tmp$$
cat - > $tmpfile
HTML=0
38
HTML=egrep -i ^Content-Type:
Text/Html $tmpfile | wc -l
if [ $HTML -ne 0 ]; then
html_ok
fi
rm -f $tmpfile
exit 0
Este exemplo muito simples. Quando
um e-mail que contem HTML chegar no
servidor e o qmail-local for entregar a
mensagem, o servidor enviar uma
mensagem para o remetente avisando que
no agradvel receber este tipo de e-mail.
A varivel SENDER setada pelo qmail
com o e-mail do remetente.
Agora veremos um outro exemplo em
Shell Script, porm para bloquear extenes
de arquivos usando o mesmo .qmail:
#!/bin/sh
msg_ok () {
echo Arquivo Proibido!
}
ext_ok $ATTYPE
done
exit 0
Perceba que existe um exit code 100
que indica para o qmail parar a entrega!
Agora vejamos como fica o arquivo
.qmail usando o aviso para e-mails em HTML
e o bloqueio de extenes:
|/var/qmail/bin/no_html
|/var/qmail/bin/no_att
./Maildir/
Concluso
Conclui-se que o qmail alm de ser um
timo MTA, tem um timo sistema modular,
permitindo criarmos ferramentas com vrios
fins (filtros, monitoramento...) de maneira
fcil e rpida e principalmente eficaz.
Espero que tenham gostado, e que
passem, com base neste artigo, a
desenvolver novas ferramentas para este
poderoso MTA.
ext_ok () {
case $ATTYPE in VBS | BAT | COM
| EXE)
msg_ok
exit 100;;
*)
;;
esac
}
ATTACHTYPE=grep name= - | awk
BEGIN {FS=.}; {print
toupper($NF)} | cut -c -3
for ATTYPE in $ATTACHTYPE; do
www.linuxsecurity.com.br
39
Enriquecendo os Logs do seu sistema Unix e Facilitando a Auditoria Parte 2
por Renato Murilo Langona
40
no obrigatria, bastando que voc
descompacte a mesma em um diretrio
temporrio e utilize o script configure do
syslog-ng com a opo:
--with-libol=/diretrio/temporrio/libol-0.2.3
DESTINO (/VAR/LOG/CRONTAB)
FILTROS
FONTE (/xxx/log)
DESTINO (/var/log/messages)
DESTINO (/var/log/maillog)
DIRETIVA LOG
41
log
Ficha do Autor
Nome: Renato Murilo Langona
Idade: 23 anos
Profisso: Analista/Consultor de
Segurana da Informao.
Empresa:LinuxSecurity Brasil
Solutions S/C Ltda
email: renato@linuxsecurity.com.br
Informaes Adicionais
Fundador e mantenedor do projeto nacional
LinuxSecurity Brasil e da revista LinuxSecurity
Magazine.
Site: http://www.linuxsecurity.com.br
Sintaxe:
destination <identificador> {driver-destino(parmetros);
driver-destino(parmetros);
...};
www.linuxsecurity.com.br
42
# Configurao de destinos
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
destination
authlog { file(/var/log/messages.auth); };
syslog { file(/var/log/messages.syslog); };
cron { file(/var/log/crontab); };
daemon { file(/var/log/messages.daemon); };
kern { file(/var/log/messages.kern); };
lpr { file(/var/log/messages.lpr); };
maillog { file(/var/log/maillog); };
mail { file(/var/log/maillog); };
user { file(/var/log/maillog); };
uucp { file(/var/log/messages.uucp); };
messages { file(/var/log/messages); };
console { usertty(root); };
console_all { file(/dev/tty8); };
debug { file(/var/log/debug); };
hostremoto {tcp(127.0.0.1 port(6666));};
# Configurao de filtros
filter
filter
filter
filter
filter
filter
filter
www.linuxsecurity.com.br
43
#
log
log
log
log
log
log
log
log
log
log
log
log
log
log
Diretivas Log
{
{
{
{
{
{
{
{
{
{
{
{
{
{
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
source(src);
filter(f_authpriv); destination(authlog); };
filter(f_syslog); destination(syslog); };
filter(f_cron); destination(cron); };
filter(f_daemon); destination(daemon); };
filter(f_kern); destination(kern); };
filter(f_lpr); destination(lpr); };
filter(f_mail); destination(mail); };
filter(f_user); destination(user); };
filter(f_uucp); destination(uucp); };
filter(f_mail); destination(maillog); };
filter(f_debug); destination(debug); };
filter(f_messages); destination(messages); };
filter(f_emergency); destination(console); };
destination(hostremoto); };
www.linuxsecurity.com.br
44
www.linuxsecurity.com.br
45
log
de
nossa
Utilizao
Antes de iniciarmos a utilizao do
syslog-ng aps sua configurao, devemos
desabilitar em nosso sistema os servios
syslogd e klogd para evitarmos quaisquer
conflitos. Logo aps, basta executarmos o
binrio do syslolg-ng:
# /usr/local/sbin/syslog-ng
Teremos, ento, o incio do registro de
logs em nosso servidor de acordo com nossas
necessidades e configuraes.
Repito que o que foi demonstrado aqui
representa uma mnima poro das opes,
utilizaes e configuraes possibilitadas
por essa excelente ferramenta Open Source.
Convido novamente o estimado leitor a
aprofundar seus conhecimentos atravs de
pesquisas e estudos, dividindo sempre que
possvel suas experincias com a
comunidade.
Espero que tenham gostado do artigo
e que o mesmo tenha sido til. Sintam-se
meus convidados para entrarem em contato
atravs de meu email. At a prxima edio
da LinuxSecurity Brasil! :-)
Forte abrao a todos...
www.linuxsecurity.com.br
46
* Persistent Superblock
Introduo
Antes de entrar em detalhes sobre a
implantao do recurso de RAID via software,
presente no Kernel Linux, sero mostrados
alguns
conceitos
bsicos
sobre
funcionamento, aplicao, preparao do
ambiente e migrao.
Algumas opes sobre termos usados
neste artigo:
disco => partio ou disco fsico
array => conjunto de discos que
formam um dispositivo RAID
RAID (Redundant Array of Independent
Disks) um recurso que possibilita Alta
Disponibilidade (que daqui em diante ser
tratado como HA - High Availability), soma
de dispositivos lgicos em um nico
dispositivo fsico alm de suporte a
tolerncia a falhas (presente em alguns nveis
somente), recursos estes implementados no
Kernel Linux.
Os nveis RAID presentes no Kernel
Linux so:
*
*
*
*
*
Linear mode
Raid-0
Raid-1
Raid-4
Raid-5
Sintaxe: persistent-superblock N
Onde: N = Nmero de Super-blocos
A opo persistent-superblock
utilizada para resolver um problema
existente no boot do sistema a partir de
dispositivos RAID.
Isto
ocorre
devido
a
uma
particularidade presente no initscript, que
requer o arquivo de tabelas RAID (/etc/
raidtab) para montagem dos dispositivos,
sendo assim, quando um dispositivo RAID
inicializado com a opo persistentsuperblock, um superbloco especial
gravado no incio de cada um dos discos
participantes do array, possibilitando assim
o boot.
* Chunk Size
Sintaxe: chuck-size N
Onde: N = Tamanho em Kilobytes
47
Exemplo de utilizao:
Arquivo: /etc/raidtab
raiddev /dev/md1
raid-level
nr-raid-disks
nr-spare-disks
persistent-superblock
chunk-size
device
raid-disk
device
raid-disk
device
raid-disk
device
spare-disk
5
3
1
1
32
/dev/sda1
0
/dev/sdc1
1
/dev/sdd1
2
/dev/sdb1
0
Sintaxe: spare-disk N
Onde: N = Nmero do disco reserva no array
Sintaxe: nr-spare-disks N
Onde: N = Nmero de discos reserva
* Failed Disk
Sintaxe: failed-disk N
Onde: N = Nmero do disco do array
A opo failed-disk utilizada para
forar a falha de um ou mais discos
participantes do array. Geralmente utilizado
www.linuxsecurity.com.br
48
Os nveis RAID
1
2
1
16
/dev/sda1
0
/dev/sdc1
1
1
Consideraes importantes
www.linuxsecurity.com.br
49
Arquivo: /etc/raidtab
raiddev /dev/md0
raid-level
linear
nr-raid-disks
2
chunk-size
32
persistent-superblock 1
device
/dev/sda1
raid-disk
0
device
/dev/sdc1
raid-disk
1
RAID-0
O nivel RAID-0 comporta o recurso de
combinao de um ou mais discos, em
nico dispositivo fsico, de forma parecida a
Linear mode, porm fazendo uso de todos
os discos optimizando mais sua utilizao e
performance. Um recurso possibilitado pelo
RAID-0 a soma de parties de discos
distindos, formando um dispositivo RAID-0
composto, por exemplo, de vrias parties
em vrios discos, o que pode incrementar
significantemente a performance.
O RAID-0 no permite redundncia de
dados.
Um exemplo de configurao de um
dispositivo RAID-0 pode ser observado
abaixo:
Arquivo: /etc/raidtab
raiddev /dev/md0
raid-level
0
nr-raid-disks
2
chunk-size
32
nr-spare-disks
0
persistent-superblock 1
device
/dev/sda6
raid-disk
0
device
/dev/sdc1
raid-disk
1
RAID-1
O nvel RAID-1 comporta o recurso de
mirroring, ou seja, espelhamento. Tratase de um recurso de HA em que TODOS os
dados so lidos e gravados simultaneamente
(levando-se em conta a observao do
chunk-size) nos discos partencentes ao array.
Exatamente por se tratar de um recurso
de HA e Tolerncia a Falhas, o nvel RAID-1
tem sido largamente utilizado, merecendo
algumas observaes para o melhor
aproveitamento de performance.
Todas as observaes sobre incremento
de performane e formas de implementao
para otimizao sero retratadas em tpicos
mais adiante.
Um exemplo de configurao de um
dispositivo RAID-1 pode ser observado a
seguir:
www.linuxsecurity.com.br
50
raiddev /dev/md0
raid-level
1
nr-raid-disks
2
chunk-size
32
nr-spare-disks
1
persistent-superblock 1
device
/dev/sda1
raid-disk
0
device
/dev/sdc1
raid-disk
1
device
/dev/sdb1
spare-disk
0
Em dispositivos RAID-1 pode-se usufruir
do recurso de Spare Disk de forma a
incrementar mais ainda a HA. No exemplo
acima, tem-se o disco (sdb1) utilizado como
spare para o dispositivo (/dev/md0). Assim
que qualquer problema for notado pelo RAID,
que venha a eliminar um dos discos do array,
o spare disk ser automaticamente colocado
no array para re-sincronizao e utilizao.
RAID-4
Apesar de pouco usado, o RAID-4
comporta dois recursos importantes, mirror
e merge. Como exemplo, pode-se aplicar
RAID-4 para criao de um nico dispositivo
fsico composto por vrios discos de mesmo
tamanho, mas no necessariamente com a
mesma performance. Em um modelo
parecido com o RAID-5, que ser tratado a
seguir, o RAID-4 gera redundncia dos dados
nos discos pertencentes ao array, de forma
distribuda.
Um exemplo de configurao de um
dispositivo RAID-4 pode ser observado a
seguir:
Arquivo: /etc/raidtab
raiddev /dev/md0
raid-level
4
nr-raid-disks
3
chunk-size
32
nr-spare-disks
1
persistent-superblock 1
device
/dev/sda1
raid-disk
0
device
/dev/sdb1
raid-disk
1
device
/dev/sdc1
raid-disk
2
device
/dev/sdd1
space-disk
0
No exemplo acima, foi definida a tabela
necessria para criao do dispositivo (/dev/
md0) contendo o array de discos (sda1,
sdb1, sdc1), alm do disco adicional (sparedisk) sdd1. Como resultado, teremos um
dispositivo de grande tamanho, ainda com
redundncia de informao.
Uma observao a ser feita aqui que,
por no ser o modo mais recomendado de
utilizao e pelos mtodos de funcionamento
que no otimizam totalmente o uso dos
discos e principalmente pelo fato de no
sincronia da gravao dos dados no array, o
RAID-4 muito pouco usado.
RAID-5
Um dos mais complexos e utilizados
recursos RAID com certeza o RAID-5. Com
ele, pode-se obter um nvel de redundncia
da informao (HA), e ainda obter o melhor
aproveitamento do tamanho dos discos. O
RAID-5 permite a utilizao de vrios discos
distintos em um nico dispositivo fsico. A
redundncia da informao garantida por
um dos discos do array, ou seja, para
efeitos matemticos quando tem-se 4 discos
www.linuxsecurity.com.br
51
Arquivo: /etc/raidtab
raiddev /dev/md0
raid-level
5
nr-raid-disks
3
nr-spare-disks
0
persistent-superblock 1
parity-algorithm
left-symmetric
chunk-size
32
device
/dev/sda1
raid-disk
0
device
/dev/sdb1
raid-disk
1
device
/dev/sdc1
raid-disk
2
device
/dev/sdd1
space-disk
0
www.linuxsecurity.com.br
52
# uname -r
2.4.18
# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 sda1[1] sdc1[0]
306304 blocks [2/2] [UU]
# uname -r
2.2.19
# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 sda1[0] sdc1[1]
306304 blocks [2/2] [UU]
Em algums casos, pode ser necessria
a criao de um dispositivo RAID, no
possuindo fisicamente todos os discos
necessrios.
Como exemplo, ser utilizada a criao
de um dispositivo RAID-5, contendo os discos
(hda6) e (hdc6). Assim:
Arquivo: /etc/raidtab
raiddev /dev/md0
raid-level
nr-raid-disks
persistent-superblock
chunk-size
device
raid-disk
device
raid-disk
failed-disk
5
2
1
8
/dev/hda6
0
/dev/hdc6
1
1
# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda6, 131008kB, raid
superblock at 130944kB \
# cat /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 hda6[0] 130944
blocks level 5, 8k chunk, algorithm 0 [2/1] [U_]
Nota-se acima, que o dispositivo RAID5 foi criado com sucesso, e o disco (hdc6)
j foi setado como falho. Isto pode ser
notado atravs do status ao final da linha:
[U_]
Em que:
U = Em uso/funcionamento
_ = Fora de uso/desativado/defeituoso
Neste caso em especfico a
resincronizao dos dispositivo RAID no
ocorrer, sendo que apenas um dos discos
estar ativo.
Este tipo de criao de RAID muito
prtico e utilizado na migrao de sistemas
j instalados ou instalao quando no se
tem a mo todos os discos necessrios.
Vale lembrar aqui que possvel especificar
apenas 1 (um) disco como falho.
www.linuxsecurity.com.br
53
Discos
www.linuxsecurity.com.br
54
Parties
Ponto de Montaegm
Tamanho
/dev/md0
/dev/hda1 \____ /boot
20 Mb
/dev/hdc1 /
/dev/md1
/dev/hda2 \________________________
/dev/hdc2 /
19.980 Mb
Tipo
fd (Raid autodetect)
extendida
/dev/md2
/dev/hda5 \____ /usr
/dev/hdc5 /
1.468 Mb
fd (Raid autodetect)
256 Mb
82 (swap)
256 Mb
82 (swap)
/dev/md3
/dev/hda7 \____ /var
/dev/hdc7 /
2.000 Mb
fd (Raid autodetect)
/dev/md4
/dev/hda8 \____ /var/lib/mysql
/dev/hdc8 /
7.000 Mb
fd (Raid autodetect)
/dev/md5
/dev/hda9 \____ /var/cache/squid
/dev/hdc9 /
9.000 Mb
fd (Raid autodetect)
www.linuxsecurity.com.br
55
do sistema.
raid-disk
# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hdb1, 20480kB, raid
superblock at 20416kB
disk 1: /dev/hdd1, 20480kB, raid
superblock at 20416kB
Partio 1: /dev/hda1
Ponto de montagem: /boot
Partio 2: /dev/hda5 (swap)
Partio 3: /dev/hda6
Ponto de montagem: /
Os discos exemplificados acima so
apenas para ilustrar, sendo que um disco de
20Gb foi particionado com apenas as
parties (/boot) e (/).
Tabela RAID
# mkraid /dev/md1
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hdb6, 20459520kB,
raid superblock at 20459456kB
disk 1: /dev/hdd6, 20459520kB,
raid superblock at 20459456kB
# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdb1[0] hdd1[1]
20480 blocks [2/2] [UU]
md1 : active raid1 hdb6[0] hdd6[1]
20459520 blocks [2/2] [UU]
# cat /etc/raidrab
raiddev /dev/md0
raid-level
nr-raid-disks
persistent-superblock
chunk-size
device
raid-disk
device
raid-disk
raiddev /dev/md1
raid-level
nr-raid-disks
persistent-superblock
chunk-size
1
2
1
8
/dev/hdb1
0
/dev/hdd1
1
1
2
1
8
/dev/hdb6
0
/dev/hdd6
www.linuxsecurity.com.br
56
Copiar partio /
# pwd
/boot
# cd /
# pwd
/
# find . -xdev | cpio -pm /raid
A opo -xdev do comando find, faz
com que a busca pelos arquivos ocorra penas
na partio de incio da busca. Em resumo,
parties montadas a partir da origem sero
ignoradas e, consequentemente, os arquivos
destas parties no sero copiados.
Copiados todos os arquivos, basta
agora re-escrever o boot-loader. Mostraremos
aqui o procedimento com o lilo, que o
mais comumente utilizado:
Primeiramente, troque o root do
sistema para os dados do disco j
espelhado.
# chroot /raid
Feito isto, edite o arquivo /etc/
lilo.conf, que agora ser acessado j na
cpia, via chroot.
www.linuxsecurity.com.br
57
# cat /etc/lilo.conf
boot=/dev/md0
map=/boot/map
install=/boot/boot.b
default=linux
prompt
timeout=50
lba32
image=/boot/vmlinuz-2.2.19
label=linux
root=/dev/md1
initrd=/boot/vmlinuz-2.2.19
read-only
Referncias:
The Software-RAID HOWTO
http://www.tldp.org/HOWTO/SoftwareRAID-HOWTO.html
raidtab Man Page - (man 5 raidtab)
Ficha do Autor
Nome: Jos Roberto Kerne
Idade: 23 anos
Profisso: Administrador de
Sistemas e Redes, Especialista em
Desenvolvimento e Migrao de
Sistemas/Solues UNIX.
email: joseroberto@kerne.org
Informaes Adicionais
Ferramentas GNU/GPL Desenvolvidas:
PDLGS - Power Database Log Generator for Squid
http://pdlgs.sourceforge.net
PIDS - Power Intrusion
http://pids.sourceforge.net
Detection
System
Projetos:
Fundador/Mantenedor/Desenvolvedor de contedo
Dicas
Linux
http://www.dicaslinux.com.br
Site: http://www.dicaslinux.com.br
www.linuxsecurity.com.br
58
Guia rpido para a configurao do Amavis com Postfix no Conectiva Linux 8.0
por Emerson Reis
# uname -m
i686
Ento, para i386:
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
arc-5.21e-5.i386.rpm
- Perl
- Anti-virus scanner ( iremos utilizar o
virusscan da NAI ( http://www.nai.com.br ))
- Criar o usurio vscan
- file ( instalado por padro no cl 8 )
- arc
- bzunip2 ( instalado por padro no cl 8 )
- lha
- unarj
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
lha-1.14f-2.i386.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i686/PLD/RPMS/
unarj-2.43-9.i386.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i686/PLD/RPMS/
unrar-2.71-1.i386.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
zoo-2.10-6.i386.rpm
Para i586:
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i586/PLD/RPMS/
arc-5.21e-5.i586.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i586/PLD/RPMS/
lha-1.14f-2.i586.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i586/PLD/RPMS/
unarj-2.43-9.i586.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i586/PLD/RPMS/
unrar-2.71-1.i586.rpm
www.linuxsecurity.com.br
59
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i586/PLD/RPMS/
zoo-2.10-6.i586.rpm
Para i686
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
arc-5.21e-5.i686.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
lha-1.14f-2.i686.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i686/PLD/RPMS/
unarj-2.43-9.i686.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/nest/PLD/i686/PLD/RPMS/
unrar-2.71-1.i686.rpm
# wget ftp://rpmfind.net/linux/PLD/
current/dists/ra/PLD/i686/PLD/RPMS/
zoo-2.10-6.i686.rpm
/usr/lib/perl5/5.6.1/CPAN/Config.pm
initialized.
Are you ready for manual configuration? [yes]
ENTER
CPAN build and cache directory? [/
root/.cpan] ENTER
Cache size for build directory (in
MB)? [10] ENTER
Perform cache scanning (atstart or
(1)
(2)
(3)
(4)
(5)
(6)
(7)
Africa
Asia
Central America
Europe
North America
Oceania
South America
www.linuxsecurity.com.br
60
filesystems y/[n] n
Para que o uvscan funcione
corretamente no Conectiva 8.0, ser
necessrio que voc instale a compatwww.linuxsecurity.com.br
61
libstdc++:
# apt-get install compat-libstdc++
Agora, iremos realizar o download do
amavis. Execute do endereo:
http://www.amavis.org/dist/perl/
amavis-perl-11.tar.gz
Descompacte o arquivo amavis-perl11.tar.gz :
Agora entre no diretrio do amavis-perl11 e execute os comandos a seguir:
# cd amavis-perl-11
# adduser vscan
# ./configure enable-smtp enable-postfix with-amavisuser=vscan
Resultado final deve ser
semelhante ao apresentado abaixo:
# make
# make install
Aps a compilao do amavis, devemos
configurar o Postfix para que o amavis analise
os e-mails recebidos ou enviados pelos
usurios de sua rede. Lembramos que no
iremos descutir aqui a instalao e
configurao correta do MTA Postfix, mas
sim apenas o necessrio para que o amavis
funcione corretamente. Caso no tenha o
Postfix configurado, voc poder encontar
um tutorial em http://www.linux.trix.net/
dicas_postfix.htm.
Entre no diretrio do postfix (
geralmente /etc/postfix) e adicione a
seguinte linha ao arquivo main.cf:
algo
####################################################################
** Configuration summary for amavis perl-11 2001-04-07:
Install amavis as:
/usr/sbin/amavis
Configured for use with:
postfix
Relay configuration:
no
Enable SMTP:
yes
Use SMTP port:
10025
Use virus scanner(s):
McAfee Virusscan
Scanner runs as:
vscan
Logging to syslog:
yes
Quarantine directory:
/var/virusmails
Max. recursion depth:
20
Add X-Virus-Scanned header: yes
Display AMaViS credits:
no
Warn sender:
yes
Reports sent to:
virusalert
Reports sent by:
postmaster
To accept the above, type make
###################################################################
www.linuxsecurity.com.br
62
content_filter = vscan
Adicionar as seguintes linhas ao
arquivo master.cf:
vscan
unix n
n
10
pipe user=vscan
argv=/usr/sbin/amavis ${sender} ${recipient}
localhost:10025 inet
n
n
smtpd
-o content_filter=
Divirtam-se.
Ficha do Autor
Nome: Emerson Reis
Idade: 26 anos
Profisso: Analista de Suporte HyperLinux
Foto No
Disponvel
email: eluizbr@hyperlinux.com.br
Informaes Adicionais
Site: http://www.hyperlinux.com.br
www.linuxsecurity.com.br
63
Criptografia de disco
por Jair Valmor Basso Jnior
Util-Linux: http://www.kernel.org/pub/
linux/utils/util-linux/Loop-AES: http://loopaes.sourceforge.net/
Todo mundo fala que devemos
criptografar nossos e-mails, nossos arquivos
importantes e tudo que for marcado como
sigiloso, mas que tal criptografar o disco
inteiro??
Imagine que voc, um importante
homem de negcios, tenha seu notebook
roubado contendo diversos documentos e
arquivos de alta importncia para a empresa
onde trabalha. Essas informaes em mos
erradas podem ser fatais e render grandes
prejuzos.
Criptografar arquivo por arquivo pode
ser uma soluo, mas deve-se criar uma
rotina para que nenhum arquivo acabe
sobrando. A criptografia do disco inteiro pode
salvar sua pele, j que tudo armazenado
dentro do sistema de arquivos estar
automaticamente criptografado e sem a
senha correta, ser impossvel montar o
volume para acessar os dados.
Existem diversas implementaes que
podemos utilizar para essa finalidade, a
maioria consiste em aplicar patches no
kernel, e isso acaba sendo um problema
porque em diversas situaes no existem
patches para as verses de kernel mais
novas.
Optando pela simplicidade e facilidade,
escolhi o pacote Loop-AES, o qual irei
detalhar a instalao e utilizao.
Esse artigo foi escrito utilizando Red
Hat 7.1, kernel 2.4.18, loop-AES-v1.6e e utillinux-2.11r, rodando em cima do Vmware 3.0
build 1455.
Kernel: http://www.kernel.org
Primeiro, temos que nos certificar que
o kernel que estamos utilizando no tem
suporte ao dispositivo de bloco chamado
loop. Se voc no sabe, melhor recompilar
seu kernel/mdulos para ter certeza. A
opo Loopback device support dentro do
Block devices deve estar desmarcado,
lembre-se disso ao efetuar a recompilao.
Duas maneiras fceis de descobrir se o
seu kernel no possui esse suporte:
1
root/bash# insmod loop
insmod: loop: no module by that
name found
2
root/bash# grep
CONFIG_BLK_DEV_LOOP /usr/src/
linux/.config
CONFIG_BLK_DEV_LOOP is not set
Aps nos certificarmos que nosso kernel
no tem suporte ao loop, vamos atacar o
Loop-AES.
Descompactamos o pacote:
root/bash# bunzip2 ~/loop-AESv1.6e.tar.bz2 -c |tar xvf Compilamos o pacote:
www.linuxsecurity.com.br
64
root/bash# cd loop-AES-v1.6e
root/bash# make
Aps alguns segundos, se nada de
errado ocorrer durante a compilao,
devermos ver as mensagens:
Currently running kernel is
2.4.18
Module was built for kernel
2.4.18
Como o kernel que estou usando o
2.4.18, ele me indica isso nas mensagens
acima.
Com isso temos o mdulo criado:
# ls -l loop.o
-rw-rr
1 root
root
14416 Jul 10 15:53 loop.o
interessante copiar o mdulo para o
diretrio de mdulos de seu sistema, para
que
ele
possa
ser
carregado
automaticamente sempre que precisarmos.
No meu sistema exemplo, copiei o
arquivo para:
/lib/modules/2.4.18/kernel/drivers/block
e ajustei as dependncias:
root/bash# depmod -a
Se voc usa o kernel 2.4.x, o caminho
deve ser parecido, mudando apenas a verso
do kernel.
Agora precisamos aplicar alguns patches
no pacote util-linux, para que certos binrios
do sistema se tornem compatveis com a
criptografia.
Descompactamos
e
atualizamos:
root/bash# bunzip2 util-linux2.11r.tar.bz2 -c | tar xvf root/bash# cd util-linux-2.11r
root/bash# patch -p1 < ../loopAES-v1.6e/util-linux-2.11r-1.diff
root/bash# patch -p1 < ../loopAES-v1.6e/util-linux-2.11r-2.diff
Note que o Loop-AES vem com os
patches para o util-linux-2.11r, se voc
estiver utilizando alguma verso diferente,
verifique os patches corretos para sua
verso.
Agora compilamos:
root/bash# ./configure
root/bash# make
A compilao deve ocorrer sem
problemas.
Agora podemos instalar os novos
binrios, sobrescrevendo os binrios
antigos. Para descobrir onde esto os
binrios antigos em sua distribuio,
execute os seguintes comandos:
root/bash# which mount umount
losetup
Como estou efetuando a instalao em
um Red Hat 7.1, vou respeitar os diretrios
da distribuio:
root/bash# install -m 4755 -o root
mount/mount /bin
root/bash# install -m 4755 -o root
mount/umount /bin
root/bash# install -m 755 -o root
monut/losetup /sbin
Agora atualizamos as pginas manuais:
www.linuxsecurity.com.br
65
# rm -f /usr/man/man8/
{mount,umount,losetup}.8.gz
# install -m 644 mount/mount.8
mount/umount.8 mount/losetup.8 /
usr/man/man8
# rm -f /usr/man/man5/fstab.5.gz
# install -m 644 mount/fstab.5 /
usr/man/man5
Podemos testar o mdulo loop.o
agora. Executamos um make tests dentro
do diretrio loop-AES-v1.6e.
Se tudo ocorrer bem, vamos ser
presenteados com um:
*** Test results ok ***
Ok! Funciona! Podemos agora aplicar
todo o trabalho acima em algo til ;-)
1) Utilizando uma imagem criptografada como
filesystem.
Criamos um arquivo de um tamanho
qualquer, de 10Mb no exemplo abaixo:
root/bash# dd if=/dev/zero of=/
tmp/img01 bs=10k count=1024
Associamos um dispositivo de loop ao
arquivo, ser pedido uma senha de no
mnimo 20 caracteres:
www.linuxsecurity.com.br
66
Desassociamos o dispositivo:
email: jair@sega-brasil.com.br
Informaes Adicionais
Responsvel pelos tpicos de Segurana e udio
no Rau-tu Linux da Unicamp.
Site: http://www.sega-brasil.com.br/jair
www.linuxsecurity.com.br
67
www.linuxsecurity.com.br
68
1 - Introduo
O MySQL o servidor de Banco de Dados
que mais vem crescendo na atualidade. Um
servidor robusto que possui muitos recursos
e de fcil manuseio. Por ser um Software
Livre, pode ser obtido gratuitamente e vrias
pessoas esto engajadas em melhor-lo e
torn-lo um Servidor de Banco de Dados
amigvel.
O MySQL vem sendo muito usado em
aplicaes CGI(Commom Gateway Interface)
e a interao dele com vrias linguagens de
programao o torna uma escolha certa entre
a maioria dos profissionais que lidam com
WEB. A velocidade de processamento e a
portabilidade so outros fatores que
contribuem para a escolha do MySQL como
Servidor de Banco Dados por instituies que
processam uma gama enorme de
informaes.
No entanto, com o crescente nmero
de usurios e de programadores, este
Servidor de Banco de Dados vem se tornando
alvo de inmeros tipos de ataques, onde um
atacante procura obter desde acesso as
informaes que o Banco de Dados manuseia
at mesmo acesso ao sistema alvo a partir
de vulnerabilidades no Servidor de Banco de
Dados.
Nesta perspectiva, venho trazer maiores
informaes sobre os problemas de
segurana que podem eventualmente
aparecer atravs do mau uso do Servidor de
Banco de Dados Mysql.
Um conhecimento prvio de SQL e do
MySQL so essenciais para o entendimento
2 - Instalao
altamente aconselhvel que o
procedimento de instalao siga os padres
especificados no arquivo INSTALL que
acompanha os pacotes do MySQL. Deve-se
ler os arquivos de instalao README, bem
como os documentos que atestam os
problemas que uma m configurao podem
apresentar.
Deve-se criar um grupo e um usuario
chamados "mysql" ou qualquer outro nome
que dever ser usado exclusivamente para
manuseio do Servidor MySQL. Este usurio
dever conter uma senha forte(mnimo de
12 caracteres, intercalados com nmeros e
case sensitive) e deve ser utilizado somente
pelo Administrador da Rede ou em redes
especiais, pelo Administrador do Servidor
MySQL.
www.linuxsecurity.com.br
69
3 - Configurao
O Primeiro passo aps uma instalao
simples a configurao correta do Servidor.
Muitos Administradores de Rede apenas
instalam o Servidor e verificam se o mesmo
est sendo executado sem problemas, mas
por padro algumas medidas de segurana
precisam ser tomadas logo aps a instalao
do Servidor MySQL. Vejamos algumas no
decorrer deste item.
Logo
aps
o
trmino
da
instalao(Sistemas *NIX), a seguinte
mensagem exibida na tela:
PLEASE REMEMBER TO SET A PASSWORD FOR
THE MySQL root USER !
This is done with:
./bin/mysqladmin -u root -p password
'new-password'
./bin/mysqladmin -u root -h kimera -p
password 'new-password'
See the manual for more instructions.
www.linuxsecurity.com.br
70
www.linuxsecurity.com.br
71
:!sh
sh-2.03# id
uid=0(root) gid=0(root)
groups=0(root),1(bin),2(daemon),3(sys),4(adm),
6(disk),10(wheel),11(floppy)
sh-2.03#
No nosso exemplo ganharamos uma
shell suid root brincando. Na Selva (Internet)
exemplos assim so raros, no entanto no
incomum a obteno de uma shell de usurio
a partir de esquemas semelhantes a este
descrito.
O Administrador de Rede precisa estar
ciente de qual editor de texto o padro em
seu Sistema Operacional e do usurio em
questo, bem como estar ciente da
potencialidade que este editor pode oferecer
em caso de ataques como o descrito.
:H
*
|/bin/bash -c /usr/bin/gcc -o \
/tmp/hack /tmp/hack.c; /tmp/hack
-
www.linuxsecurity.com.br
72
No entanto, os programadores
precisam estar cientes dos problemas que
um CGI pode ocasionar, e sua interao
com o Banco de Dados no escapa a regra.
Veremos
alguns
exemplos
que
demonstram o perigo que manipular CGI
e
MySQL
de
forma
insegura.
Conhecimentos Bsicos de alguma
linguagem que manipule CGIs bem vindo,
no entanto, veremos exemplos em PHP.
www.linuxsecurity.com.br
73
www.linuxsecurity.com.br
74
www.linuxsecurity.com.br
75
5 - Sugestes
Existem ainda inmeros problemas
envolvendo as permisses dos
usurios, em que possvel
encontrarmos
sistemas
com
permisses como SELECT, INSERT,
DELETE e etc ativas em todos os
usurios para todas as tabelas.
Aconselho ao Administrador da
Rede(Servidor MySQL) ler com bastante
cuidado o item sobre Sergurana do
"MANUAL" que acompanha o MySQL, e
ter sempre cuidado com as permisses
ao acrescentar um novo usurio.
Recomendo ainda que procure
testar sempre a Segurana do Servidor
MySQL, levando em conta os problemas
que um programador desinformado ou
mesmo um usurio leigo(que por
exemplo setou uma pssima senha)
possa vir a fornecer.
6 - Links e Referncias
7 - Consideracoes Finais
Vale ressaltar que este documento
aborda apenas os aspectos bsicos de
alguns problemas que pode-se encontrar em
um Servidor MySQL. De modo que deve-se
ir fundo na pesquisa para se ter uma noo
maior de problemas mais avanados.
Os exemplos e os exploits so
meramente ilustrativos e de modo algum
devem ser usados para fins ilcitos. Todos
os dados e exemplos aqui fornecidos
possuem somente o carter educional.
Estou aberto a sugestes, crticas e
quaiquer dvidas.
Um Cordial Abrao a Todos.
Ficha do Autor
Nome: Glaudson Ocampos
Idade: 24 anos
Profisso: Analista de Segurana
Foto No
Disponvel
email: nashleon@yahoo.com.br
"Manual do MySQL"
http://www.mysql.org/
"MySQL" by Unsekurity Scene
http://unsekurity.virtualave.net/
Informaes Adicionais
Colaborador do site Unsek Scene.
www.linuxsecurity.com.br
76
Ferramentas de coleta
No artigo anterior apresentamos o
procedimento do administrador de redes
quando seu objetivo preservar intacto o
estado de seu sistema de modo a permitir
uma anlise. Comentamos sobre a
necessidade de uma "caixa de ferramentas"
que disponibilize os recursos necessrios
realizao da coleta de dados. Porm no
detalhamos seu contedo, que ser nossa
tarefa desta vez.
A primeira coisa que devemos ter em
mente que no existe um nico ou melhor
conjunto de ferramentas para realizar este
tipo de anlise. Tudo depender dos
sistemas alvo, do gosto e prtica do analista
e dos objetivos que se deseja alcanar. Antes
de tudo necessrio o entendimento do
funcionamento de cada ferramenta a ser
utilizada e a prtica. No adianta baixar um
kit completo com a "melhor e mais completa"
seleo de ferramentas e utiliz-las em uma
ordem que no respeite a volatilidade das
informaes.
O kit que iremos construir focado em
sistemas Unix para a arquitetura Intel,
principalmente o Linux, como no poderia
deixar de ser em um artigo desta publicao.
No entanto eu gostaria de ressaltar que este
kit tambm pode ser til para a anlise de
eventos em outras plataformas. No difcil
complement-lo com utilitrios para outros
sistemas, tornando-o bem diversificado.
Visando o aprendizado melhor
discutirmos a montagem de um kit prprio,
com o bsico, permitindo assim ao leitor criar
verses adequadas as suas necessidades,
ou ao menos saber escolher quais
ferramentas estudar em uma coleo muito
complexa.
www.linuxsecurity.com.br
77
dd
duplicao a baixo nvel de sistemas de
arquivo.
lsof
Lista de arquivos abertos. Esta
ferramenta necessita estar compilada para
o kernel em utilizao, pois manipula
diretamente estruturas internas destes para
recolher informaes. Sua utilidade a
facilidade de relacionar os processos em
execuo com os arquivos que esto
utilizando.
md5sum
gera o hash md5 para um determinado
arquivo de entrada.
netcat
chamado de o canivete suo das redes
TCP/IP. Este um utilitrio que permite criar
servidores e clientes de rede com facilidade.
Permite em qualquer ambiente criar
rapidamente a infra-estrutura bsica para
transferir dados entre hosts.
lsmod
lista os mdulos do kernel que esto
carregados. Os LKM so uma ferramenta
muito utilizada para a implantao de root
kits.
Ferramentas de Anlise
bmap
O espao em disco alocado para os
arquivos em blocos. Quando o fim do bloco
no coincide com o fim de arquivo h uma
sobra de espao que fica perdido e
totalmente transparente. Assim sendo
quando blocos so sobrescritos possvel
muitas vezes encontrar partes do arquivo
anterior neste espao. Este utilitrio permite
ler e gravar neste trecho no fim dos blocos
de disco.
strings
busca todas as strings de caracteres
imprimveis em arquivos. teis para
encontrar strings especficas principalmente
ao tentar recuperar arquivos, ou para analisar
blocos de disco em busca de alguma
informao com sentido.
mount
montagem de sistemas de arquivos.
grep
busca de expresses regulares.
TCT - The Coroner's Toolkit.
Este Toolkit foi desenvolvido por Vietse
Venema (autor do Postfix, Satan, tcpwrapper,
entre outros) e Dan Farmer (Satan, COPS),
e consiste em ferramentas bsicas no muito
amigveis porem extremamente eficientes
no que se prope. http://www.fish.com/tct
Task - The @stake Sleuth Kit
uma evoluo do TCT implementada
pela empresa @stake. Tem como principais
diferenciais em relao ao primeiro o suporte
a novos filesystems (NTFS, FAT) e a interface
web que facilita o processo de anlise.
http://www.atstake.com/research/tools/
task/
Ferramentas Extras
Tripwire e similares
Caso seja utilizada alguma ferramenta
de verificacao de integridade, ao estilo
Tripwire, esta tambm fara parte da anlise,
mas no do necessriamente do seu kit.
Como premissa bsica esta ferramenta no
deve estar instalada no sistema, para evitar
www.linuxsecurity.com.br
78
Concluso
A utilizao de vrias fontes de indcios
para corroborar uma hiptese fundamental,
mas deve-se evitar o exagero na quantidade
de ferramentas disponveis. Este excesso
aumenta a quantidade de trabalho a ser
executada e at confunde o analista.
Existe uma infinidade de utilitrios
disponveis que podem se adequar a esta
ou aquela necessidade. O importante
passar a idia dos tipos de ferramentas so
necessrias. No pretendemos aqui esgotar
o tema. Uma sugesto para quem no quer
perder tempo recorrer diretamente FIRE
- Forensics and Incident Response
Environment, antiga Biatchux, que uma
distribuio de Linux focada em anlise
forense como o novo nome j diz.
distribuda como uma imagem iso que ao
ser queimada gera um cd de boot com todas
as ferramentas mais usuais. Acredito que
esta seja uma excelente opo pois
reinventar a roda no o mais produtivo.
Esta distribuio no entanto tem ferramentas
demais, e at est perdendo um pouco o
foco tantas so as funcionalidades que esto
sendo includas.
http://biatchux.dmzs.com/
Ficha do Autor
Nome: Leonardo Alcntara
Moreira
Idade: 29 anos
Profisso: Engenheiro de
Computao
email: leonardo@montreal.com.br
Informaes Adicionais
Analista de Projetos da empresa Montreal Informtica
Site:
www.linuxsecurity.com.br
79
Introduo
Um sniffer um programa ou dispositivo
que observa o trfego de uma rede coletando
informaes que trafegam na mesma.
Sniffers basicamente utilizam tecnologia de
'Interceptao de Dados'. Eles funcionam
porque a Ethernet foi desenvolvida em torno
do princpio do compartilhamento. A maioria
das redes utilizam tecnologia de broadcast
em que mensagens de um computador podem
ser lidos por outro na mesma rede. Na prtica,
todos os computadores, com exceo
daquele que uma mensagem destinada,
iro ignorar essa mensagem. Porm,
computadores podem ser configurados para
aceitarem mensagens mesmo que no sejam
os destinatrios legtimos. Isso pode ser
realizado atravs de um Sniffer!
Computadores conectados a switches
esto to vulnerveis a 'sniffing' quanto
aqueles conectados a hubs. Esse artigo
procura explorar o tpico a respeito de
sniffers, como eles funcionam, alm da
deteco e proteo contra a utilizao
maliciosa desses programas. Finalmente, ao
fim falaremos algo a respeito de sniffers
comumente disponveis.
www.linuxsecurity.com.br
80
www.linuxsecurity.com.br
81
www.linuxsecurity.com.br
82
www.linuxsecurity.com.br
83
www.linuxsecurity.com.br
84
Ferramentas Sniffing
J que sou um profissional Linux, irei
listar alguns sniffers comuns disponveis
para esse sistema operacional.
tcpdump: O poderoso chefo de todos
os sniffers de pacotes. Acompanha como
padro muitas distribuies Linux! Ele
captura os cabealhos de pacotes que casem
com uma expresso boleana. Os dados de
pacotes capturados podem ser gravados em
um arquivo para posterior anlise. Ele est
disponvel oficialmente atravs do endereo:
http://www.tcpdump.org/daily/tcpdumpcurrent.tar.gz
sniffit: Sniffer de pacotes robusto e
com boas opes de filtragem. Disponvel
atravs do endereo:
http://sniffit.rug.ac.be/ coder/sniffit/
sniffit.html
ethereal: Um analisador de protocolos
de rede livre para Windows e Unix. Ele
permite que voc examine dados de uma
rede em tempo real ou de um arquivo
capturado em disco. Dados capturados
podem ser explorados atravs de uma
www.linuxsecurity.com.br
85
http://ettercap.sourceforge.net/
http://www.laurentconstantin.com/
86
Referncias
Antisniff Technical Details:
http://www.securitysoftwaretech.com/
antisniff/tech-paper.html
Robert Grahams Sniffing FAQ:
http://www.robertgraham.com/pubs/sniffing-faq.html
Dsniff Frequently Asked Questions:
http://www.monkey.org/~dugsong/dsniff/
faq.html
ftp://apostols.org/AposTools/snapshots/
neped/neped.c
ARP Watch: ARPWatch til no caso
de suspeitas de voc estar sendo vtima de
arp-spoofing. Disponvel atravs do
endereo:
ftp://ftp.ee.lbl.gov/arpwatch.tar.Z
Nenhum desses programas livre de
falhas. Digo isso de experincias pessoais.
Deliberadamente executei um sniffer em uma
mquina e tentei utilizar essas ferramentas
para detectar a presena do mesmo. Nenhum
dos programas detectou o sniffer. A razo
pela qual sniffers so chamados de
pesadelos para administradores de redes
justamente por eles serem praticamente
impossveis de serem detectados. Confiando
Ficha do Autor
Nome: Sumit Dhar
Idade: 24 anos
Profisso: Manager, Research and
Product Development - SLMsoft Inc
Foto No
Disponvel
email:
Informaes Adicionais
Site: http://www.rootshell.be/~dhar
www.linuxsecurity.com.br
87
Corridas e chegadas
por Izar Tarandach
www.linuxsecurity.com.br
88
www.linuxsecurity.com.br
89
access/open
access/unlink
access/chroot
creat/chown
open/rename
90
Ficha do Autor
Nome: Izar Tarandach
Idade: 34 anos
Profisso: Diretor de Engenharia e
Tecnologia da empresa Aduva Ltd.
email: izar@aduva.com
Informaes Adicionais
Palestrante e instrutor em diversos eventos de
segurana no Brasil e exterior, alumni do Razor Security Team, formado em Cincias da Computao pela
Hebrew University of Jerusalem, Israel, atualmente
cursando mestrado em Filosofia e Historia da Ciencia
pela Tel Aviv University.
Site: http://www.aduva.com/~izar
www.linuxsecurity.com.br
91
Recursos (facility)
Hoje temos muitas opes de logs no
Linux, na realidade a regra vale para todos
os Unix, mas muito comum observar que a
maioria das instalaes que so feitas no
Linux usam por padro o Syslog (original do
BSD) de forma bsica, quando na realidade,
uma boa configurao dos seus parmetros
permitiria ao administrador ter um timo
recurso de monitoramento dos processos e
conexes do seu servidor.
O objetivo desse documento mostrar
como tirar gua de pedra, ou seja, mostrar
como tirar o supra-sumo do Syslogd. Sei que
existem outras timas opes como o
Syslog-ng, mas a maioria ainda usa o Syslog
e na minha opinio ele quando devidamente
configurado pode ser extremamente til
dependendo do servidor no qual for
implementado.
www.linuxsecurity.com.br
92
recurso.nvel_prioridade
/caminho/alvo_arquivo_de_log
/var/muaithai/auth.alert
/var/muaithai/auth.crit
/var/muaithai/auth.debug
/var/muaithai/auth.emerg
/var/muaithai/auth.err
/var/muaithai/auth.info
/var/muaithai/auth.none
/var/muaithai/auth.notice
auth.=warn
/var/muaithai/auth.warn
/var/muaithai/authpriv.alert
/var/muaithai/authpriv.crit
/var/muaithai/authpriv.debug
/var/muaithai/authpriv.emerg
/var/muaithai/authpriv.errors
/var/muaithai/authpriv.info
/var/muaithai/authpriv.none
/var/muaithai/authpriv.notice
/var/muaithai/authpriv.warn
/var/muaithai/cron.alert
/var/muaithai/cron.crit
/var/muaithai/cron.debug
/var/muaithai/cron.emerg
/var/muaithai/cron.err
/var/muaithai/cron.info
/var/muaithai/cron.none
/var/muaithai/cron.notice
/var/muaithai/cron.warn
/var/muaithai/daemon.alert
/var/muaithai/daemon.crit
/var/muaithai/daemon.debug
/var/muaithai/daemon.emerg
/var/muaithai/daemon.err
/var/muaithai/daemon.info
/var/muaithai/daemon.none
/var/muaithai/daemon.notice
/var/muaithai/daemon.warn
/var/muaithai/kern.alert
/var/muaithai/kern.crit
/var/muaithai/kern.debug
/var/muaithai/kern.emerg
/var/muaithai/kern.err
/var/muaithai/kern.none
/var/muaithai/kern.notice
/var/muaithai/kern.warn
/usr/bin/logger
/var/muaithai/local0.alert
/var/muaithai/local0.crit
/var/muaithai/local0.debug
/var/muaithai/local0.emerg
/var/muaithai/local0.err
/var/muaithai/local0.none
/var/muaithai/local0.notice
/var/muaithai/local0.warn
www.linuxsecurity.com.br
93
/var/muaithai/local6.alert
/var/muaithai/local6.crit
/var/muaithai/local6.debug
/var/muaithai/local6.emerg
/var/muaithai/local6.err
/var/muaithai/local6.info
/var/muaithai/local6.none
/var/muaithai/local6.notice
local6.=warn
/var/muaithai/local6.warn
/var/muaithai/local7.alert
/var/muaithai/local7.crit
/var/muaithai/local7.debug
/var/muaithai/local7.emerg
/var/muaithai/local7.err
/var/muaithai/local7.info
/var/muaithai/local7.none
/var/muaithai/local7.notice
/var/muaithai/local7.warn
/var/muaithai/lpr.alert
/var/muaithai/lpr.crit
/var/muaithai/lpr.debug
/var/muaithai/lpr.emerg
/var/muaithai/lpr.err
/var/muaithai/lpr.info
/var/muaithai/lpr.none
/var/muaithai/lpr.notice
/var/muaithai/lpr.warn
/var/muaithai/mail.alert
/var/muaithai/mail.crit
/var/muaithai/mail.debug
/var/muaithai/mail.emerg
/var/muaithai/mail.err
/var/muaithai/mail.info
/var/muaithai/mail.none
/var/muaithai/mail.notice
mail.=warn
/var/muaithai/mail.warn
mark.=alert
mark.=crit
mark.=debug
mark.=emerg
mark.=err
mark.=info
mark.=none
mark.=notice
/var/muaithai/mark.alert
/var/muaithai/mark.crit
/var/muaithai/mark.debug
/var/muaithai/mark.emerg
/var/muaithai/mark.err
/var/muaithai/mark.info
/var/muaithai/mark.none
/var/muaithai/mark.notice
mark.=warn
/var/muaithai/mark.warn
/var/muaithai/news.alert
/var/muaithai/news.crit
/var/muaithai/news.debug
/var/muaithai/news.emerg
/var/muaithai/news.err
/var/muaithai/news.info
/var/muaithai/news.none
/var/muaithai/news.notice
news.=warn
/var/muaithai/news.warn
/var/muaithai/security.alert
/var/muaithai/security.crit
/var/muaithai/security.debug
/var/muaithai/security.emerg
/var/muaithai/security.err
/var/muaithai/security.info
/var/muaithai/security.none
/var/muaithai/security.notice
security.=warn
/var/muaithai/security.warn
/var/muaithai/syslog.alert
/var/muaithai/syslog.crit
/var/muaithai/syslog.debug
/var/muaithai/syslog.emerg
/var/muaithai/syslog.err
/var/muaithai/syslog.info
/var/muaithai/syslog.none
/var/muaithai/syslog.notice
syslog.=warn
/var/muaithai/syslog.warn
/var/muaithai/user.alert
/var/muaithai/user.crit
/var/muaithai/user.debug
/var/muaithai/user.emerg
/var/muaithai/user.err
/var/muaithai/user.info
/var/muaithai/user.none
/var/muaithai/user.notice
user.=warn
/var/muaithai/user.warn
www.linuxsecurity.com.br
94
/var/muaithai/uucp.alert
/var/muaithai/uucp.crit
/var/muaithai/uucp.debug
/var/muaithai/uucp.emerg
/var/muaithai/uucp.err
/var/muaithai/uucp.info
/var/muaithai/uucp.none
/var/muaithai/uucp.notice
uucp.=warn
/var/muaithai/uucp.warn
/var/log/messages
/var/log/secure
/var/log/maillog
/var/log/cron
*
/var/log/spooler
local7.*
/var/log/boot.log
www.linuxsecurity.com.br
95
#!/bin/sh
dir="/var/$HOSTNAME"
arquivos="auth authpriv cron daemon kern local0 local1 local2 lpr \
local3 local4 local5 local6 local7 \
mail mark news security syslog user uucp"
extensoes="alert crit debug emerg err info none notice warn"
configuracao()
{
for cria_arq in $arquivos;
do
for cria_ext in $extensoes;
do
echo "$cria_arq.=$cria_ext
syslog.conf
done
done
}
configuracao
service syslog stop
service syslog start
No final do script o servio do syslogd ser reinicializado, o que nesse momento iria
causa um erro pois a estrutura de arquivos ainda no existe.
Sendo assim, precisamos criar as estruturas de arquivos, iremos automatizar de forma
que a estrutura seja criada automaticamente respeitando as entradas definidas no /etc/
syslog.conf, vide script shell a seguir:
www.linuxsecurity.com.br
96
#!/bin/sh
diretorio="/var/$HOSTNAME"
arquivos="auth authpriv cron daemon kern local0 local1 local2 lpr \
local3 local4 local5 local6 local7 \
mail mark news security syslog user uucp"
extensoes="alert crit debug emerg err info none notice warn"
estrutura()
{
for cria_arq in $arquivos;
do
for cria_dir in $extensoes;
do
touch $diretorio/$cria_arq.$cria_dir
done
done
chmod -R 600 $diretorio/
chattr -R +a $diretorio/
}
if test ! -d $diretorio; then
mkdir $diretorio
estrutura
else
echo "O diretorio $diretorio ja existe !!!"
echo "Passando para criacao da estrutura dos arquivos !!!"
estrutura
fi
Nesse segundo script utilizamos o recurso de atributo "append only" o que quer dizer
que os arquivos so podero ser incrementados e nada poder ser removido sem que seja
removido o atributo. Na prtica nada de muito especial mas isso ajudar a dificultar a vida
dos ScriptKiddies.
Caso tudo tenha ocorrido bem at aqui, j temos um servidor de logs funcionando e
com uma estrutura de arquivos inteligente.
Para quem no conhece o syslogd interessante lembrar que a estrutura de sua linha
composta pelo seguintes campos:
Dada - Hora - nome_host - nome_processo[PID] - registro_log
Exemplo:
Mar 8 05:55:12 muaithai ssh[2002]: log: Generating new 768 bit RSA key
Servidor de log Remoto
www.linuxsecurity.com.br
97
@samurai
@samurai
@samurai
@samurai
@samurai
@samurai
@samurai
@samurai
@samurai
#!/bin/sh
remota=$1
arquivos="auth authpriv cron daemon kern local0 local1 local2 lpr \
local3 local4 local5 local6 local7 \
mail mark news security syslog user uucp"
extensoes="alert crit debug emerg err info none notice warn"
confremota()
{
for cria_arq in $arquivos;
do
for cria_ext in $extensoes;
do
echo "$cria_arq.=$cria_ext
$remota" >> /etc/syslog.conf
done
done
}
configuracao
service syslog stop
service syslog start
www.linuxsecurity.com.br
98
Listando continuamente:
-f
-f
-f
-f
-f
-f
www.linuxsecurity.com.br
99
Ficha do Autor
Nome: Sandro Mello
Idade:
Profisso:
email: sandro@4linux.com.br
Informaes Adicionais
Palestrante, Chief Security Officer da empresa
4LinuxMen. Aluno do curso de mestrado em
Engenharia de Redes no IPT/USP. Membro do ADC
(Apple Developer Connection) e do GU-Software Livre
Sucesu Sao Paulo.
Site: http://www.4linux.com.br
www.linuxsecurity.com.br
100
www.linuxsecurity.com.br
101
sistema de sua
www.linuxsecurity.com.br
102
Iniciando o jail
Primeiro deve-se criar um alias na sua
placa de rede do ambiente real. Vamos supor
que eu queira configurar o jail com o IP
200.202.223.5 em minha interface xl0. Para
isso deve-se criar o alias com o seguinte
comando:
Obs: Se estiver lendo a revista direto de um visualizador
PDF, utilize a ferramenta Zoom para ver o cdigo
abaixo.
# ifconfig xl0 inet alias 200.202.223.5 netmask 255.255.255.255
logo aps:
# mount -t procfs proc /usr/jail/proc
www.linuxsecurity.com.br
103
#!/bin/sh
/sbin/ifconfig xl0 inet alias 200.202.223.5 netmask 255.255.255.255
/sbin/mount -t procfs proc /usr/jail/proc
/usr/sbin/jail /usr/jail hostname 200.202.223.5 /bin/sh /etc/rc
Concluso
Caso voc veja alguns erros, ignore-os.
Agora voc dever realizar os seguintes
procedimentos no seu ambiente jail (em
nosso caso no /usr/jail):
- Criar um arquivo vazio: touch /etc/fstab;
- Desabilitar o portmap (rc.conf:
portmap_enable="NO")
- Rodar o newaliases(1).
Ficha do Autor
Nome: Jean Milanez Melo
Idade:
Profisso: Diretor da FreeBSD Brasil
LTDA.
email:
jmelo@freebsdbrasil.com.br
jmelo@free.bsd.com.br
Informaes Adicionais
Membro ativo da comunidade FreeBSD, criador do site
FreeBSD FAQ (http://free.bsd.com.br) com vrias
informaes teis para usurios novatos e
experientes.
Site: http://www.freebsdbrasil.com.br
www.linuxsecurity.com.br