Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Segurança em rede )

Checklist de segurança

Introdução

Mais e mais novos usuários de Linux surgem todos os dias, e graças à facilidade de acesso à Internet nos dias de hoje, a maior parte deles conecta suas máquinas pessoais a redes abertas sem maiores dificuldades.

Sabendo que o Linux é um sistema capaz de ser administrado remotamente, e que muitas configurações default de distribuições habilitam muitos processos servidores para iniciar automaticamente após a instalação, estes novos usuários acabam se transformando em uma ameaça a si próprios, pois expõem à Internet uma máquina aberta, devido à sua falta de conhecimento técnico.

Para piorar a situação, há abundância de textos sobre "segurança" disponíveis na internet, "ensinando" que para garantir uma configuração segura da sua máquina, tudo o que você tem a fazer é "comentar as linhas do inetd.conf" - conselho enganoso, mas infelizmente muito divulgado.

Não sou a pessoa certa para escrever sobre técnicas avançadas de segurança, mas certamente quero fazer a minha parte em difundir a consciência sobre a importância de uma configuração segura. Neste artigo, estarei apresentando uma breve lista do que você deve fazer para ter uma máquina (workstation - se você precisa configurar um servidor, vai ter que se informar muito mais) minimamente segura, a ponto de expô-la à Internet sem grandes preocupações.

Não serão apresentadas as técnicas, mas apenas a descrição genérica dos passos. Existe muita documentação disponível na Internet para que você aprenda as técnicas e sequências de comandos. Comece procurando pelos howtos e guias do LDP, busque os softwares citados no Freshmeat e procure informações detalhadas no Security Focus.

Primeiros passos

A segurança começa pela instalação do seu sistema Linux. Se você tem uma máquina sem configurações especiais de segurança e quer torná-la segura, uma opção interessante é reinstalá-la completamente, suprimindo assim qualquer erro que tenha sido cometido no passado; lembre-se que uma máquina invadida e onde estranhos obtiveram privilégios de superusuário jamais poderá ser considerada segura novamente, exceto se totalmente reinstalada a partir de uma mídia original (e se você corrigir as falhas que permitiram a invasão original!)

Ao instalar o sistema, lembre-se dos seguintes itens:

Serviços desnecessários

Uma instalação padronizada de sistema operacional costuma habilitar uma série de serviços dos quais você não precisa, e que podem vir a servir como ponto de acesso para um invasor. Removê-los é relativamente fácil, e um passo essencial.

Editar corretamente o arquivo /etc/inetd.conf é básico. Este arquivo define quais os serviços básicos de internet estarão habilitados na sua máquina, e portanto acessíveis a partir de outras máquinas. Verifique atentamente quais destes serviços estão habilitados, e retire os que você não tiver uma boa justificativa para manter. Na dúvida, retire!

Retirar um serviço do inetd.conf é simples - basta acrescentar um caracter # no início da linha, transformando-a em um comentário. Se posteriormente você precisar habilitar novamente o serviço, basta retirar o #.

Máquinas domésticas em geral não precisam de nenhum serviço habilitado no inetd.conf - e podem até mesmo deixar de carregar o serviço inetd (inetd) na inicialização, veremos mais sobre isto a seguir. Usuários de serviços online (como o irc) podem querer habilitar apenas o serviço auth. Não se deixe enganar pela ilusão de rodar servidores telnet, ftp e finger na sua máquina doméstica, exceto se você realmente tiver uma boa justificativa.

Após definir a sua configuração do inetd.conf, reinicie o processo do inetd, comandando killall -HUP inetd

Em seguida, você precisa verificar os serviços de rede standalone, que não são gerenciados pelo inetd.conf, mas sim pelos init scripts, de modo geral localizados abaixo do diretório /etc/rc.d. Cada distribuição de Linux lida com estes scripts de uma maneira um pouco diferente, então você terá que ler um pouco da documentação da sua preferida. Ferramentas como o ntsysv, o ksysv e o tksysv podem ajudar, e a sua distribuição pode ter oferecido algum outro pacote adicional que permita selecionar os scripts facilmente.

De modo geral, os init scripts definem quais serviços serão inicializados no momento do boot. Alguns serviços são aparentemente inócuos do ponto de vista de uma possível invasão (e.g. sound, random, apmd), enquanto outros claramente oferecem algum raio de ação para o potencial invasor (e.g. portmap, xntpd, netfs, rstatd, rusersd, rwalld, rwhod, bootparamd, squid, yppasswd, ypserv, dhcpd, snmpd, named, routed, lpd, gated, httpd, xfs, linuxconf e muitos outros).

Ao definir quais scripts você executará no boot, use o mesmo critério da seleção dos serviços do inetd; na dúvida, retire - se mais tarde você precisar, adicione novamente (após avaliar o impacto sobre a segurança). Particularmente evite rodar o servidor do linuxconf, rstatd, rusersd, rwalld, rwhod, os serviços do NIS (yp*) e os daemons de roteamento (como o gated). Se você for rodar um servidor web para uso interno, ou para testes, certifique-se de configurá-lo para aceitar requests apenas da sua rede interna, ou de sua máquina pessoal - segurança de servidores não será coberta neste texto.

Cuidado ao mexer nos scripts de inicialização - você pode ter problemas sérios! Leia sempre a documentação antes, e tenha à mão um disquete de inicialização completa, como o tomsrtbt para emergências, já que provavelmente o disquete de boot gerado durante a sua instalação do Linux não resolverá o problema. Outra boa dica é aprender a iniciar o sistema em modo monousuário quando tudo falhar.

Os detalhes

Agora vem o balaio de gatos. Todos estes passos são importantes, e podem ser executados de muitas maneiras - consulte a documentação existente.

Conclusão

Seguindo os passos acima, você terá condições de obter um razoável nível de confiança em sua instalação de Linux. Com o tempo, talvez eu tenha condições de escrever outros artigos detalhando os procedimentos acima. Até lá, você está convidado a pesquisar a documentação adicional (links no início do texto) para resolver seus próprios problemas. Depois, que tal sintetizar o que você aprendeu na forma de um artigo ou mesmo uma dica? Entre em contato, poderemos publicar seu trabalho.


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.