5 mitos sobre a segurança do seu website.

O site White Hat Security tem divulgado dados preocupantes que demonstram aumentos nos ataques a sites de pequenas e médias empresas em relação ao número de ataques aos das grandes.
Um dos motivos para esta mudança de foco, por parte dos invasores, é que as grandes empresas, agora, têm programas profissionais de segurança na Web — o que já torna mais difícil o cracking de seus sites.

Mudaram as vítimas, mas as técnicas de invasão continuam, basicamente, as mesmas.

O propósito deste artigo é questionar e, quem sabe, ajudar a desconstruir 5 dos maiores mitos sobre a segurança na web.

O SSL deixa o meu site mais seguro?

ssl lock
O TSL, sigla para Transport Layer Securty e o seu predecessor, SSL (Secure Sockets Layer), ambos são comumente referenciados pela mesma sigla: SSL.
Trata-se de protocolos criptográficos que oferecem um ambiente de comunicações seguro sobre uma rede de computadores.
O principal objetivo do protocolo é garantir privacidade e integridade à transferência de dados entre o servidor da empresa e o navegador do cliente.
Em outras palavras, sua função é dar ao seu cliente a certeza de que o site que ele está vendo é um site genuíno — e não uma impostura, com o objetivo de fornecer falsas informações ou de obter dados de forma fraudulenta de seus visitantes.
O SSL também assegura que o conteúdo da conversação entre o cliente e o site não possa ser lido, caso seja interceptada.
Se um website for crackeado e passar a ter um comportamento nocivo em relação aos visitantes, tudo o que SSL fará é lhes assegurar que o site é legítimo, genuíno — cumprindo a sua função.

Desta forma, o SSL não tem absolutamente qualquer impacto na segurança do website ou na forma como os seus dados e os de seus usuários são manipulados e guardados.

Por ser um protocolo de transporte de dados, o SSL procura garantir a segurança das informações, enquanto trafegam entre um ponto e outro, na rede.
Os dados armazenados no cliente ou no servidor, não são protegidos por este protocolo — nem ele foi concebido para protegê-los.
Leia mais sobre o SSL: É hora de encriptar toda a Internet? Isto é possível?

Firewalls protegem de ataques externos?

firewall parede corta-fogo
O firewall é um programa ou um equipamento que controla o fluxo de dados em uma rede, baseado em um conjunto de regras.
Sua função é estabelecer uma barreira entre uma rede segura e confiável e outra não considerada tão segura ou tão confiável (a Internet, por exemplo).
A principal função de um firewall é criar restrições ou filtros de acesso entre redes e evitar propagação de acessos ou comportamentos nocivos.
Os firewalls, ou “paredes corta-fogo”, não tem a função de proteger o site em si, seus dados ou a forma como são manipulados.
Portanto, todos os problemas e falhas de segurança de seus aplicativos Web (comércio eletrônico, fóruns, email etc) continuam intocados pela presença de um firewall.

Enquanto o SSL foi concebido para dar segurança ao transporte dos dados, os firewalls foram criados para dar segurança à sua passagem entre redes. Em todos os outros momentos, as vulnerabilidades permanecem inalteradas.

A ideia do firewall é a de separar o tráfego nocivo do “benigno” — o que é feito através de Listas de Controle de Acesso, ou ACL (Access Control List).
O ACL determina o que pode trafegar entre as redes e o que deve ser bloqueado.
Uma vez dentro da sua rede, através de algum dos serviços permitidos pelo(s) firewall(s), um visitante malicioso estaria livre para agir.
Isto quer dizer que o mundo inteiro entra no seu site, usa seus serviços de email, contatos, chat, navega por onde quiser etc — e é aí que mora o perigo.

Scanners de vulnerabilidade de rede são capazes de protegê-la?

