Protegendo o Servidor Linux

Uma instrução à segurança do servidor GNU/Linux

Servidores—utilizados por testes ou produção—são os alvos principais dos hackers. Ao executar as etapas apropriadas, você pode tornar um servidor vulnerável em um servidor protegido e ajudar a impedir hackers externos. Aprenda como proteger sessões SSH, configurar regras de firewall e configurar a detecção de intrusão para alertá-lo sobre qualquer possível ataque em seu servidor GNU/Linux® . Assim que tiver obtido uma base sólida sobre os conceitos básicos de segurança do seu servidor, você pode criar com base neste conhecimento para proteger ainda mais seus sistemas.

Jeffrey Orloff, Director of IT/Security, SafeWave, LLC

Jeffrey Orloff atua como Diretor de TI e Segurança da SafeWave, LLC. Ele também trabalha como coordenador de tecnologia para o Departamento de Educação Alternativa/Departamento de Justiça Juvenil do Distrito Escolar do Condado de Palm Beach.



17/Dez/2008

Antes de Iniciar

Neste tutorial, você aprende os conceitos básicos de segurança de um servidor GNU/Linux e obtém uma base sólida na qual construir.

Sobre este tutorial

Este tutorial adota uma abordagem básica para proteger um servidor executando o sistema operacional GNU/Linux. Juntamente com seu tutorial associado "Protegendo o Desktop do Linux," eles apresentam os conceitos básicos de segurança e o conduzem por exemplos passo a passo de como proteger os ambientes de desktop e servidor e a confidencialidade, a integridade e a disponibilidade dos dados que eles contêm.

Objetivos

Neste tutorial, você aprende sobre os conceitos básicos em administração de segurança, incluindo como proteger os logins remotos Secure Shell (SSH), criar regras de firewall e logs de observação para possíveis ataques.

Pré-requisitos

Este tutorial é escrito para o usuário do GNU/Linux iniciante. Você deve ter alguma familiaridade com as instalações do sistema operacional e a linha de comandos. Para compreender completamente os conceitos neste tutorial, você deve ter percorrido o tutorial acompanhante, " Protegendo o Desktop do Linux."

Requisitos do sistema

Para executar os exemplos neste tutorial, você precisa instalar o Ubuntu Server Edition em um computador ou em uma máquina virtual, tal como Sun VirtualBox. Você também precisa de uma conexão com a Internet para fazer download de pacotes de software específicos utilizados no tutorial.


Introdução

Para entender os conceitos básicos de proteção de um servidor executando o GNU/Linux como o sistema operacional, você precisa estar atento ao fato de que embora muitos conceitos principais de segurança se apliquem ao sistema operacional do desktop e ao sistema operacional do servidor, as maneiras pelas quais eles são protegidos são completamente diferentes.

O Princípio do Privilégio Mínimo

Uma rede verdadeiramente segura garante que o Princípio do Privilégio Mínimo seja aplicado na empresa, não apenas nos servidores. As funções executadas pelos servidores e desktops também ordenam como o sistema operacional, o próprio computador, devem ser protegidos. O desktop pode ser um destino atrativo para um script kiddie (hacker amador) cujos ataques são sempre impedidos pelo software e pelos scanners de malware atualizados, mas um centro de dados hospedando contas de usuários ou informações de cartão de crédito é um alvo muito mais atrativo para o hacker qualificado que pode explorar fraquezas sem detecção em um ambiente que não foi protegido.

Proteger um servidor é muito diferente de proteger um computador desktop por uma variedade de motivos. Por padrão, um sistema operacional do desktop é instalado para fornecer ao usuário um ambiente que pode ser executado automaticamente. Os sistemas operacionais de desktop são vendidos com a premissa de que requerem configuração mínima e vêm carregados com o máximo de aplicativos possível para que o usuário esteja ativo e em execução. De modo inverso, um sistema operacional do servidor deve seguir o Princípio do Privilégio Mínimo, que determina que ele deve ter apenas os serviços, o software e as permissões necessárias para executar as tarefas pelas quais é responsável.


Revisitando as Leis Imutáveis da Segurança

Em novembro de 2000, Scott Culp da Microsoft redigiu o que ele chamou de 10 Leis Imutáveis da Segurança (consulte Recursos para obter um link). Há duas versões destas leis: uma para usuários e uma para administradores de sistema. Ao longo dos anos, estas leis têm sido revisadas e desprezadas por pessoas no segmento de mercado de segurança. Apesar de algumas críticas negativas, as 10 leis para administradores podem servir como uma base excelente para proteger qualquer sistema se aplicadas corretamente.

