10.2. Introdução

Segurança é uma função que começa e termina com o administrador do sistema. Enquanto todo sistema BSD UNIX® multi-usuário tem alguma segurança nativa, o trabalho de criar e manter mecanismos adicionais de segurança para controlar aqueles usuários ``honestos'' é provavelmente uma das grandes e solitárias tarefas do ``sysadmin-Administrador do sistema''. Maquinas estão seguras sómente quando voce as faz assim, e o interesse por segurança está sempre competindo com a necessidade humana por conveniência. Sistemas UNIX, em geral, são capazes de executar um grande numero de processos simultaneos e muitos destes processos operam como servidores - Significando que entidades externas podem conectar e conversar com eles. A medida que os mini-computadores e mainframes de ontem tornaram-se os micro-computadores de hoje, e a medida que os computadores foram se conectando em redes e as redes se conectaram entre elas, segurança passou a ser um assunto sempre mais importante.

A melhor maneira de implementar segurança é através de camadas, como se fosse uma ``cebola''. Em resumo, o que você precisa fazer é tantas camadas de proteção quanto lhe for convêniente e então monitorar cuidadosamente o systemas contra criar invasões. Você não precisa exagerar em suas configuraões de proteção, ou irá interferir com a possibilidade de detecção, e a detecção é isoladamente um dos aspectos mais importantes de qualquer mecanismo de segurança. Por exemplo, faria pouco sentido definir o flag schg (veja chflags(1)) em cada binário do sistema, porque enquanto isto pode temporariamente proteger os binários, irá impedir que um intruso que obteve acesso ao seu sistema faça um alteração que seria facilmente detectada e levar seus mecanismos de segurança a nunca detectarem o intruso ou e a falha que foi explorada.

Segurança de sistema tambem está relacionada com várias formas de ataque, incluindo ataques que tentam travar, ou de alguma forma impedir o uso ou funcionamento do sistema, mas que não tentam comprometer a conta root (``break root''). Preocupações com segurança podem ser divididas em diversas categorias:

  1. Ataque de negação de serviços (DoS-Denial of service attacks).

  2. Comprometimento de contas de usuário.

  3. Comprometimento do root através de servidores acessíveis.

  4. Comprometimento do root via contas de usuários.

  5. Criação de portas de acesso clandestinas(Backdoor.

Um ataque de negação de serviço é uma ação que torna indisponíveis à máquina os recursos necessários. Tipicamente, um ataque DoS é um mecanismo de força bruta que tenta travar ou então tornar a maquina temporariamente inutilizável entupindo um serviço ou a capacidade da rede. Alguns ataques DoS tentam tirar vantagem de falhas na camada de rede para travar a máquina com um único pacote. Este último somente pode ser corrigido aplicando a correção da falha ao kernel. Ataques a servidores frequentemente podem ser corrigidos por uma configuração adequada dos limites da carga que os servidores impõe ao sistema sob condições adversas. Ataques de força Bruta por rede são muito difíceis de tratar. Um ataque por pacote falsificado-spoofed-packet, por exemplo, é quase impossível de parar, colocando seu sistema repentinamente fora da internet. Ele pode não ser capaz de colocar seu equipamento fora de operação, mas ele pode saturar sua conexão com a internet.

Um ataque às contas de usuário é até mais comum que um ataque DoS. Muitos administradores de sistema ainda executam servidores padrão de telnetd, rlogind, rshd, and ftpd em suas máquinas. Estes Servidores, por padrão, não operam dentro de conexões encriptadas. o resultado é que se você tem qualquer base de usuários de tamanho moderado, um ou mais dos seus usuários que conectam em seu sistema de um local remoto (o qual é o mais comum e conveniente meio de conectar a um sistema) terão a sua senha descoberta. O administrador de sistema atencioso irá analizar seus logs de acesso remoto buscando por endereços de origem suspeita mesmo para autenticações bem sucedidas.

Deve-se sempre assumir que uma vez o intruso tem acesso a conta de usuário, ele pode tomar a conta de root. De qualquer forma, a realidade é que em um sistema bem seguro e com boa manutenção, acessar uma conta e usuário não irá necesáriamente dar ao intruso acesso ao root. Esta distinção é importante porque sem o acesso a conta de root o intruso geralmente não poderá esconder suas pistas e talvez, melhor ainda, esteja apto somente a nada mais que bagunçar os arquivos do usuário, ou travar a maquina. o Comprometimento da conta de usuário é muito comum porque usuários tendem a não tomar as precauções que um administrador de sistema toma.

Administradores de sistema precisam ter em mente que ali existem potencialmente muitas maneiras de violar uma conta root em uma maquina. O intruso pode conhecer a senha de root, o intruso pode encontrar uma falha em um servidor rodando com o usuário root e obter acesso através de uma conexão de rede para este servidor, ou o intruso pode conhecer uma falha em um programa com provilégios de root que permite ao intruso violar a conta root uma vez que ele tenha invadido o sistema através de uma contra de usuário. Se um intruso encontrou uma maneira de violar a conta de root em uma maquina, ele pode não ter a necessidade de instalar uma porta de acesso clandestina-backdoor. Muitas das falhas em contas root encontradas e corrigidas até hoje envolveram um considerável esforço do intruso par limpar suas pistas, então a maioria dos intrusos instala uma porta de acesso clandestina-backdoor. Uma porta de acesso clandestina-backdoor fornece ao intruso uma maneira fácil e conveniente retomar o acesso pela conta de root do sistema, mas isto permite ao administrador de sistema uma maneira conveniente para detectar a intrusão. Making it impossible for an attacker to install a backdoor may actually be detrimental to your security, because it will not close off the hole the attacker found to break in the first place.

Security remedies should always be implemented with a multi-layered ``onion peel'' approach and can be categorized as follows:

  1. Securing root and staff accounts.

  2. Securing root - root-run servers and suid/sgid binaries.

  3. Securing user accounts.

  4. Securing the password file.

  5. Securing the kernel core, raw devices, and filesystems.

  6. Quick detection of inappropriate changes made to the system.

  7. Paranoia.

The next section of this chapter will cover the above bullet items in greater depth.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.