satan
Um scanner de vulnerabilidades, é um programa projetado para acessar computadores, sistemas computacionais, redes ou aplicações em busca de pontos falhos na segurança.
Há vários tipos de vulnerability scanners. O que os distingue, entre eles, é o foco dado a problemas específicos.
O ponto em comum é o objetivo de listar as vulnerabilidades encontradas em um ou mais alvos.
No início dos anos 90, o programa SATAN (descontinuado), escrito em Perl, era muito popular entre administradores de sistemas e profissionais de segurança de rede, como software de teste de vulnerabilidades, entre outros.
A lógica é que, após encontrar e resolver todos os problemas de vulnerabilidade o website estará suficientemente seguro na Internet.
Contudo, os scanners de vulnerabilidades não abrangem os aplicativos Web, rodando nos servidores, que podem conter inúmeras falhas de segurança.
Este tipo de software pode ser usado para conduzir testes de reconhecimento da rede — um comportamento típico de um acesso remoto malicioso, com o objetivo de coletar informações ou obter acessos privilegiados e não autorizados à rede.

Os scanners trabalham com seus próprios bancos de dados ou listas, contendo os tipos e os detalhes das vulnerabilidades que devem ser encontradas.
Estas listas são baseadas em falhas já conhecidas.

As fragilidades e pontos de suscetibilidade dos seus aplicativos Web não são conhecidos pelos scanners e, por isto, não serão detectados.
Mesmo tendo um website profundamente comprometido, inseguro e com seus bancos de dados totalmente desprotegidos, você vai receber um sinal verde, informando que tudo está bem.

Os desenvolvedores são sempre culpados pelas falhas?

desenvolvedor digitando
Infelizmente, não é tão fácil encontrar culpados.
Há muitos fatores, fora do controle dos desenvolvedores, que promovem as fragilidades dos sites.
Parte do código (fechado ou não), escrito por terceiros e inserido nos aplicativos web da sua empresa, pode conter vulnerabilidades.

Com prazos curtos para finalizar projetos, os desenvolvedores raramente têm tempo para checar os meandros das linhas de código que chegam através de atualizações e patches.
Código proprietário e fechado, definitivamente, não pode sequer ser auditado.

Além disto, as falhas de segurança podem surgir da simples combinação entre componentes do sistema — e estamos provavelmente falando de milhares de componentes e quantidades exponenciais de possibilidades de combinação.
É humanamente impossível prever ou prevenir todas as falhas, portanto.

Avaliações anuais das vulnerabilidades são suficientes?

O código dos aplicativos Web estão em constante mudança. Muita coisa sofre alterações no período de um ano.
Cada nova versão do aplicativo ou atualização (mesmo que de segurança), traz novos riscos e potenciais pontos fracos a serem explorados por crackers.
Finalizar projetos estratégicos para os negócios é sempre prioritário e (como já foi dito) os desenvolvedores nunca têm tempo para testar todas as possibilidades de quebra da segurança dos aplicativos.
O ideal é ter práticas sempre em curso para resolver problemas de segurança, à medida em que forem detectados.

Conclusão

Se já sabemos que algumas ações não são eficazes para tornar um website mais seguro.
Há várias outras medidas, contudo, que podem ajudar neste sentido e devem ser consideradas com seriedade:

  1. A segurança do website deve ser reavaliada com maior periodicidade e, principalmente, a cada atualização de cada novo componente — cada nova linha de código é, potencialmente, um novo problema de segurança.
  2. Os scanners de vulnerabilidade podem ser usados em conjunto com um processo manual de testes, personalizado e adaptado aos aplicativos que você tem rodando no site.
  3. Aos desenvolvedores cabe nunca confiar nos dados fornecidos por usuários. Sempre preveja a introdução de códigos maliciosos nos formulários — esta é a principal porta de entrada dos crackers.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://www.whitehatsec.com/assets/WP5myths041807.pdf.

Uma medida simples de segurança que você precisa tomar após instalar o MariaDB

O procedimento, descrito abaixo, é recomendado logo após instalar o servidor MySQL ou MariaDB.
Este texto é uma continuação do artigo instalação do servidor LAMP no Debian 9, onde explico os passos que o antecedem.
Antes de disponibilizar um servidor de banco de dados MySQL ou MariaDB em ambiente de produção, alguns ajustes de segurança se fazem necessários.
Podem ser feitos com a execução do mysql_secure_installation, já presente no seu sistema — ele foi instalado junto com o banco de dados.

