Sei sulla pagina 1di 14

16/05/13

DevMedia - Leitor Digital

Entenda o site

Tecnologias

Revistas LO GIN:

Cursos

Pocket vdeos SENHA:

Frum

Servios

Publicar

Compre Crditos

Loja Virtual

A ssine

Bem vindo a DevMedia!

Esque ci m inha se nha

C adastre -se

[Infra Magazine 1 - ndice]

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.

FLAVIO ALEXANDRE DOS REIS


Tecnlogo em Sistemas de Informao, Ps Graduando em Redes de Computadores (CESJF) e Especialista em Segurana da Informao - FMG/JF, Certificado LPIC-1.

www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403

1/14

16/05/13

DevMedia - Leitor Digital

Eduardo Pagani Julio


Mestre em Computao pela Universidade Federal Fluminense. Atualmente professor em Instituies de Ensino Superior da Regio de Juiz de Fora em disciplinas ligadas a redes, e consultor atuando principalmente nas reas de redes de computadores e segurana, com enfoque em Linux.

Marcos Fabiano Verbena


Bacharel em Sistemas de Informao CES/JF, Ps Graduando em Segurana da Informao - FMG/ JF

VIDEO TUTORIAL #1: Na vdeo aula deste artigo, veja na prtica como proteger o ambiente de TI atravs de tcnicas de Hardening.

[C lique aqui para ve r e m tam anho grande ]

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

DevMedia - Leitor Digital


utilizadas apenas para a realizao de acessos e monitoramento, conforme a Figura 1. O administrador dever ter ateno ao implementar as tcnicas. Caso no tenha experincia nos exemplos aqui demonstrados, faa os testes em mquinas virtuais a fim de entender e evitar possveis falhas na implementao.

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]

Figura 1. Estrutura utilizada para o artigo.

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

DevMedia - Leitor Digital


de parties apresentado na Tabela 1. Nota Devman 1: nosuid o parmetro usado para inibir a execuo de binrios com permisso de suid bit; noexec o parmetro usado para inibir a execuo de um binrio na partio; e noatime o parmetro responsvel por eliminar a necessidade de escrita no disco para arquivos que precisam ser somente lidos. O comando mount (comando UNIX usado para montar parties) permite utilizar algumas opes para aumentar a segurana nas parties. Crackers podem aproveitar do diretrio /tmp, onde por padro, qualquer usurio pode gravar dados no sistema, para introduzir um backdoor ou qualquer outro programa malicioso para ter um acesso completo ao sistema.

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.

Servios desnecessrios e inseguros


Depois do sistema instalado, deve ser realizada uma verificao minuciosa de todos os programas instalados e se so realmente necessrios, mesmo sendo uma instalao bsica. Um servidor nunca deve conter programas clientes. Servios como telnet, rshd, rlogind, rwhod, ftpd, sendmail, identd, wget, dentre outros, devero ser removidos. Estes servios podem ser desinstalados usando o gerenciador de pacotes do sistema operacional, ou desativando-os em todos os nveis de inicializao. Alm disso, podem-se remover entradas especficas dos programas no boot do sistema operacional. Neste exemplo so apresentados os passos necessrios para a remoo de pacotes que no so utilizados no sistema. A remoo de pacotes obsoletos dever ser executada, evitando assim que vulnerabilidades sejam exploradas. Para seguir o exemplo, crie um diretrio em /root chamado auditoria, onde ser gerado um arquivo com todos os pacotes que esto instalados, podendo assim analisar quais sero removidos. O comando dpkg -l, utilizado em distribuies GNU/Linux Debian e derivados, faz uma pesquisa no sistema e lista todos os pacotes instalados. Um filtro com o comando awk utilizado para formatar a sada do comando, mostrando assim somente a segunda e terceira colunas, e o comando sed, nesse exemplo, retira as cinco primeiras linhas. Esse resultado gravado em um arquivo texto chamado pacotes.txt, como pode ser visto na Listagem 1.
[abrir im age m e m jane la]

Tabela 1. Opes da tabela de parties.

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

DevMedia - Leitor Digital


