você está aqui: Home → Coluna do Cesar Brod
De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Por Cesar Brod
Data de Publicação: 18 de Abril de 2013
Meu avô Estácio adorava essa frase: "antes prevenir do que remediar". Tem outra que é uma das preferidas da minha mãe: "o que arde cura, o que aperta segura". Depois de uma semana cheia de consultas e conversas sobre os ataques ao gestor de conteúdo Wordpress durante a semana em que passou, e da constatação de que a totalidade deles poderia ter sido evitada com procedimentos simples, decidi escrever esse pequeno artigo, ainda que corra o risco de chover, bastante, no molhado.
Não adianta. A primeira recomendação para a manutenção da segurança em seus sistemas é ter cópias atualizadas e em vários estados anteriores de seus arquivos e bases de dados. E também não adianta manter as tarefas agendadas bonitinhas, fazendo seus backups diários, e nunca testar a restauração dessas cópias. Em certos ataques, pode não ser possível a sua detecção imediata: ele pode ter ocorrido há alguns dias e, para solucionar o problema, você deverá restaurar alguma cópia mais antiga.
Eu gosto de separar o processo do backup em duas fases. Na primeira, é feita uma cópia de segurança no próprio ambiente do servidor. Na segunda, essas cópias são transmitidas para um ambiente externo e seguro. Como eu sou meio neurótico e essa é uma atividade que não tira mais do que cinco minutos do meu dia, a segunda fase NÃO É AUTOMÁTICA. Tenho um comando scp pronto que transfere, para o ambiente de meu escritório, os backups feitos em máquinas remotas. A gente vai criando um certo "olho" para anomalias. Ao ver, por exemplo, que uma determinada base que, tipicamente, cresce a cada dia e, de repente, ela "parece" ser pequena demais, a gente já desconfia.
O problema de automações extremas é que a gente começa a ficar confiante demais nelas e, quando algo não funciona a gente descobre que "perdeu o jeito". O hábito faz o monge, dizem.
Tenha, também, um ambiente de testes já configurado exatamente como seu servidor de produção. É muito fácil, hoje, de ter uma máquina virtual que fica ali, dormindo, sem atrapalhar seu ambiente local, até que você precise dela. De tempos em tempos, acorde-a e faça a restauração de um ou mais de seus backups e veja se está tudo bem. Se você nunca montou um ambiente de testes em uma máquina virtual, o artigo nesse link o ajudará a fazer isso.
Ataques comuns, feitos através de scripts de força bruta, percorrem vulnerabilidades em serviços em suas configurações padrão. Antes de mais nada, se você não precisa usar (ou fornecer a seus clientes) um determinado serviço, desabilite-o. Felizmente, a maioria das distribuições sérias para servidores não vem com nenhum serviço de conexão externa habilitado por padrão, cabendo a você fazê-lo. Pense bem se você precisa, por exemplo, oferecer ftp em seu servidor, ou se o scp, padrão para a transferência segura de arquivos do ssh é suficiente. O ssh não tem jeito. Esse você irá precisar. Por padrão, ele roda na porta 22, que é a primeira que os scripts tentarão atacar. Troque-a por outra. Estes artigos, aqui no Dicas-L, mostram como fazer isso.
Um ataque automatizado típico não acerta de primeira. Se você começa a receber múltiplas tentativas de invasão de uma determinada máquina, feche a porta para ela. Para isso, use o denyhosts. Instruções e mais dicas sobre esse excelente, pequeno e prático programa estão nessa série de artigos do Dicas-L.
O recente ataque ao Wordpress, em grande parte, deu-se ao fato dos mantenedores de portais, com essa ferramenta, não terem lido as dicas de segurança oferecidas pela própria comunidade de usuários. Muita dor e vergonha teria sido evitada se o usuário admin tivesse sido apagado e se o plugin básico de segurança para o ambiente tivesse sido instalado. Mais boas dicas sobre o assunto nesse link. Quem não fez isso amarga, agora, o leite derramado.
Se você não oferece serviço através de uma determinada porta, não a exiba para o mundo externo. Se alguém tentar chegar até ela, vai bater com o nariz na parede. Use um serviço de firewall para isso. Na maior parte dos meus servidores web, as únicas portas abertas são as relativas aos serviços http e ssh. Siga esse link para entender e configurar o UFW, um firewall descomplicado e eficiente.
A não ser que você use o Windows 7, o melhor é manter o seu sistema sempre atualizado. Infelizmente, há pessoas que não utilizam a sua inteligência apenas para fazer o bem, que ficam procurando por vulnerabilidades em servidores e, quando as descobrem, iniciam seus ataques. Felizmente, a comunidade de código aberto é muito unida e, ao primeiro sinal de uma vulnerabilidade, trabalha em conjunto para resolvê-la. Quando você instala uma distribuição como o Ubuntu Server, você tem a opção de, durante o processo de instalação, permitir as atualizações automáticas de segurança. Pode confiar e escolher essa opção.
Um servidor é dinâmico, com arquivos e bases de dados mudando a todo o momento. Mas tem coisas que não devem mudar. Tudo o que está nas pastas de sistema e configuração (ou seja, praticamente tudo o que não está nas pastas /home, /var e /tmp) deve permanecer intocado, a não ser por você mesmo. Instale um dedo-duro que gera um alerta caso algum desses arquivos fixos comecem a variar. Conheça o Samhain, ele faz isso para você.
Pois é, caro leitor o que arde mesmo é ficar lendo e analisando os logs de seu sistema e acompanhar, diariamente, as listas que o assustam, diariamente, com vulnerabilidades e probabilidades de ataque. Mas não tem jeito. Até que você tenha dinheiro suficiente para entregar esse artigo a um subirdinado e dizer a ele "te vira!", essa é a sua missão. Mas, cá pra nós, é impossível ficar com o olho grudado na tela o tempo inteiro. Se você implementou todas as dicas acima, você já está em uma zona razoavelmente confortável, mas não se acostume muito com isso!
No mínimo, acesse diariamente o site com notificações de segurança do sistema operacional usado em seu servidor. No caso do Ubuntu, é o desse link. A maioria desses alertas de segurança podem ser lidos diretamente em seu cliente de email, graças ao padrão. Para gerar alertas simples na leitura dos logs de seu sistema, experimente brincar com o tailbeep.
É claro que o assunto não acaba aqui. Cada um dos vários links apresentados nesse artigo tem outras informações e links que o conduzirão a uma teia infinita. É o conhecimento do seu ambiente, junto com o acúmulo de suas experiências, que o levarão à construção de um ambiente crescentemente mais seguro e menos vulnerável. Mas lembre-se que o único computador seguro é aquele que está desligado dentro de um cofre guardado por um cachorro feroz e um guarda. O guarda para manter o cachorro alimentado e o cachorro para impedir que até o guarda chegue perto do cofre. Manter um sistema seguro é sempre uma negociação entre mantê-lo aberto para que seja plenamente utilizável e fechado para o mal. Não é nada diferente de manter a segurança em um shopping center.
Leia também:
Cesar Brod usa Linux desde antes do kernel atingir a versão 1.0. Dissemina o uso (e usa) métodos ágeis antes deles ganharem esse nome. Ainda assim, não está extinto! Escritor, consultor, pai e avô, tem como seu princípio fundamental a liberdade ampla, total e irrestrita, em especial a do conhecimento.
Mais sobre o Cesar Brod: [ Linkedin ] | [ Twitter ] | [ Tumblr ].