O contexto em que este post foi escrito é uma instalação Debian 9.
Nesta versão, a distro iniciou uma transição do MySQL para o MariaDB, a exemplo de outras grandes distribuições.

Resumidamente, trata-se de um assistente para implementar as seguintes medidas de segurança:

  1. configurar a senha root (administrativa) do banco de dados
  2. remover o acesso root de fora do servidor local
  3. remover contas de usuários anônimos
  4. remover o banco de dados test, que oferece acesso padrão a todos os usuários, inclusive anônimos — além de privilégios que permite acessar indiscriminadamente bancos de dados que comecem com a string “_test”.

As medidas são necessárias e recomendadas em um servidor de banco de dados em produção.
Se você instalou o banco de dados para o seu aprendizado, para realizar testes ou para desenvolver aplicativos, provavelmente não vai precisar se preocupar com isto.

O utilitário deve ser executado sem argumentos, assim:


mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 

Para poder se autenticar no MariaDB, para torná-lo mais seguro, será necessário fornecer a senha de usuário root.
Neste caso, o usuário root, a que nos referimos, é o do banco de dados e não o do Linux.
Se você acabou de instalar o MariaDB e ainda não configurou esta senha, ela ainda estará em branco.
Neste caso, pressione Enter, ao fim do texto.
O sistema irá pedir uma nova senha e a confirmação.

Em seguida irá perguntar se deve remover os usuários anônimos do seu sistema.
É seguro responder que sim (ou Yes).

O próximo passo irá perguntar se você quer desabilitar o acesso remoto do root.
Se fizer isto, o superusuário só poderá logar localmente, via localhost.
A opção segura é confirmar o ajuste (Yes).

A próxima opção pede para remover o banco de dados ‘test’, que é útil para quem deseja usar o servidor apenas para aprender ou testar código.
Em máquinas de produção, o seguro é remover este item (Yes).

Por fim, recarregue a tabela de privilégios, para que as alterações tenham efeito imediato no servidor (Yes).

… e pronto!
Como você pôde ver, foi fácil. Você pode responder Yes para todas as perguntas, exceto para redefinir a senha.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como manter o Debian automaticamente atualizado com as correções de segurança

No mundo do software livre, as atualizações de segurança chegam a uma velocidade muito grande.
Comumente, os security patches estão disponíveis já no momento em que a vulnerabilidade é anunciada.
A questão é como obter a atualização o mais rápido possível?

A usuários normais (como eu, por exemplo), basta seguir o cronograma natural de atualizações do seu sistema.
Esta liberdade não se aplica a administradores de servidores, na rede. Quanto mais importante, maior a responsabilidade e a urgência.

As atualizações de que estamos falando aqui, são as referentes à segurança do sistema e a correções de bugs.
Computadores de usuários comuns, em geral, podem esperar uma semana para obtê-las. Já os servidores, não.
Neste post, vou mostrar um procedimento que irá fazer o download e upgrade dos patches de segurança em segundo plano, assim que estiverem disponíveis nos repositórios da sua distro, sem perguntar “se pode” — você será apenas avisado de que o seu sistema foi atualizado.

Por que as atualizações de segurança devem ocorrer em segundo plano

Obviamente, se o meu sistema operacional fosse atualizado por uma grande corporação, como a Oracle ou a Microsoft, a conversa seria bem diferente, aqui.
Contudo, há motivos sólidos para confiar na comunidade de desenvolvedores Debian — e o principal destes motivos é o fato de que todo o trabalho da comunidade pode ser 100% auditado, por qualquer pessoa.
Não dá para dizer o mesmo de empresas que repassam código essencialmente proprietário — caso em que nunca sabemos realmente o que está sendo modificado em nosso sistema.

Aplicar atualizações com frequência é prática importante para manter nossos sistemas seguros.

Como comportamento padrão, o Debian pede para que o administrador do sistema faça as atualizações ou as autorize manualmente.
Mas você pode optar pelo download e instalação automáticos dos updates de segurança mais importantes.