Primeiro, a seguinte lei é aplicável a práticas gerais de segurança: A segurança só funciona se a maneira segura também for a maneira fácil. Esta é a lei mais importante para qualquer administrador do sistema. Se uma política de segurança é tão firme que as pessoas não conseguem realizar suas tarefas, elas encontrarão maneiras de evitar a segurança estabelecida, algumas vezes criando uma maior vulnerabilidade do que a política que foi estabelecida para evitar. O melhor exemplo está relacionado às senhas. Senhas fortes devem fazer parte de qualquer política de segurança, mas algumas vezes, as políticas vão longe demais. Exigir que os usuários se lembrem de uma senha que tenha 15 caracteres e que consista em letras maiúsculas, letras minúsculas, números e símbolos é pedir que uma alta porcentagem de usuários escreva sua senha em um post-it e coloque-o em seu monitor.

Quatro das leis de Culp aplicam-se diretamente ao material coberto neste tutorial:

  • Se você não se mantiver atualizado em relação às correções de segurança, sua rede não será sua por muito tempo. Os hackers descobrem vulnerabilidades todos os dias. Como um administrador do sistema, você precisa ter certeza de que o seu sistema está atualizado. Mas isto o leva até uma diferença entre proteger um desktop e proteger um servidor. Em geral, as atualizações para o desktop do GNU/Linux devem ser instaladas quando elas são publicadas. Quando você está lidando com o servidor, deve testá-lo em um ambiente de servidor de pesquisa ou desenvolvimento, para ter certeza de que a correção não interfira nas operações do servidor ou dos usuários.
  • A vigilância eterna é o preço da segurança. Em um esforço para ter certeza de que seu servidor GNU/Linux está seguro, você deve verificar os logs constantemente, aplicar correções de segurança e acompanhar alertas. A vigilância é o que mantém seu sistema seguro.
  • A segurança não está relacionada a evitar riscos; ela está relacionada ao gerenciamento de risco. Fatos acontecem. Pode haver uma epidemia de malware ou seu Web site pode ser atacado. Ou pode acontecer algo completamente fora do seu controle, tal como um desastre natural. Uma hora ou outra, a segurança do seu sistema será testada. Certifique-se de ter feito todo o possível para proteger seu sistema e de lidar com a ameaça de uma forma que mantenha seu servidor e recursos disponíveis para os usuários que contam com eles.
  • A tecnologia não é um remédio capaz de curar todas as doenças. Se há uma lei que todos aqueles que trabalham com tecnologia devem conhecer, é esta. Simplesmente lançar mais tecnologia no problema de segurança não o resolverá. A vigilância por parte do administrador do sistema, a adesão por parte do gerenciamento e a aceitação por parte dos usuários devem ser estabelecidas para que uma política de segurança funcione de maneira efetiva.

Planejar a Instalação do Servidor

A primeira etapa na proteção de um servidor GNU/Linux é determinar a função do servidor. Para que você utilizar o seu servidor determina quais serviços precisam ser instalados no servidor. Por exemplo, se o servidor em questão é utilizado como um servidor da Web, você deve instalar serviços LAMP. Por outro lado, se o servidor for utilizado para serviços de diretório, o Linux Apache MySQL PHP/Perl/Python (LAMP) não tem motivos para ser instalado nesta máquina. Os únicos aplicativos e serviços que devem ter permissão para executar em seus servidores são aqueles que são necessários para a tarefa que o servidor deve executar. Nenhum item extra deve ser instalado, por dois motivos:

  • Instalar software extra ou executar serviços extras significa que há mais uma porta que você precisa trancar. Por exemplo, se você está executando o Lightweight Directory Access Protocol (LDAP) em um servidor para serviços de diretório, precisa certificar-se de que o sistema operacional e o LDAP estejam atualizados com suas correções e patches de segurança para que qualquer vulnerabilidade conhecida seja coberta. Se o LAMP estivesse instalado neste servidor, ele exigiria atualizações e atenção, mesmo que não estivesse sendo utilizado. Sua simples existência no servidor forneceria a um hacker outra via de acesso ao seu sistema. Da mesma forma, qualquer outro software instalado neste servidor deve ser atualizado, receber patches e ser monitorado para garantir que ele não represente uma vulnerabilidade que um hacker possa explorar.
  • Instalar software extra em um servidor significa que alguém será tentado a utilizar tal servidor para algo que não está relacionado ao seu uso desejado. Utilizar o servidor para outras tarefas não somente retira recursos da execução de sua tarefa principal como também expõe o servidor a ameaças que provavelmente não o afetariam sem o software nele instalado.

