|
Unix e Linux
Como tudo começou
O UNIX foi desenvolvido na década de 70 pela Bell Labs. Seus criadores
foram Ken Thompson e Dennis Ritchie, ajudados por uma equipe. O nome é
uma gozação com o sistema Multics criado na década
de 60 em que os dois se basearam. Enquanto ele tentava ser vários
(Multi) o Unix era um só. Construiram um sistema operacional para
programadores. Eles desejavam um resultado tão bom que a linguagem
C foi desenvolvida só para ajudar a fazer melhores ferramentas
para o projeto. A medida que o tempo foi passando, o UNIX foi se mostrando
um sistema versátil e extremamente eficiente. Um pouco difícil
para o usuário inexperiente, mas muito eficaz. Com esse sucesso
todo, o sistema evoluiu e teve várias distribuições,
tais como, Digital Unix, Aix, Unix V, Xenix, Minix e muitas outras. Também
inspirou a criação de sistemas operacionais como o DOS e
OS/2.
A sua mais famosa adaptação é o Linux, criado por
Linus Torvalds (daí provém o seu nome). É uma distribuição
gratuita (coisa que nem todos os unix são) e portada para os computadores
pessoais já que geralmente os outros sistemas são para grandes
computadores (mainframes). O sistema UNIX vêm se mantendo a mais
de 30 anos como o sistema mais seguro e poderoso de todos.
Não entrarei em detalhes sobre o UNIX, já que esse livro
não se prende a um sistema. Darei uma visão geral sobre
como é sua estrutura e por quê difere tanto do Windows. O
objetivo maior de um invasor em um sistema com UNIX é obter o acesso
ROOT. Ele pode fazê-lo tentando explorar alguma falha em algum servidor
da vítima (veja no capítulo falhas), uma má-configuração,
ou instalar um backdoor. Não importa. Se o invasor não conseguir
acesso root ele não têm nada. E com certeza fará de
tudo para conseguí-lo.
Autenticação
de senhas – a criptografia DES
Sempre ao iniciar uma sessão, o sistema irá pedir-lhe nome
de usuário e senha. Mas onde ficam armazenados esses dados?. O
arquivo /etc/passwd é o responsável por guardar as senhas
no sistema. O processo de autenticação no UNIX é
extremamente eficiente. Aqui um exemplo simples de como o arquivo se organiza:
mflavio : Marcos Flávio
:0 : 0: sEdkiUnbgFsbgTrVbgtTrfvfR : / : /bin/sh
A primeira seção
é o login do usuário, no caso do exemplo é o mflavio.
Esse é o nome usado para acesso ao sistema. Logo depois vemos o
nome completo do usuário, que é Marcos Flávio. Depois
vêm dois números. Eles são os números de indentificação
de usuário e grupo. Os chamados IDs. No UNIX cada usuário
pertence a um grupo, seja ele o root (administradores) , webmasters, users,
o que for. Quanto menor for o número que aparece no arquivo passwd
, maior é o poder do usuário. No exemplo temos dois zeros,
isso quer dizer que o usuário têm poderes de administrador
e pertence ao grupo root. Se fosse um usuário comum, provavelmente
o número estaria entre 20 e 60.
A próxima seção é a mais interessante: a senha.
Mas não a senha real, como é escrita ao se logar no sistema.
Ela está criptografada usando um sistema chamado DES, desenvolvido
especialmente para o UNIX. Contrariando alguns pensamentos, o DES não
pode ser descriptografado. Mas ainda assim existem métodos para
conseguir obter as senhas. Leia sobre ele no capítulo 14. Depois
da senha criptografada temos o diretório padrão do usuário
(que no caso do root é a raiz “/”) e seu interpretador
de comandos ou shell (/bin/sh). Existem outros shells, como o shell C
(/bin/csh). A utilização de cada um depende do gosto do
usuário.
Um
exemplo de arquivo de senha simples.
Shadowing
Na tentativa de segurar os invasores e impedir que consigam informações
sobre o sistema, foi criado o sistema de Shadowing. Ele funciona da seguinte
maneira: deixa-se um arquivo /etc/passwd “falso” para ser
pego pelo cracker. Nesse arquivo, geralmente no lugar das senhas criptografadas
estará apenas um asterisco. Os administradores mais maldosos que
querem ver o invasor perder seu tempo, colocam algumas entradas criptografadas
falsas de senhas. O arquivo verdadeiro está bem guardado em algum
lugar do sistema. Como isso varia de sistema a sistema e o local pode
ser modificado, teriam que procurar muito para encontrá-lo. É
uma medida de segurança a mais, mas ainda assim não segura
um bom cracker, que nem necessita do arquivo de senhas mais. Explora os
erros.
SSH, Telnet e Rlogin
Os métodos de conexão remota são muito utilizados
em sistemas UNIX. O Telnet e o Rlogin (remote login) por décadas
foram largamente usados para que recursos externos distantes pudessem
ser acessados. É como o patrão que de casa quer efetuar
um login no sistema da empresa e verificar os logs para ver se está
tudo bem. Acontece que após a popularização do sniffer
esses acessos remotos ficaram perigosos pois eles enviam dados a texto
puro, sem nenhum tipo de criptografia. Esse problema foi resolvido com
a criação do SSH (Secure Shell) que começa a criptografar
mesmo antes do processo de login.
Hoje, o SSH têm sido usado demais nos sistemas Linux, até
já vêm com algumas distribuições. O erro que
algumas pessoas fazem é confiar demais na sua eficiência.
Como qualquer outro programa, o Secure Shell possui bugs graves. Até
muitos se for comparado com outros serviços como o Apache. Portanto
se o que você quer é a segurança do sistema, esteja
sempre atualizando o seu SSH.
Vírus e trojans
Essa é uma vitória do Unix. A coisa mais rara da face da
Terra (mais raro que ganhar sozinho três vezes seguidas na mega-sena)
é aparecer algum vírus para esse sistema. Tanto que as empresas
criadores de anti-vírus iriam falir se fizessem versões
exclusivas para Unix e Linux. Trojans também existem muito poucos,
e esses só conseguem ser instalados com o poder de superusuário
(ou ROOT). Se você quer se livrar de uma vez por todas de problemas
bobos como vírus de macro(Melissa) , worms(Love Letter) e outros,
venha pra o Unix. Não irá se arrepender.
Buffer overflows e condição de corrida
Leia o capítulo sobre falhas.
Aumentando a segurança do sistema
Para aumentar a segurança é o que chamamos de praxe: esteja
sempre atualizando o seu sistema por patches encontrados, teste-o com
ferramentas de crackers para saber se é vulnerável. Configure
os serviços que vão iniciar com o sistema no /etc/inet.conf
. Cheque as permissões e os logs do sistema todos os dias. Use
o shadowing. Utilize um bom firewall. Confira se todas as senhas padrões
estão desabilitadas. E o essencial: reze. É uma ótima
ajuda atualmente.
|