A instalação

O nome do pacote a ser instalado é ‘unattended-upgrades’.
Ele sugere a instalação dos pacotes ‘bsd-mailx’ – para enviar email, informando o adm de que houve uma atualização de segurança – e ‘needrestart’, que verifica junto aos daemons do seu sistema quais precisam ser reiniciados.
Opcionalmente, também podemos instalar o ‘apt-listchanges’ que, neste caso, atua como um plugin — que compara as versões instaladas dos pacotes às novas, lendo os changelogs e os news fles.
Veja como instalá-los:


sudo apt install unattended-upgrades apt-listchanges bsd-mailx needrestart

Configuração

Para poder receber mensagens via email, é necessário alterar o arquivo de configuração ’50unattended-upgrades’. Use o seu editor favorito para isso:


sudo editor /etc/apt/apt.conf.d/50unattended-upgrades 

Descomente a linha abaixo, removendo os ‘//’:


//Unattended-Upgrade::Mail "root";

Se deixar, do jeito que está, as mensagens serão encaminhadas ao root. Mas você pode inserir uma conta de email no lugar da string “root” (entre as aspas).
A seguir, apenas verifique se o arquivo ’20auto-upgrades’ bate com o conteúdo abaixo:


cat /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Você pode configurar o arquivo ’20auto-upgrades’ adequadamente com a seguinte linha de comando:


sudo dpkg-reconfigure -plow unattended-upgrades

Replacing config file /etc/apt/apt.conf.d/20auto-upgrades with new version

captura de tela debian unattended upgrades

captura de tela debian unattended upgrades

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://www.cyberciti.biz/faq/how-to-keep-debian-linux-patched-with-latest-security-updates-automatically/.

Altere a porta de entrada do servidor SSH como medida de segurança

Mover para outro lugar a porta, a partir da qual o servidor SSH recebe conexões, é uma medida muito simples e eficiente para evitar ataques.
Qualquer cracker sabe que a porta padrão (default listening port) é a 22.

É a partir daí que um ataque de força bruta começa a contar.
Se o invasor não conseguir encontrar a porta de entrada, nos primeiros segundos da sua operação, ele pode desistir e passar para o próximo servidor da sua lista de vítimas.
Esta é uma das táticas de segurança por obscuridade. Em outras palavras, estamos apenas “mudando a porta de lugar” — não se trata de fortalecer a segurança, portanto.
Este método traz 2 problemas que convém levar em conta, antes de colocar em prática:

  1. se você esquecer onde colocou “a porta”, pode acabar trancado do lado de fora.
  2. certifique-se de usar uma porta que não esteja sendo usada por outro serviço ou daemon ou que já seja popularmente usado.

Se estes dois itens não forem problemáticos para você, prossiga com a configuração (que é muito simples).
Você pode obter uma lista de portas em uso (ou não) no sistema, dentro do arquivo ‘/etc/services’:


less /etc/services

Sugiro usar o nmap, se quiser obter uma relação mais completa, contudo.

Como editar o arquivo de configuração do servidor SSH

O procedimento trata de editar o arquivo de configuração do servidor SSH que costuma ficar em ‘/etc/ssh/’.
Use o seu editor favorito para abrir o arquivo ‘/etc/ssh/sshd_config’:


# comece com um backup:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo editor /etc/ssh/sshd_config

Localize a linha que define o ‘Port’ e mude o número para o que achar melhor.


Port 1234


Feito isto, grave o arquivo e saia.
Pode ser interessante anotar a nova porta usada em alguma folha de papel.
Para que as mudanças surtam efeito, reinicie o servidor SSH:


sudo service sshd restart

ou


sudo /etc/init.d/sshd restart