Entre outras coisas, você deve decidir se vai ou não instalar uma interface gráfica com o usuário. Por anos, os administradores do GNU/Linux mantiveram certo orgulho por poderem administrar suas redes e servidores completamente a partir de uma interface da linha de comandos. Mas, recentemente, alguns administradores começaram a administrar seus servidores GNU/Linux através de uma GUI. A opção de instalar uma GUI como o Sistema Window X causou debates em diversos fóruns. De um lado, os defensores da interface da linha de comandos alegam o fato de que a GUI pode sobrecarregar os recursos de um sistema e, como ela é um serviço extra que não é necessário, fornece aos hackers vulnerabilidades adicionais. Este lado também destaca que os comandos podem ser digitados rapidamente através da linha de comandos, sem a necessidade de procurar em menus e pastas ao executar uma tarefa.

Do outro lado do debate, aqueles que apóiam um ambiente de GUI argumentam que o processo da GUI pode ser encerrado quando não estiver mais em uso para economizar recursos e evitar que qualquer vulnerabilidade seja explorada. Eles também argumentam que a GUI torna determinadas tarefas, tais como trabalhar com um banco de dados, muito mais fáceis para o administrador.

Login na GUI

Algumas pessoas que contam com uma GUI como Gnome ou KDE podem estar inclinadas a instalar um login gráfico como o GDM. Isto não é necessário porque você pode efetuar login a partir da interface da linha de comandos tão facilmente quanto o faria através de uma tela de login baseada em GUI. A única diferença é que você precisa utilizar o comando sudo startx se precisar administrar servidor através de uma GUI.

Instalar uma GUI em seu servidor é uma opção totalmente pessoal. Tudo neste tutorial é feito através da linha de comandos; mas se você desejar instalar uma GUI, as seguintes instruções mostram como instalar o Gnome com uma GUI de desktop:

  1. Após ter efetuado login em seu sistema, você deve acessar o prompt de comandos. Para instalar o núcleo do Gnome, digite o seguinte: sudo aptitude install x-window-system-core gnome-core
  2. Pressione Enter. Sua senha sudo será solicitada. Digite-a e, então, pressione Enter novamente. Você será informado sobre o que está sendo instalado.
  3. Para continuar com a instalação, digite Y e, então, pressione Enter. Fazer isso instala uma versão reduzida do Gnome que mantém os recursos do ambiente de desktop a um mínimo e economiza os recursos do sistema. Para instalar a versão completa do Gnome, insira sudo aptitude install x-window-system-core gnome
  4. Após pressionar Enter, você será solicitado a percorrer o mesmo processo, conforme anteriormente. Siga até que o Gnome seja instalado em seu sistema.
  5. Quando a instalação de qualquer um dos pacotes tiver sido concluída, ainda estará no prompt de comandos. Para abrir o Gnome, digite o seguinte: sudo startx

Protegendo o SSH

O SSH fornece a o usuário uma conexão com um computador remoto. Como uma substituição ao Remote Shell (RSH) e ao Telnet, o SSH é comumente utilizado pelos administradores de sistema para efetuar login em seus servidores a partir de um computador remoto para executar tarefas de manutenção e administração. Embora o SSH forneça um nível muito maior de segurança do que os protocolos que substituiu, você pode fazer algumas coisas para torná-lo mais seguro.

Segurança através da obscuridade

Um dos métodos mais comuns para proteger o SSH é alterar o número da porta que é utilizada para acessá-lo. A teoria é que um hacker utilizando a porta padrão ou TCP 22 para estabelecer uma conexão terá o acesso negado porque o serviço está em execução em uma porta segura.

Este método de proteção do SSH é o centro de vários debates em fóruns. Alterar o número da porta não evita que a porta do SSH seja localizada por um hacker com um scanner de porta que tenha tempo de varrer todas as portas em seu servidor; e por este motivo, muitos administradores de sistema não se dão ao trabalho de alterar a porta. Mas esta abordagem evita que script kiddies (hackers amadores) ataquem o SSH sem ferramentas automatizadas dedicadas a localizar portas TCP 22 abertas e hackers impacientes podem cansar de varrer seu servidor se não localizarem o SSH em execução no primeiro intervalo de portas que varrerem.

