Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Entenda o site
Tecnologias
Revistas LO GIN:
Cursos
Frum
Servios
Publicar
Compre Crditos
Loja Virtual
A ssine
C adastre -se
De que se trata o artigo Este artigo tem como objetivo demonstrar de forma prtica algumas tcnicas de blindagem de sistema tambm conhecidas como Hardening. Esta tcnica consiste na implementao de diretivas de segurana que devem ser seguidas antes, durante e aps a instalao e configurao de servidores GNU/Linux.
Hardening
Blindando um Sistema GNU/Linux
Vdeo Hardening Para que serve A tcnica de Hardening pode ser utilizada em qualquer sistema operacional. Com o grande aumento no nmero de ameaas existentes na Internet fundamental que o sistema de um servidor esteja preparado para superar todas as tentativas de invaso. Esta tcnica no deve ser implementada somente em servidores que ficam conectados diretamente a Internet, muitas vezes fornecendo servios como, por exemplo servidores web, mas tambm em mquinas que provm servios internos de rede como servidores de arquivos e de impresso. Com a blindagem de sistemas possvel aumentar o desempenho do hardware, liberando recursos que esto sendo utilizados por aplicativos desnecessrios, implementando configuraes especficas em alguns servios, alm de gerar um ambiente mais seguro. Em que situao o tema til Hardening pode ser utilizado para evitar que usurios mal intencionados aproveitem da ausncia do administrador e implantem scripts maliciosos em servidores infectando toda a rede, bloquear que o usurio administrador faa login diretamente no terminal, efetuar logout por tempo de inatividade, remover pacotes que no so utilizados, remover permisses especiais de binrios executveis, dentre outras tcnicas que sero apresentadas posteriormente.
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
1/14
16/05/13
VIDEO TUTORIAL #1: Na vdeo aula deste artigo, veja na prtica como proteger o ambiente de TI atravs de tcnicas de Hardening.
Devido ao crescente nmero de ameaas existentes na Internet e dentro dos ambientes corporativos, se faz necessria a utilizao de tcnicas capazes de proporcionar maior segurana, estabilidade e tranquilidade para os administradores de redes. Pensando nisso, este artigo tem como objetivo apresentar o conceito e tcnicas disponveis para a implementao de hardening em servidores GNU/Linux. Hardening, ou blindagem de sistemas, consiste na utilizao de tcnicas para prover mais segurana a servidores que disponibilizam servios externos, como servidores Web, ou at mesmo servios internos, como servidores de banco de dados, de arquivos, entre outros. Neste artigo so analisadas e discutidas tcnicas para a aplicao de hardening desde a instalao do sistema operacional, o processo de particionamento de discos, anlise de servios desnecessrios e inseguros, localizao de senhas fracas, verificao de usurios invlidos, desconexo de usurios no autorizados, implementao de polticas de utilizao de servios de rede, gerenciamento de privilgios e aplicao de segurana no terminal. Para a realizao da parte prtica do artigo, foram utilizados trs computadores com as seguintes configuraes: Cliente 1: Ubuntu 9.10; Cliente 2: Ubuntu 9.10; Servidor : Debian Lenny. Para o servidor, o sistema operacional escolhido foi o GNU/Debian Lenny, por ser um Linux reconhecidamente pela comunidade como estvel e robusto, voltado para servidores. As tcnicas aqui demonstradas foram implementadas no servidor e as mquinas clientes foram
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
2/14
16/05/13
Hardening
O hardening consiste na realizao de alguns ajustes finos para o fortalecimento da segurana de um sistema. Muitos administradores sem experincia em segurana preparam seus servidores com uma instalao bsica e depois que suas aplicaes esto disponveis nenhum procedimento feito para manter a integridade do sistema. Em um sistema GNU/Linux possvel atingir um alto nvel de segurana implementando configuraes que permitam o aperfeioamento da segurana aplicada ao sistema. Quando se deseja aplicar a tcnica de hardening h trs grandezas que devem ser consideradas: segurana, risco e flexibilidade. O administrador de redes deve analisar muito bem essas grandezas e encontrar um estado de harmonia entre elas, levando o sistema a uma alta produtividade e segurana, pois quanto maior a segurana menor o risco e tambm a flexibilidade. importante ressaltar que as tcnicas aqui apresentadas podem no ser adequadas para todas as situaes. Por isso, antes de implantar efetivamente as tcnicas de hardening, fundamental que haja um estudo completo do cenrio e servios em questo. Inicialmente recomenda-se sempre instalar verses atuais dos sistemas operacionais, que contenham correes e patches de segurana, pois pode ser problemtico utilizar uma verso antiga sem atualizaes, deixando o sistema temporariamente vulnervel no caso da existncia de pacotes com falhas.
[abrir im age m e m jane la]
Servios crticos como web, email e DNS devem estar sempre nas verses mais atuais. Softwares desnecessrios devem ser desinstalados e pacotes inseguros devem ser substitudos por alternativas mais confiveis. A seguir so apresentadas algumas utilizaes de hardening muito teis na configurao de sistemas operacionais.
Particionamento de discos
O particionamento de discos um ponto importante quando se pensa em segurana. Ao particionar o disco, inserida no sistema uma maior segurana, pois cada partio tem sua tabela de alocao de arquivos separada. Um exemplo de como pode ser configurada a tabela
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
3/14
16/05/13
Nota Devman 2: Backdoor: so programas que instalam um ambiente de servio em um computador, tornando-o acessvel distncia, permitindo o controle remoto da mquina sem que o usurio saiba, como uma porta dos fundos no autorizada.
Em distribuies Red Hat e derivados utiliza-se o comando rpm -qa, fazendo assim uma pesquisa em todos os pacotes instalados, como pode ser visto na Listagem 2. A anlise desse arquivo pode ser um pouco demorada, ainda mais se o administrador estiver analisando a sada gerada por um servidor Red Hat, uma vez que essa distribuio traz um nmero maior de pacotes instalados que um GNU/LINUX Debian. Um pacote interessante para
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
4/14
16/05/13
Outro exemplo o pacote wireless-tools. Caso o servidor em questo no tenha nenhuma placa de rede sem fio, no h necessidade de tal aplicativo.
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
5/14
16/05/13
Tomando essas providncias simples, pode-se impedir que algum atacante consiga quebrar a senha utilizando fora bruta. Mesmo que a senha seja quebrada em algum momento, com a troca de senhas peridica, esta poder j no ser mais vlida. O PAM (Pluggable Authentication Module) um conjunto de bibliotecas compartilhadas que permitem ao administrador do sistema local definir como determinadas aplicaes autenticam os usurios, sem a necessidade de modificar e recompilar programas. O PAM um recurso que auxilia muito quando se pensa em segurana. Existem vrios mdulos que podem ser implementados, aumentando assim o controle de criao e troca de senhas. A Figura 3 mostra que o usurio no conseguiu mudar a senha na primeira tentativa, recebendo a mensagem Escolha uma senha mais longa. Isso ocorre devido a uma alterao no mdulo do PAM. A opo min=10 foi adicionada, limitando assim um tamanho mnimo para a senha escolhida, como pode ser visto na Listagem 5.
Listagem 5. Limitando o tamanho mnimo de uma senha.
p a s s w o r dr e q u i r e dp a m _ u n i x . s o n u l l o ko b s c u r em i n = 1 0m d 5
Usurios Invlidos
Nos Sistemas GNU/Linux h trs tipos de usurios, usurio root, que o administrador do sistema, usurios comuns, os quais possuem uma senha para logar no sistema e acesso a um diretrio home onde os mesmos podero ter privacidade com seus arquivos pessoais e, por ltimo, os usurios de sistema, responsveis por controlar requisies de servios. O shell a interface entre usurio e sistema. Sem um shell vlido, no possvel digitar comandos e interagir com o sistema. O usurio de sistema www-data, responsvel por receber requisies do servidor Web, que esteja com um shell vlido, poder introduzir vulnerabilidades ao seu sistema.
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
6/14
16/05/13
Gerenciamento de privilgios
O usurio root o mais visado por crackers ou usurios mal intencionados. Seu foco conseguir a senha root e obter acesso total ao sistema. Para dificultar a ao destas ameaas, desativar o login como usurio root nos terminais modo texto torna-se fundamental. Dessa forma, o administrador dever efetuar o login como usurio comum e quando for necessrio executar uma tarefa administrativa tornar-se root com o comando su. Determinar a data de validade para a senha dos usurios e, com auxlio do comando usermod, remover shells vlidos de usurios que no esto em uso tambm so aes importantes a serem tomadas para garantir a robustez do sistema.
Segurana no Terminal
Quando citado o assunto segurana, logo se imagina a explorao de uma vulnerabilidade por uma ameaa remota e, na maioria das vezes, as ameaas internas so esquecidas ou at mesmo subestimadas. Usurios internos mal intencionados podem causar grandes prejuzos e, se o usurio em questo tiver acesso fsico aos servidores, a situao fica ainda mais grave. Um usurio mal intencionado com acesso fsico a sala de servidores pode usufruir de uma estao logada como usurio root e assim danificar o sistema. A varivel TMOUT tem a funo de executar um logout automtico aps determinado tempo de inatividade do terminal. Seu valor pode ser configurado no arquivo /etc/profile. O valor a ser adicionado dever ser analisado com cuidado, evitando assim acessos indevidos. Valores muito altos podem dar espao para que o usurio tenha acesso estao logado como root, valores muito baixos podem interferir em tarefas onde necessrio uma pesquisa, por exemplo. O arquivo /etc/profile ser editado e adicionado a varivel com valor de 60 segundos, como pode ser visto na Listagem 6. O arquivo /etc/profile s lido durante o boot do sistema, dessa forma utiliza-se o comando source para que o arquivo possa ser lido novamente atribuindo ao sistema as alteraes aplicadas, como pode ser visto na Listagem 7.
Listagem 6. Inserindo valores no /etc/profile.
# v i m/ e t c / p r o f i l e
T M O U T = 6 0 e x p o r tP A T HT M O U T
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
7/14
16/05/13
Listagem 7. Comando source.
# s o u r c e/ e t c / p r o f i l e
Aps 60 segundos de inatividade, o shell far logout automtico, conforme mostra a Figura 4.
[abrir im age m e m jane la]
Outro ponto importante a ser levado em considerao quando se pensa em controle de acesso em uma organizao, avaliar quem tem acesso aos servidores. Usurios mal intencionados podem simplesmente usar o CTRL+ALT+DEL para reiniciar o servidor, parando assim todos os servios disponveis em uma rede. Isso pode ocorrer em empresas que no tm uma poltica de acesso aos seus servidores. Segundo a norma ISO 27002, devem-se tratar as questes de acesso fsico sala de servidores. No entanto, independentemente desta norma, pode-se inibir a funo CTRL+ALT+DEL editando o arquivo /etc/inittab, conforme a Listagem 8.
SSH
O SSH (Secure Shell) um programa usado para acessar remotamente outro computador usando uma rede, executar comandos em uma mquina remota e copiar arquivos de um computador para outro. Fornece autenticao forte e comunicao segura sobre canais inseguros (como a Internet, por exemplo). muito usado para logar em um sistema GNU/Linux atravs de uma mquina Windows, Mac ou mesmo outro GNU/Linux, na qual os tradicionais telnet e rlogin no podem fornecer criptografia da senha e da sesso. Detalhes importantes precisam ser levados em considerao quando um servidor ssh configurado. Para isso, algumas configuraes importantes devem ser feitas no arquivo de configurao, conforme apresenta a Listagem 9. Aps efetuar as alteraes, o servio ssh precisa ser reiniciado (ver Listagem 10).
Listagem 8. Editando o arquivo /etc/ssh/inittab. # v i m/ e t c / i n i t t a b #A n t e s #W h a tt od ow h e nC T R L A L T D E Li sp r e s s e d . c a : 1 2 3 4 5 : c t r l a l t d e l : / s b i n / s h u t d o w nt 1arn o w #D e p o i s #W h a tt od ow h e nC T R L A L T D E Li sp r e s s e d . # c a : 1 2 3 4 5 : c t r l a l t d e l : / s b i n / s h u t d o w nt 1arn o w # o u #D e p o i s #W h a tt od ow h e nC T R L A L T D E Li sp r e s s e d . c a : 1 2 3 4 5 : c t r l a l t d e l : / b i n / e c h o O p od e s a t i v a d a! Listagem 9. Editando o arquivo /etc/ssh/sshd_config. # v i m/ e t c / s s h / s s h d _ c o n f i g #A l t e r eap o r t ap a d r o P o r t4 2 1 2 9 #P r o t o c o l o2( a n t e r i o r e sp o s s u e mf a l h a sd es e g u r a n a ) P r o t o c o l2 #T e m p oa t i v a d op a r ad i g i t a ras e n h a L o g i n G r a c e T i m e4 5 #N oa c e i t a rl o g i nc o m or o o t
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
8/14
16/05/13
P e r m i t R o o t L o g i nn o
Portas Abertas
Quando o sistema novo instalado, alguns aplicativos (servios) podem abrir portas introduzindo assim vulnerabilidades no sistema. Com o aplicativo nmap, pode-se fazer uma busca por todas as portas abertas no sistema e, em seguida, podem ser criadas regras no firewall para bloquear as que no devem estar disponveis. Uma listagem de portas feita utilizando o aplicativo nmap pode ser visto na Listagem 11. nmap: Network Mapper, um aplicativo livre e de cdigo aberto, sobre licena GPL, utilizado para explorar uma rede afim de efetuar uma auditoria de segurana. Analisando o resultado do nmap pode-se observar que a porta 80 est aberta, normalmente usada por um servidor Web. Se esse servio no for utilizado, a porta dever ser fechada, evitando que vulnerabilidades sejam exploradas. Uma regra do firewall iptables poder ser utilizada para bloquear tentativas de acesso a essa porta, como exibe a Listagem 12. Aps adicionar a regra no firewall, faa novamente a pesquisa com o nmap e analise o resultado.
Listagem 10. Reiniciando o servio ssh
$ i n v o k e r c . ds s hr e s t a r t
SUID BIT
O SUID BIT uma das permisses especiais disponveis no GNU/Linux. Quando est atribuda a um binrio, possvel que um usurio execute o mesmo com os privilgios de seu dono. Se o dono do binrio for o usurio root, o usurio vai executar o binrio como root. Podemos encontrar problemas de segurana ao ter binrios com essa permisso especial configurada. Segundo a norma ISO 27002, no item 11.6.1, o acesso informao e s funes dos sistemas de aplicaes por usurio e pessoal do suporte devem ser restritas, de acordo com o definido na poltica de controle de acesso. Esse ponto deve estar muito bem determinado e esclarecido para todos os funcionrios da organizao. Pois caso algo seja violado, existe um documento para comprovar que aquilo no certo. Atravs de um script possvel localizar e alterar essa permisso, como apresenta a Listagem 14. Depois de criado o script, necessrio alterar suas permisses, deixando que apenas o usurio root possa execut-lo, e retirando qualquer permisso dos demais usurios e grupos. Para essa funo usado o comando chmod (Listagem 15). O primeiro passo executar o script, e como parmetro dever ser utilizado n ou N. Nesse modo ele apenas ir gerar uma lista de binrios que possuem a permisso de SUID-BIT no sistema, de acordo com a Listagem 16. Observe no diretrio /root/auditoria que o arquivo list.suid foi criado (Listagem 17).
Listagem 11. Listagem de portas utilizando nmap.
# n m a pAp1 6 5 5 3 5l o c a l h o s t P O R T S T A T ES E R V I C EV E R S I O N
2 2 / t c p 2 5 / t c p 5 3 / t c p 8 0 / t c p
o p e n s s h o p e n s m t p
p r o t o c o l2 . 0 P o s t f i xs m t p d
o p e n d o m a i n d n s m a s q2 . 4 7 o p e n h t t p h t t p d2 . 2 . 1 1
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
9/14
16/05/13
6 3 1 / t c p o p e n i p p 3 3 0 6 / t c po p e n m y s q l
o p e n d o m a i n d n s m a s q2 . 4 7 f i l t e r e d h t t p C U P S1 . 3 . 9 M y S Q L5 . 0 . 7 5 0
6 3 1 / t c p o p e n i p p 3 3 0 6 / t c po p e n m y s q l
#E n v i au m am e n s a g e mn as a d ap a d r od ev d e o e c h o" V e r i f i c a n d oa r q u i v o sc o mp e r m i s s od eS U I DB I T . . "
#R e c e b eao p oe s c o l h i d a r e a da c a o
Como se trata de um sistema recm-instalado, o administrador no deve encontrar nenhum problema. Mas necessria a ateno do mesmo, pois se estiver analisando um servidor de uma empresa, onde este se encontra em produo, devem-se remover as permisses suid.
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
10/14
16/05/13
0 . 0 0 s 0 . 2 6 s 0 . 0 1 sw
$c d/ t m p $. / s h
Pode-se observar com o comando id que o usurio flavio ganhou acesso de root euid=0(root). Sendo o usurio root o dono desse shell com a permisso de SUID BIT ativa, o usurio consegue executar o shell sh como root, conforme mostra a Figura 5.
[abrir im age m e m jane la]
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
11/14
16/05/13
Para evitar esse tipo de problema, alguns parmetros do comando mount podem ser utilizados. O parmetro apresentado aqui o nosuid, que inibe a execuo de binrios na partio indicada. Logado como usurio root, aplica-se essa opo partio montada em /tmp, como visto na Listagem 24. importante lembrar que o diretrio /tmp necessariamente dever estar em uma partio separada. Isso segue as boas prticas de particionamento. Aps ter aplicado a correo ao diretrio /tmp, faa novamente o login com o usurio flavio e tente executar a shell sh novamente. Observe que a diretiva euid=0(root) no mais listada. Dessa forma o usurio j no tem mais permisses de root, conforme mostra a Figura 6.
NOEXEC
Um script malicioso pode ser inserido em uma partio do sistema causando danos ao servidor. O comando mount tem um parmetro chamado noexec, seu uso pode evitar que um script seja executado dentro dessa partio. Assim, para solucionar este problema, pode-se aplicar a opo noexec e remontar a partio. Utilizando o comando mount com o parmetro remount a partio /tmp ser remontada com a opo de leitura e escrita e acrescentando o noexec, de acordo com a Listagem 25
Listagem 24. Remontando o diretrio /tmp com a opo nosuid.
#m o u n tor e m o u n t , r w , n o s u i d/ t m p #m o u n t
Para conferir se a alterao foi efetivada, utilizamos o comando mount novamente (ver Figura 7). Aps remontar a partio, foi realizada mais uma tentativa de executar o binrio sh. No entanto, agora sua execuo est impedida, independente do usurio logado. No exemplo foi executado como root, como mostra a Figura 8. Realizando a montagem das parties manualmente, os parmetros no sero aplicados de forma fixa s parties, ou seja, ao reiniciar o sistema, essas configuraes sero perdidas. Para que as configuraes sejam mantidas mesmo aps um restart, basta editar o arquivo /etc/fstab (responsvel por armazenar a tabela de parties do GNU/LINUX, que lido durante o boot do sistema). Dessa forma, quando a opo noexec inserida diretamente no arquivo, j ser implementado o bloqueio ao iniciar a montagem da tabela de parties do sistema. Um exemplo desse arquivo pode ser visto na Figura 9.
[abrir im age m e m jane la]
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
12/14
16/05/13
Figura 8. Tentando executar um binrio em uma partio com a opo noexec aplicada.
O administrador poder encontrar um problema ao executar o aplicativo aptitude se as parties /var e /tmp estiverem com o noexec e nosuid ativos, pois esse aplicativo precisa executar scripts dentro de tais parties. O script da Listagem 26 pode ser utilizado para contornar tal problema. Dessa forma pode-se remover a proteo ao executar o aplicativo e, em seguida, reativ-las.
Listagem 26. Script para alterar opo noexec e nosuid em parties desejadas.
# ! / b i n / b a s h c a s e$ 1i n s t a r t ) #m o n t aa sp a r t i e sl i s t a d a s m o u n tor e m o u n t , r w , n o e x e c/ v a r m o u n tor e m o u n t , r w , n o e x e c/ t m p m o u n t e c h o" P a r t i e sS E Mp e r m i s s od ee x e c u o " ; ; s t o p ) #m o n s t aa sp a r t i e sl i s t a d a s m o u n tor e m o u n t , r w , e x e c/ v a r m o u n tor e m o u n t , r w , e x e c/ t m p m o u n t e c h o"P a r t i e sC O Mp e r m i s s od ee x e c u o" ; ; * )e c h o" e r r ou s e$ 0{ s t a r t | s t o p } " e x i t0 ; ; e s a c e x i t1
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
13/14
16/05/13
Concluso
Neste artigo foram tratados os conceitos de hardening, alm de demonstrar algumas tcnicas para endurecer o acesso ao sistema. Contudo, o assunto muito extenso e importante, devendo ser tratado como fator fundamental em um projeto de implementao de um servidor, antes mesmo de entrar em produo, desde a instalao at a disponibilizao de servios na rede. Sistemas como o AppArmor e o SELinux esto sendo utilizados para aumentar ainda mais a segurana em sistemas Linux, criando uma camada a mais de segurana, e devem ser considerados para tambm endurecer o sistema. importante salientar que existem tcnicas de hardening mais especficas, como o hardening em kernel, em servios como Apache e MySql, entre outros, que sero temas de novos artigos.
Somente esse assunto ja vale a assinatura da revista. Existe a inteno de explor-lo em profundidade ou ser somente dessa revista?
Que bom que gostou! Em breve a segunda edio da revista, aguarde! Atenciosamente,
Dev Media - Equipe de moderacao 6/22/2011 5:19:57 PM
Equipe Devmedia.
Muito bom artigo, parabns! Fica como sugesto um prximo artigo sobre Hardening em ambientes Windows. Abraos.
DevMedia
Curtir 8.550 pessoas curtiram DevMedia. DevMedia | Anuncie | Fale conosco Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Dire itos R e se rvados a we b-03
P lug-in social do F acebook
www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403
14/14