Seja cautelosa(o), agora.
Não desautentique da máquina, simplesmente, para testar.
Se houver problemas com os ajustes, você pode ficar trancado do lado de fora — como mencionei anteriormente.
O mais seguro é abrir um novo terminal para testar a conexão sob uma nova porta.
Se algo deu errado, copie de volta o arquivo de configuração, para verificar exatamente qual foi o problema.
Uma das possibilidades que podem atrapalhar que você consiga se autenticar via SSH, por outra porta, é a configuração do seu firewall.
Neste caso, cabe adequar a configuração do firewall aos ajustes que você fez ao sshd.
Depois disto, tente de novo.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

O Tails é uma solução rápida para quem deseja privacidade e segurança ao usar o computador.

Baseado no sistema operacional Debian GNU/Linux, o Tails é uma distro voltada para quem deseja ter privacidade e se comunicar por meios criptografados.
Até esta década, as pessoas têm percorrido um longo caminho na direção indicada pelas grandes corporações, no sentido de obter muito mais conveniências e conforto — ao mesmo tempo em que abrem abrem mão da sua liberdade.
O Tails faz o contrário: te rouba um pouco de conforto e conveniência e dá mais liberdade.
Muitas pessoas preferem usar o Tails instalado em um pendrive ou CD/DVD-ROM. Desta forma, podem usar a Internet e lidar com informações importantes, em segurança, mesmo usando computadores de terceiros (ou públicos).
Mas é possível instalar o Tails em seu PC ou laptop pessoal também, caso você queira estar protegido o tempo todo.

Claro que a segurança de que falamos aqui não é absoluta. Mas eu não consigo pensar, hoje, em uma maneira mais eficiente de oferecer um ótimo nível de segurança para qualquer pessoa do que simplesmente passar a usar o Tails.
Atualmente, é a distribuição Linux recomendada por ninguém menos que Edward Snowden.

Depois de instalado, é possível (e desejável) melhorar ainda mais os seus níveis de segurança, com o Tails.
Sempre que se fala em não abrir mão da conveniência é importante também refletir sobre o quanto seria inconveniente a um jornalista ter reveladas as suas fontes ou apagados, à sua revelia, documentos importantes para uma investigação em andamento.
O quão desconfortável seria para um empresário ter seus planos e estratégias lidos por um concorrente? Quanto de seu trabalho estaria indo pelo ralo?
Quem pratica ativismo que atinja um governo ou grandes corporações também tem razões para se cercar de certos cuidados.
Este é o ambiente ideal para ver sites adultos com segurança.

Em um mundo ideal, não precisaríamos ter cercas, portas trancadas etc. Nós não vivemos em um mundo ideal, contudo.
Os ataques podem vir de criminosos “civis”, do Estado ou das corporações.

tails black theme

O que é e como funciona o Tails

O Tails é um sistema operacional GNU/Linux, com foco na privacidade do usuário.
É baseado no Debian 9.0 stretch — lançado em 2017 e com suporte garantido até 2023.

Contar com o suporte estendido do Debian é importante, por que garante atualizações de segurança que — como todo mundo sabe — costumam chegar no mesmo dia em que alguma vulnerabilidade é descoberta.
Além disso, o usuário conta com extensa documentação online disponível.

A versão atual é exclusiva para hardware de 64-bit.
A decisão dos desenvolvedores, ao cessar o suporte a 32-bit se deve a tirar partido do processamento mais avançado, por questões de segurança e confiabilidade.
Tecnicamente, para se proteger de certos tipos de exploits, é necessário que seu processador tenha suporte a recursos presentes somente nos processadores mais modernos — como NX bit, PIE, ASLR etc.

Onde baixar o Tails

A versão principal do sistema operacional é live, ou seja, pode rodar de um pendrive ou de um CD/DVD. Neste caso, você pode levar o seu Tails para onde você for.
Para instalar o Tails em um pendrive (de pelo menos 4 GB), escolha uma das alternativas deste texto.
O download pode ser feito do site oficial:

Leia mais sobre o assunto, clicando nas tags: tails, privacidade e criptografia.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

Leia mais sobre Criptografia para jornalistas.

Leia mais sobre o Tails aqui: https://tails.boum.org/index.pt.html (texto em português).

Contribua com o desenvolvimento e manutenção do projeto: https://tails.boum.org/contribute/index.pt.html.