Para alterar o endereço de porta do SSH, primeiro você precisa instalar o SSH em seu servidor. Digite

sudo aptitude install openssh-server

Pressione Enter e digite sua senha. Este comando instala o openssh para uso para logins remotos em seu servidor.

Assim que você tiver um arquivo SSH para configurar, deve copiar o arquivo no caso de algo acontecer durante a configuração. Sempre é possível reverter para o original. Siga estas etapas:

  1. Na linha de comandos, digite sudo cp /etc/ssh/sshd_config /ete/ssh/sshd_config.back
  2. Pressione Enter e forneça sua senha para concluir o backup deste arquivo.

Instalar emacs

Para instalar emacs, utilize sudo aptitude install emacs Agora, você precisa localizar a parte do arquivo onde o número da porta está configurado. Assim que tiver localizado (o padrão é a porta 22), você pode alterá-lo para um número arbitrário. Há mais de 65.000 portas; escolha algo na parte superior da escala, mas um número do qual você se lembrará. Lembre-se, hackers qualificados sabem com as pessoas pensam. Alterar o número da porta para 22222 ou 22022 é um erro comum—escolha um número que não seja facilmente adivinhado.

Agora, você precisa alterar as permissões para o arquivo sshd_config de forma que possa alterá-lo:

  1. Digite sudo chmod 644 /etc/ssh/sshd_config
  2. Pressione Enter. Agora você pode utilizar um editor de texto como emacs ou vi para alterar o arquivo: emacs /etc/ssh/sshd_config

Deixe o emacs ou o vi aberto enquanto faz mais alterações neste arquivo.

Permissões de login como root

O usuário root está desativado em todas as distribuições do Ubuntu, mas é possível ativar esta conta. Se você estiver utilizando o SSH, não deve conceder permissão à conta root para efetuar login no servidor remotamente no caso de você ou um hacker ter ativado esta conta. Enquanto estiver com o editor aberto, role até a linha onde se lê PermitRootLogin. O padrão é yes.

Usuários na lista de desbloqueio

Outra etapa que você executar para proteger o SSH em seu servidor é permitir que apenas determinados usuários utilizem este serviço. Este processo é conhecido como lista de desbloqueio. Para criar uma lista de desbloqueio, primeiro você precisa dos nomes de usuário das pessoas que terão permissão para utilizar o SSH para acessar o servidor remotamente. Então, siga estas etapas

  1. Inclua esta linha em seu arquivo sshd_config:
    		# Permitir apenas determinados usuários
    		AllowUsers username username username

    Substitua os nomes de usuário da sua lista no lugar da palavra username. Alternativamente, você pode permitir que grupos acessem logins do SSJ utilizando # Permitir apenas determinados grupos AllowGroups group group Novamente, substitua por seus grupos de usuários a palavra group no exemplo.
  2. Salve seu arquivo de configuração e saia do seu editor. É necessário reiniciar o SSH para que as alterações tomem efeito. Não é necessário encerrar seu computador -- apenas digite sudo service ssh restart
  3. Pressione Enter e forneça sua senha. O serviço é reiniciado e informa [OK].

Há muitas outras maneiras de proteger ainda mais o SSH que são destinadas a usuários mais avançados. Quando você tiver adquirido mais experiência trabalhando com o GNU/Linux e o SSH, deve considerar executar estas etapas.


Criar Regras de Firewall

Você pode negar acesso ao seu servidor através do seu firewall. O Servidor Ubuntu utiliza um firewall denominado Uncomplicated FireWall (UFW), que é na verdade uma ferramenta de gerenciamento para iptables. Os pacotes de rede de filtros iptables baseados em uma série de regras criadas pelo administrador do sistema. Os iptables podem ser complicados para iniciantes, portanto, o UFW torna-os mais simples. Utilizar o UFW pode ajudá-lo a proteger seu servidor; mas se você estiver realmente interessado em segurança de servidores, aprender como criar regras para iptables permitirá que você aprimore a segurança de um servidor.

