Neste artigo abordarei como montar/manter um servidor seguro. Uso o Debian GNU/Linux como sistema base mas todas as ferramentas e procedimentos listados servem para qualquer Unix-like.
Um dos grandes inimigos na implementação de qualquer solução é o tempo. Tudo tem que ser feito no menor tempo possível, com o menor gasto possível e com 0% de falha. Para respeitamos todas essas premissas as orientações apresentadas serão de rápida implementação e fácil manutenção.
Hardening
Trocando em miúdos o hardening é o fortalecimento de um sistema, serviço ou aplicação com o objetivo de minimizar ou dificultar a ação de hackers e crackers.
Iniciamos o hardening antes da instalação do sistema. Neste momento planejamos:
1 – Daemons/serviços que serão disponibilizados;
2 – Particionamento;
1 – Como o foco do nosso artigo são aplicações Web já sabemos que vamos trabalhar com o Quarteto Fantástico – Linux, Apache, PHP e MySQL ou Postgresql. De antemão já temos definidos os serviços que serão disponibilizados.
2 – Com isso definido recomendo que o diretório /var permaneca numa partição separada, lá ficarão os arquivos do site no /var/www e os arquivos do banco em /var/lib/mysql.
Dependendo da aplicação é possivel que o BD cresca rapidamente então recomendo separar a maior parte do disco para está partição e também recomendo a utilzação do sistema de arquivos XFS.
Quer saber porque recomendo o uso deste sistema de arquivos? CLIQUE AQUI
Feito todo o planejamento e com o S.O. instalado iniciaremos os procedimentos de pós-instalação:
1 – Atualizar todo o sistema. No caso do Debian recomendo antes de tudo ajustar o arquivo sources.list removendo todo o conteúdo e adicionado os seguintes repositórios:
deb http://ftp.us.debian.org/debian stable main contrib
deb http://security.debian.org/ stable/updates main contrib
Feito isso use o velho e bom aptitude update && aptitude safe-upgrade
2 – Remova todos os serviços desnecessários:
Recomendo a instalação do Nmap, assim de forma fácil e rápida descobriremos as portas abertas e os serviços em execução.
Exemplo:
nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-25 00:53 BRT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000021s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 996 closed ports
PORT STATE SERVICE
xx/tcp open xxx
xxx/tcp open xxxx
xxx/tcp open xxx
xxx/tcp open xxxxxNmap done: 1 IP address (1 host up) scanned in 0.22 seconds
Você poderá remover a aplicação indesejada usando o comando aptitude remove [aplicação] ou apenas impedir que ela seja executada durante o boot, como por exemplo o MTA exim usando o comando update-rc.d -f exim remove. Dessa forma o exim permanecerá instalado, por ser dependência para outras aplicações, mas não será executado durante o boot.
3 – Use o sudo
Evite logar no sistema usando o usuário root e não deixe que membros da equipe façam o mesmo, assim é possivel fortalecer a auditoria de autenticação, instalação e remoção de pacotes e ações que podem danificar o sistema.
4 – Bloqueie o usuário root
Use o comando usermod -L root para bloquear o login usando o usuário root.
5 – Mude a porta padrão do ssh e bloqueie o login do usuário root
Segurança por obscuridade é uma das técnicas utilizadas para dificultar o footprinting, e o port scanning do seu sistema.
Para fazer estas modificações acesse o arquivo /etc/ssh/sshd_config e altere as seguintes linhas:
Port 22
para por exemplo
Port 3000
PermitRootLogin yes
para
PermitRootLogin no
Refinando o processo de Hardening
Algumas ferramentas podem ser utilizadas para ajudar no processo de hardening do sistema. Recomendo fortemente o uso das seguintes ferramentas:
Hntool
Este é um novo projeto do meu amigo sergipano Hugo Doria que vem crescendo bem rápido e vem contando com novas contribuições diariamente.
O objetivo desta ferramenta é facilitar a vida do Sysadmin informando as melhorias necessárias para fortalecer os serviços e o próprio sistema.
Como ele é totalmente modular fica muito fácil contribuir. Se você quer aprender a programar em Python essa é hora.
Contribua com o desenvolvimento do Hntool. A comunidade de brasileira de segurança da informação agradece.
Bastille
O Bastille protege o sistema operacional, configurando o sistema de maneira pro-ativa para aumentar sua segurança e reduzir as chances de comprometimento. Ele também pode ser usado para assessorar no processo de Hardening do sistema, reportando e detalhando cada configuração de segurança usada pelo programa.
Ele auxilia o usuário/administrador do sistema a escolher exatamente como fortalece-lo. No modo de operação/hardening padrão, ele interage com o usuário fazendo perguntas , explicando cada tópico para, então, criar uma política baseada nas respostas do usuário. Logo em seguida, aplica-se as políticas no sistema. No modo de auditoria, ele cria um relatório para ensinar o usuário sobre as configurações de segurança disponíveis, além de informar quais configurações foram definidas/ajustadas.
Para ajudar na instalação e configuração disponibilizo o capitulo referente ao Bastille que criei para minha aula na Pós em Segurança da Informação da Unijorge.
Monitoramento Seguro
Após todos os ajustes necessários é hora de monitorar e manter o ambiente sempre disponível e seguro. Para isso recomendo a instalação das seguintes ferramentas:
Ossec HIDS
O OSSEC é um escalável, multi-plataforma, e open source HIDS. Ele integra análise de log, checagem de integridade de arquivos, politica centralizada, detecção de rootkit, alerta em tempo real e resposta automática.
Para facilitar a implentação postei 03 artigos com a instalação do Ossec Server, o Agente e a Interface Web.
Lenbrando que existe a opção da instalação local ( standalone ) permitindo que você seja alertado através do email.
Munin
O Munin é uma ferramenta de gerência de desempenho muito simples de instalar e configurar. Ela permite que você obtenha informações em tempo real de como anda o seu sistema.
Veja o post que disponibilizei sobre esta excelente ferramenta.
Um lista atualizada de ferramentas para monitoramento pode encontrada no site
Apticron
O Apticron é um script que alerta via email diariamente sobre novas atualizações no seu servidor, no alerta você encontra a lista de pacotes que precisam ser atualizados e todo o changelog.
Acesse os links 1 ou 2 para obter informações de como instalar e configurar está ferramenta bastante útil.
Conclusão
Finalizo aqui a 1a. parte da nossa saga. Peço desculpas aos leitores que querem mais informações técnicas sobre os assuntos abordados, só que o objetivo destes artigos é trazer recomendações e referências rápidas. Prometo trazer informações mais técnicas sobre os assuntos abordados em breve.