remover o wget. Com esse comando, um cracker pode fazer com que o servidor alvo execute downloads de arquivos, atravs de um servidor Web forjado, por exemplo. Assim, o cracker pode jogar qualquer script que possa danificar o sistema ou at mesmo abrir uma porta para novas invases. O comando aptitude remove o aplicativo wget, e a opo purge faz com que os arquivos de configurao do aplicativo sejam removidos, caso existam, no deixando vestgios de sua instalao, como pode ser visto na Listagem 3.
Listagem 1. Listando pacotes instalados no Debian.
#d p k gl|a w k' { p r i n t$ 2 , $ 3 } '|s e d' 1 , 5 d '> / r o o t / a u d i t o r i a / p a c o t e s . t x t

Listagem 2. Listando pacotes instalados no Red Hat.


# r p mq a>/ r o o t / a u d i t o r i a / p a c o t e s . t x t

Listagem 3. Removendo aplicativos.


#a p t i t u d ep u r g ew g e t

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.

Procura de senhas fracas


A senha deve ser nica, intransfervel e de propriedade de um nico usurio. O administrador no deve saber essas senhas. Um procedimento muito comum para isso consiste na alterao da senha no momento do primeiro login do usurio. Dessa forma o administrador no ter acesso senha escolhida pelo usurio. Mas, na maioria das vezes, as senhas escolhidas so fceis de serem descobertas, pois so usadas sequncias simples, como 123456, ou informaes pessoais como datas de aniversrio, nome prprio, entre outras. Nestes casos, possvel utilizar ferramentas capazes de avaliar se a senha do usurio fraca ou no. O utilitrio John the Ripper pode ser utilizado com a finalidade de encontrar senhas fracas escolhidas por usurios de um sistema. Encontrando senhas fracas, o administrador poder solicitar que o usurio efetue a substituio da senha por outra que atenda a poltica de segurana, tornando assim o sistema mais robusto e tolerante explorao de vulnerabilidades. Se uma auditoria est sendo executada em um servidor GNU/Linux de uma empresa, ser necessrio descobrir se os usurios esto usando senhas fracas. No que diz respeito s senhas, a norma ISO 27002 diz nos itens 11.2.3 e 11.3.1 que devem ser controladas por meio de um processo de gerenciamento formal e que os usurios sejam solicitados a seguir boas prticas de segurana da informao na seleo e uso de senhas. No exemplo, o aplicativo John the Ripper utilizado para teste de senhas fracas. Ele uma ferramenta de Brute Force (fora bruta, que testa combinaes de senha para encontrar a resposta), que pode ajudar a descobrir senhas fracas de usurios, checando diretamente o arquivo /etc/shadow dos servidores. O aplicativo pode ser instalado com o aptitude, como pode ser visto na Listagem 4.
Listagem 4. Instalando o John the Ripper.
# a p t i t u d ei n s t a l lj o h n

[abrir im age m e m jane la]

Figura 2. Execuo do John the Ripper procurando por senhas fracas.

www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403

5/14

16/05/13

DevMedia - Leitor Digital


O John the Ripper executado passando como parmetro o arquivo /etc/shadow. O comando time foi acrescentado para que possa contar o tempo que o aplicativo levou para descobrir a senha dos usurios e tambm do root, conforme mostra a Figura 2. Regras para definir senhas fortes devem ser levadas em considerao como, por exemplo, estipular um nmero mnimo de caracteres (por exemplo, 10 caracteres), utilizar letras minsculas, maisculas, nmeros e caracteres especiais. Faa com que as senhas sejam alteradas em intervalos de tempo curtos, que podem ser definidos pelo administrador. Um valor que pode ser adotado a cada 20 dias, por exemplo. Defina a quantidade de senhas j utilizadas que no podero ser reaproveitadas. Deve-se tambm educar os usurios para que no divulguem suas senhas para terceiros.
[abrir im age m e m jane la]

Figura 3. Alterando as senha dos usurios.

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.

Desconexo de usurios no autorizados


Inicialmente importante ter o conhecimento de que usurios no autorizados podem estar dentro ou fora da empresa. O acesso no autorizado por sistemas externos deve ser cancelado com extrema urgncia, em especial se o usurio estiver ocultando sua identidade. Para os casos de acesso por usurios internos no autorizados, podem ser necessrias aes disciplinares dependendo da natureza do acesso.