Para começar a utilizar o UFW, você precisa instalá-lo. Siga estas etapas:

  1. A partir da linha de comando, digite sudo aptitude install ufw
  2. Pressione Enter e insira sua senha. Pressione Enter novamente para instalar o pacote.
  3. Para ativar o firewall, digite o seguinte: sudo ufw enable
  4. Pressione Enter. Você verá a mensagem Firewall iniciado e ativado na inicialização do sistema. Agora você pode criar regras para o seu firewall.

Você se lembra que alterou a porta do SSH anteriormente? Para abrir a porta através do UFW criando uma regra, digite o seguinte na linha de comandos:

		sudo ufw allow 65000

Este comando permite acessar sobre a porta 65000 e permite que o SSH trafegue no seu servidor.

Para negar o acesso sobre esta porta, utilize o seguinte:

sudo ufw deny 65000

Para permitir ou negar tráfego, especificamente na porta TCP 65000, utilize o seguinte comando:

sudo ufw allow 65000/tcp

Você também pode permitir ou negar o tráfego de acordo com o protocolo que ele utiliza. Por exemplo, para bloquear todo o tráfego do HTTP, também é possível utilizar este comando:

		sudo ufw deny http

Também é possível criar regras mais complicadas para negar ou permitir um serviço baseado em seu endereço IP. Por exemplo, se o seu desktop tinha o endereço IP 192.168.1.30 e seu servidor tinha um endereço IP 192.168.1.5, poderia possibilitar apenas ao endereço IP do seu computador a habilidade de estabelecer uma conexão SSH:

		sudo ufw allow proto tcp from 192.168.1.30 to 192.1681.5 port 65000

Para verificar quais regras estão sendo executadas atualmente com o UFW, utilize

		sudo ufw status

Será apresentada uma lista de regras que você já criou para o seu firewall. Se você visualizar uma regra que deseja excluir, digite

		sudo delete [rule]

Monitorar seu Sistema

Há um ditado nos círculos de segurança em computadores de que a única forma de realmente proteger um computador é desconectá-lo completamente e trancá-lo em uma caixa. Não tão simples, mas a mensagem subjacente é que se um hacker realmente quiser invadir um sistema, é provável que ele encontrará uma maneira. Após executar as etapas em direção à prevenção da intrusão, você precisa configurar um sistema de monitoramento para detectar se um ataque contra o seu servidor foi estabelecido. Em seguida, se você for alertado sobre um ataque, é melhor preparar-se para lidar com ele antecipadamente.

As seguintes seções percorrem as etapas da instalação e da configuração de dois programas que ajudam a detectar intrusões. O Tripwire o alerta sobre atividades não-autorizadas que ocorrem com arquivos de sistema no seu servidor e o Logwatch é uma ferramenta que pode ser utilizada para criar relatórios para você analisar.

Tripwire

O Tripwire é um programa que configura uma linha de base de binários normais do sistema para o seu computador. Ele, então, relata quaisquer anomalias junto a esta linha de base através de um alerta por e-mail ou através de um log. Essencialmente, se os binários do sistema tiverem sido alterados, você saberá sobre isso. Se uma instalação legítima causar uma alteração dessas, não há nenhum problema. Mas se os binários forem alterados como um resultado de um cavalo de Tróia ou rootkit sendo instalado, tem um ponto inicial a partir do qual pesquisar o ataque e corrigir os problemas.

Para instalar e configurar o Tripwire através da linha de comando, siga estas etapas:

  1. Insira o seguinte comando:
    		sudo aptitude install tripwire
  2. Pressione Enter e digite sua senha. O Tripwire é transferido por download e instalado.
  3. Uma tela de configuração é apresentada conforme mostrado na Figura 1.
    Figura 1 Configuração do Tripwire.
    Janela de Configuração do Tripwire
    Esta tela informa aos usuários dos sistemas baseados no Debian sobre um cenário potencial no qual um hacker pode obter a passphrase utilizada com o Tripwire enquanto ele não está criptografado. Usuários avançados podem optar por parar aqui e criar a chave do site e os arquivos de configuração por conta própria. Iniciantes devem selecionar OK e continuar.
  4. A próxima tela pergunta se você deseja criar sua passphrase durante a instalação. Selecione Sim e pressione Enter.
  5. A próxima tela informa sobre como o Tripwire funciona. O programa cria um arquivo de texto que armazena um banco de dados criptografado da configuração dos sistemas. Este arquivo de texto é a linha de base. Se alguma alteração for feita na configuração do sistema, o Tripwire visualiza a alteração e cria um alerta. Para fazer alterações legítimas no sistema, você pode criar uma passphrase. Selecione Sim e pressione Enter para iniciar a criação do arquivo de configuração.
  6. A tela a seguir explica a mesma coisa, mas desta vez você estará criando um arquivo de política do Tripwire. Novamente, selecione Sim e pressione Enter.
  7. Assim que os arquivos tiverem sido criados, você será solicitado a digitar a passphrase chave do site. É necessário lembrar-se desta passphrase. Selecione OK e, então, pressione Enter. Sua passphrase será solicitada novamente na próxima tela.
  8. Você será levado até a tela da passphrase local. Esta passphrase é necessária para os arquivos locais no servidor. Insira sua passphrase local, selecione OK e, então, pressione Enter. Também é necessário digitar novamente esta senha.
  9. Agora que o Tripwire foi instalado, você é informado sobre o local do banco de dados e dos binários. Com o OK selecionado, pressione Enter novamente para concluir o processo de configuração.

Você pode executar a inicialização do banco de dados digitando

		sudo tripwire --init

Pressione Enter. Você também será solicitado a fornecer a passphrase local criada durante a instalação do Tripwire. Forneça a passphrase e, novamente, pressione Enter. Agora, o Tripwire criou a captura instantânea da linha de base do seu sistema de arquivos. Esta linha de base será utilizada para verificar se há alterações nos arquivos críticos. Se uma alteração deste tipo for detectada, um alerta será enviado.

É possível executar uma verificação de integridade a qualquer momento seguindo estas etapas:

  1. Digite
    		sudo tripwire --check
  2. Pressione Enter. Você receberá um relatório que é salvo no diretório de relatórios. Para visualizar este relatório, utilize o comando twprint :
    		sudo twprint --print-report -r\
  3. Pressione Enter e digite a senha sudo . Você receberá um tipo diferente do prompt que tem a seguinte aparência:
    		>

    Neste prompt, digite o local e o nome do arquivo do relatório que deseja imprimir:
    		> /var/lib/tripwire/report/<server name>-YYYYMMDD-HHMMSS.twr| less

    Se você não souber o horário exato que executou seu relatório, navegue até o diretório /var/lib/tripwire/reports para visualizar o nome completo do arquivo.

À medida que suas habilidades se desenvolvem, você pode consultar o twadmin para aprimorar ainda mais os recursos do Tripwire. Também é possível configurar uma tarefa cron para enviar a você uma cópia por e-mail deste relatório a cada dia ou configurar o Tripwire para enviar a você um e-mail se uma anomalia for relatada.

Logwatch

O Logwatch é uma excelente ferramenta para monitorar os arquivos de log do seu sistema. Este programa requer um servidor de e-mail em funcionamento em sua rede para enviar os logs por e-mail para você. Se desejar alterar o arquivo .conf, você precisa abrir /usr/share/logwatch/default.conf/logwatch.conf e consultar a linha onde se lê MailTo. Altere user.name.domain.tld para o seu endereço de e-mail.

Você pode instalar o Logwatch com este comando:

		sudo aptitude install logwatch

Para enviar os logs por e-mail para você mesmo, digite

		logwatch --mailto email@youraddress.com --range All

Pressionar Enter envia uma cópia do relatório para o endereço de e-mail especificado. Se você não estiver executando um servidor de e-mail em sua rede mas ainda desejar visualizar um relatório do Logwatch, o seguinte comando o fornece na tela:

		logwatch --range All --archives --detail Med

A saída possui várias telas; pressione Shift-Page Up para mover para o início do relatório.


Usuários e Grupos

o GNU/Linux trata grupos e permissões de maneira diferente do sistema operacional Microsoft® Windows® . Você pode organizar usuários em grupos para facilitar a administração, mas também é necessário fornecer acesso a arquivos e pastas através de permissões. Nenhum "usuário avançado" geral fornece aos usuários acesso a praticamente tudo em um computador ou rede. O sistema GNU/Linux foi projetado para ser mais seguro; ele usa um sistema 3x3 para concessão de permissões:

Não executar como root