www.devmedia.com.br/websys.5/webreader.asp?cat=62&artigo=3403&revista=inframagazine_1#a-3403

6/14

16/05/13

DevMedia - Leitor Digital


importante salientar que, quando ocorre uma invaso de sistema, fundamental que as evidncias relacionadas ao acesso indevido sejam registradas antes da desativao da conta no autorizada, tendo cuidado para no destruir provas relacionadas ao crime.

Colocar senha criptografada no GRUB


Muitos administradores no esto preparados para lidar com estruturas crticas. O simples acesso fsico de um usurio a sala de servidores pode representar uma violao de segurana grave, pois este poder conseguir acesso de root se reiniciar o servidor e alterar a senha do root atravs do gerenciador de boot (grub). Esse processo poder ser evitado se uma senha criptografada for adicionada ao gerenciador, no permitindo que um usurio qualquer inicie o sistema no modo de segurana, por exemplo.

Poltica de utilizao de servios de Rede


TCP wrappers oferecem controle de acesso a vrios servios. A maioria dos servios de rede modernos, como SSH, Telnet e FTP, utilizam os TCP wrappers que ficam monitorando a entrada de um pedido e o servio requisitado. O uso do TCP wrappers uma boa prtica na implementao de segurana em redes, limitando o uso dos servios de rede. Liberar acesso somente a IPs desejados, configurar as restries do ssh no permitindo login como root e configurar os mdulos do pam para restringir acesso ao servidor em determinado horrio, so boas prticas que devem ser adotadas.

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

DevMedia - Leitor Digital

Aps 60 segundos de inatividade, o shell far logout automtico, conforme mostra a Figura 4.
[abrir im age m e m jane la]

Figura 4. Terminal efetuando logout automtico.

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

DevMedia - Leitor Digital


#N oa c e i t a rl o g i ns e ms e n h a P e r m i t E m p t y P a s s w o r d sn o #U s a rom o d u l od op a mp a r as ea u t e n t i c a r U s e P A My e s #D e f i n i ru s u r i o sq u et e mp e r m i s s od ef a z e rl o g i n A l l o w U s e r s f l a v i om a r c o se d u a r d 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

Observe que a porta 80 est sendo filtrada, conforme a Listagem 13.

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

DevMedia - Leitor Digital


C U P S1 . 3 . 9 M y S Q L5 . 0 . 7 5 0

Listagem 12. Bloqueando a porta 80 com iptables.


# i p t a b l e sAI N P U Tie t h 0pt c pd p o r t8 0jD R O P

Listagem 13. Conferindo portas com nmap.


# n m a pAp8 0l o c a l h o s t P O R T 2 2 / t c p 2 5 / t c p 5 3 / t c p 8 0 / t c p S T A T ES E R V I C EV E R S I O N 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 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

Listagem 14. Script sugerido para remoo de permisses SUID-BIT.


# v i m/ r o o t / a u d i t o r i a / l o c a l i z a _ s u i d . s h # ! / b i n / b a s h

#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 . . "

#f a zu m ab u s c ae mt o d os i s t e m ap o ra r q u i v o s q u ec o n t e n h a map e r m i s s od eS U I DB I Tes a l v ae mu ma r q u i v ot e x t o f i n d/p e r m4 0 0 0>/ r o o t / a u d i t o r i a / l i s t . s u i d

#E n v i am e n s a g e mn at e l ao r i e n t a n d ooq u ed e v es e rf e i t o e c h on" D e s e j ar e m o v e roS U I DB I Td o sa r q u i v o s ? ( S / N ) : "

#R e c e b eao p oe s c o l h i d a r e a da c a o

#E x e c u t aaa o c a s e$ a c a oi n S | s ) c h m o dR vs/ e c h o"P e r m i s s e sd eS U I DB I TR e m o v i d a s ! " s l e e p3 e x i t ; ; N | n ) e x i t ; ; * ) e c h o" O p oI n v l i d a ! ! " s l e e p3 e x i t ; ; e s a c

Listagem 15. Alterando as permisses do script.


# c h m o d7 0 0/ r o o t / a u d i t o r i a / l o c a l i z a _ s u i d . s h