Qualquer um que saiba algo sobre a segurança do GNU/Linux dirá a você para nunca, nunca, nunca executar nada como o usuário root. Efetuar login como administrador em uma rede Windows é comum, mas na comunidade do GNU/Linux, não é recomendável fazer isso. É por isso que sempre que você precisar executar algo como root, deve utilizar o comando sudo. Qualquer administrador do sistema pode utilizar o comando sudo se você lhe fornecer a senha. Para visualizar como e quando a senha sudo está sendo utilizada, verifique /var/log/messages. Como você está consultando todos os usos do sudo, utilize o comando grep para localizá-los.

  • Permissões de arquivo -- Ler (r), gravar (w) e executar (x). Cada uma destas permissões também recebe um número: ler = 4, gravar = 2 e executar = 1.
  • Permissões no nível do diretório -- Entrar, que dá permissão para entrar no diretório; mostrar, que dá permissão para visualizar os conteúdos dos diretórios; e gravar, que dá permissão para criar um novo arquivo ou subdiretório.
  • Como as permissões são designadas -- As permissões são designadas de três maneiras: por nível de usuário, nível de grupo e outro nível. O nível de usuário define o usuário que criou o arquivo ou diretório, o nível de grupo define o grupo no qual o usuário está e o outro nível é para qualquer usuário fora do grupo do usuário.

As permissões de usuário são concedidas primeiro: por exemplo, r/w/x significa que o usuário pode ler, gravar e executar o arquivo ou os arquivos na pasta. É possível aplicar o valor numérico a cada permissão. Deste modo, se um usuário pode ler, gravar e executar, você inclui os números correspondentes 4, 2 e 1, para um total de 7. A seguir, vêm as permissões de grupo. Por exemplo, os outros membros do grupo do usuário podem ter a capacidade de ler e executar, mas não de gravar. A inclusão dos valores numéricos correspondentes representa 5. Aqueles em outras categorias podem apenas ler os arquivos, portanto, seu valor numérico é 4. Deste modo, as permissões para o arquivo ou pasta são 754.

Quando as permissões são configuradas como 777, todos têm a habilidade de ler, gravar e executar. O comando chmod altera as permissões para os arquivos e diretórios. Se desejar alterar a propriedade de um usuário, utilize o comando chown . Para alterar a propriedade do grupo sobre um arquivo ou diretório, utilize o comando chgrp .


Criptografia

Criptografia é o processo de obter dados armazenados em um computador e misturá-los de uma forma que os torne ilegíveis por qualquer pessoa que não possua a chave para recriar os dados em seu formato original. Os dados que foram criptografados podem ser armazenados no computador local, armazenados em um compartilhamento de rede ou transmitido para outros usuários e computadores.

É possível criptografar um disco rígido inteiro ou as partições do disco. Isto deve ser feito na instalação. Também é possível proteger dados através da criptografia criando um diretório e criptografando-o. Por exemplo, se você tiver configurado um servidor de arquivos, pode desejar criptografar um diretório que contenha informações sensíveis.

Antes de continuar com a proteção dos seus dados, é necessário instalar eCryptfs a partir dos repositórios do Ubuntu digitando

		sudo aptitude install ecryptfs-utils

Pressione Enter e digite sua senha root.

Criptografar um diretório

A próxima etapa é criar um diretório para criptografar. O exemplo utiliza um diretório denominado secure, mas você pode nomeá-lo como desejar. Siga estas etapas:

  1. Insira o seguinte comando:
    		mkdir ~/secure
  2. Apenas para impedir que outras pessoas fiquem bisbilhotando, altere as permissões para 700:
    		chmod 700 ~/secure
  3. Monte o novo diretório com o sistema de arquivos eCryptfs:
    		sudo mount -t ecryptfs  ~/secure ~/secure
  4. Você terá de responder a várias perguntas. Certifique-se de lembrar-se das respostas, pois elas são necessárias quando você remontar. A primeira pergunta é sobre o tipo de chave que você gostaria de utilizar. Faça sua seleção digitando o número que corresponda à sua opção. A seguir, selecione o código que deseja utilizar e o tamanho da chave.
  5. Assim que tiver respondido a todas as perguntas, seu diretório estará pronto para a inclusão de arquivos e outros subdiretórios. Quando estiver pronto para tornar seu diretório seguro, desmonte-o com
    		  sudo unmount ~/secure

Etapas Adicionais de Segurança

Agora você estabeleceu uma base sólida para proteger seu servidor, deve executar algumas poucas etapas para aprimorar ainda mais as medidas de segurança já definidas. Estas últimas dicas apresentam alguns dos pontos extra a ter em mente ao proteger o seu servidor GNU/Linux.

Atualizações

Um servidor de produção nunca deve ter atualizações e correções instaladas sem antes terem sido testadas em um servidor de teste ou de desenvolvimento. Como uma GUI pode não estar instalada em seu servidor, você precisa fazer o download de quaisquer atualizações e correções através do terminal. Quando estiver pronto para instalar as atualizações, insira o comando sudo apt-get update e, então, sudo apt-get dist-upgrade. Em alguns casos, será necessário reiniciar o servidor.

Malware

Muitos administradores de sistema descobrem que a instalação de software antivírus em um servidor executando o GNU/Linux é um desperdício de recursos porque nenhum vírus solto por aí pode atacar o sistema operacional GNU/Linux. Mas qualquer administrador do GNU/Linux que esteja executando o SAMBA para compartilhar arquivos Windows deve definitivamente garantir que um scanner antivírus como o ClamAV esteja instalado para garantir que arquivos infectados não se espalhem pelo sistema.

Embora os vírus não representem mais do que uma ameaça ao servidor GNU/Linux, os rootkits podem lhe causar uma dor de cabeça. Rootkits são ferramentas que os hackers utilizam para obter permissões de nível-root a um sistema, capturar senhas, interceptar tráfego e criar outras vulnerabilidades. Para combater esta ameaça, você deve instalar ferramentas como RKHunter e chkrootkit no servidor (consulte instruções no tutorial " Protegendo o Desktop do Linux").

Backup e recuperação

Servidores que hospedam gigabytes de informações, Web sites corporativos ou catálogos para serviços de diretório precisam ter uma estratégia de backup e recuperação estabelecida. A maioria das redes corporativas pode proporcionar redundância através de vários servidores e redes menores podem ficar despreocupadas através da virtualização e do software de backup e recuperação.

Se você está planejando executar o software de backup e recuperação a partir dos repositórios do Ubuntu, o Sbackup é uma excelente ferramenta porque ele pode ser executado a partir de uma linha de comandos ou de uma GUI. Ao fazer backup dos dados do servidor em uma rede corporativa, é importante que os arquivos de backup sejam armazenados fora do servidor. Dispositivos de armazenamento portáteis fornecem grandes quantidades de espaço de armazenamento a preços extremamente razoáveis e são excelentes opções para o armazenamento de arquivos e diretórios de backup.

Senhas

Como o administrador do sistema, você precisa configurar senhas para a conta root do seu servidor e possivelmente outras contas sensíveis em sua organização, tais como bancos de dados MySQL ou conexões FTP. Você não pode obrigar senhas fortes para os seus usuários com o Ubuntu Server, mas pode certificar-se de treinar os usuários e como criar uma senha forte.

Política de senha de rede

Se você estiver executando serviços de diretório como OpenLDAP, tem a opção de obrigar senhas fortes em sua rede com algumas das opções de configuração disponíveis.

Certifique-se de que as senhas dos usuários contenham pelo menos três das seguintes opções: uma letra maiúscula, uma letra minúscula, um número ou um símbolo. Para fortalecer ainda mais a senha, crie uma política para que todas as senhas tenham pelo menos oito caracteres.

Uma maneira de ensinar aos usuários a utilizar senhas fortes mas impedir que eles escrevam senhas complexas em notas adesivas é fazer com que utilizem passphrases. Algo como Myf@voritecolorisBlue! é muito mais fácil de lembrar do que M$iuR78$ e ambos atendem aos padrões mínimos de complexidade.


Conclusão

Ao concluir este tutorial e "Protegendo o Desktop do Linux", você deve ter uma base sólida de conhecimento sobre o tópico de segurança sistemas. Tenha em mente que estes tutoriais são destinados a iniciantes, para fornecer uma base para aprender mais sobre a segurança GNU/Linux.

Recursos

Aprender

Obter produtos e tecnologias

  • Faça download de Ubuntu Server Edition para continuar com as lições neste tutorial.
  • Faça download de Sun VirtualBox para criar uma máquina virtual para que possa praticar com as lições neste tutorial.
  • Com o software de avaliação IBM, disponível para download diretamente do developerWorks, crie seu próximo projeto de desenvolvimento no Linux.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux, Software livre
ArticleID=386626
ArticleTitle=Protegendo o Servidor Linux
publish-date=12172008