Listagem 16. Executando o script com o parmetro n ou N.


# . / l o c a l i z a _ s u i d . s hn

Listagem 17. Listando o diretrio auditoria.


#l s/ r o o t / a u d i t o r i a / l i s t . s u i d

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

DevMedia - Leitor Digital


Agora execute o script utilizando o parmetro s ou S, removendo assim a permisso SUID BIT de todos os binrios, como visto na Listagem 18. Deve-se observar quais binrios sero necessrios ficar com a permisso ativa. Considerando que o firewall est sendo desenvolvido, o comando su ser necessrio para que o usurio comum possa virar root e assim executar as polticas implementadas no firewall. Utilizando o comando chmod, atribui-se a permisso suid somente ao comando su, como visto na Listagem 19. Outro binrio que precisamos deixar com a permisso SUID BIT ativa o passwd, para que os usurios consigam trocar suas prprias senhas. Com o comando chmod atribui-se a permisso SUID BIT ao binrio /usr/bin/passwd, como visto na Listagem 20. Com essa modificao, um dos problemas ser resolvido. Mas apenas retirar a permisso SUID BIT dos comandos no evitar problemas no sistema de arquivos. Segundo a norma ISO 27002 nos itens 10.4 e 10.4.1, deve-se proteger a integridade do software e da informao e ter um controle contra cdigos maliciosos. Uma backdoor um cdigo malicioso. Um cracker pode instalar uma backdoor no sistema utilizando uma tcnica como, por exemplo, o PHP Injection (insero de script malicioso atravs de pginas vulnerveis), a colocando dentro do /tmp com permisses de SUID BIT e execut-la remotamente. Para exemplificar um ataque ao diretrio /tmp, utilizado o comando adduser para adicionar um usurio flavio, como visto na Listagem 21. Seguindo o exemplo, ser utilizado o comando cp para copiar todos os shells do sistema para a partio /tmp e, logo aps, ser atribuda a permisso de SUID BIT, como visto na Listagem 22. A seguir apresentada uma sequncia de comandos, onde o usurio flavio est logado no terminal tty1, o que pode ser verificado com o comando w. Em seguida realizado o acesso ao diretrio /tmp, onde possvel executar o script sh de acordo com a Listagem 23.
Listagem 18. Executando o script com o parmetro (s ou S).
# . / l o c a l i z a _ s u i d . s hs

Listagem 19. Adicionando permisso de SUID-BIT ao binrio su.


#c h m o d+ s/ b i n / s u

Listagem 20. Adicionando permisso de SUID-BIT ao passwd.


#c h m o d+ s/ u s r / b i n / p a s s w d

Listagem 21. Adicionando o usurio flavio.


# a d d u s e rf l a v i o

Listagem 22. Teste com binrios que tenham permisso SUID-BIT.


#c p/ b i n / * s h */ t m p #c h m o d4 7 5 5/ t m p / * s h *

Listagem 23. Usurio comum com permisso de root.


$w 2 2 : 3 1 : 2 1u p 3 : 4 6 , 1u s e r s , l o a da v e r a g e :0 , 0 7 ,0 , 0 7 ,0 , 0 8 U S E R f l a v i o T T Y t t y 1 F R O M L O G I N @ 2 2 : 2 0 I D L E J C P U P C P UW H A T

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

DevMedia - Leitor Digital

Figura 5. Usurio comum recebendo direitos de root.

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

Listagem 25. Remontando o diretrio /tmp com a opo noexec.


#m o u n tor e m o u n t , r w , n o e x e c/ t m p

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]

Figura 6. Usurio comum sem direitos de root.

[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

DevMedia - Leitor Digital

Figura 7. Comando mount, em destaque a partio /tmp com opo noexec.

[abrir im age m e m jane la]

Figura 8. Tentando executar um binrio em uma partio com a opo noexec aplicada.

[abrir im age m e m jane la]

Figura 9. Arquivo /etc/fstab alterado com as opes noexec.

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

DevMedia - Leitor Digital

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.

A nacleto Pav o 20/6/2011 18:47

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.

Tiago Laurentino Soares 24/6/2011 15:19

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

Potrebbero piacerti anche