Introdução

Ao configurar a infraestrutura, colocar seus aplicativos em funcionamento muitas vezes será sua principal preocupação. No entanto, fazer com que seus aplicativos funcionem corretamente sem atender às necessidades de segurança da sua infraestrutura pode ter conseqüências devastadoras.

Neste guia, falaremos sobre algumas práticas básicas de segurança que são melhores para configurar antes ou conforme você configura seus aplicativos.

Chaves SSH

As chaves SSH são um par de chaves criptográficas que podem ser usadas para autenticar em um servidor SSH como uma alternativa para logins baseados em senha. Um par de chaves privada e pública é criado antes da autenticação. A chave privada é mantida em segredo e segura pelo usuário, enquanto a chave pública pode ser compartilhada com qualquer pessoa.

Para configurar a autenticação da chave SSH, você deve colocar a chave pública do usuário no servidor em um diretório especial. Quando o usuário se conecta ao servidor, o servidor solicitará uma prova de que o cliente possui a chave privada associada. O cliente SSH usará a chave privada para responder de uma maneira que comprove a propriedade da chave privada. O servidor permitirá que o cliente se conecte sem uma senha. Para saber mais sobre como funcionam as chaves SSH, confira nosso artigo aqui .

Como eles aprimoram a segurança?

Com o SSH, qualquer tipo de autenticação, incluindo autenticação de senha, é completamente criptografada. No entanto, quando logins baseados em senha são permitidos, usuários mal-intencionados podem tentar acessá-lo repetidamente. Com o poder da computação moderna, é possível obter entrada para um servidor automatizando essas tentativas e tentando combinação após combinação até que a senha correta seja encontrada.

A configuração da autenticação de chave SSH permite desativar a autenticação baseada em senha. Geralmente, as chaves SSH têm muito mais bits de dados que uma senha, o que significa que existem significativamente mais combinações possíveis que um invasor teria que percorrer. Muitos algoritmos de chave SSH são considerados incontestáveis ​​pelo hardware de computação moderno simplesmente porque exigiriam muito tempo para executar possíveis correspondências.

Quão difícil é isso implementar?

As chaves SSH são muito fáceis de configurar e são a maneira recomendada de fazer login em qualquer ambiente de servidor Linux ou Unix remotamente. Um par de chaves SSH pode ser gerado em sua máquina e você pode transferir a chave pública para seus servidores em poucos minutos.

Para aprender sobre como configurar chaves, siga este guia . Se você ainda acha que precisa de autenticação de senha, considere a implementação de uma solução como o fail2ban em seus servidores para limitar as adivinhações de senha.

Firewalls

Um firewall é um software (ou hardware) que controla quais serviços estão expostos à rede. Isso significa bloquear ou restringir o acesso a todas as portas, exceto àquelas que devem estar disponíveis publicamente.

Em um servidor típico, um número de serviços pode estar sendo executado por padrão. Estes podem ser categorizados nos seguintes grupos:

  • Serviços públicos que podem ser acessados ​​por qualquer pessoa na internet, muitas vezes anonimamente. Um bom exemplo disso é um servidor da Web que pode permitir o acesso ao seu site.
  • Serviços privados que só devem ser acessados ​​por um grupo seleto de contas autorizadas ou de determinados locais. Um exemplo disso pode ser um painel de controle do banco de dados.
  • Serviços internos que devem ser acessíveis somente a partir do próprio servidor, sem expor o serviço ao mundo externo. Por exemplo, isso pode ser um banco de dados que aceita apenas conexões locais.

Os firewalls podem garantir que o acesso ao seu software seja restrito de acordo com as categorias acima. Os serviços públicos podem ser deixados abertos e disponíveis para todos e os serviços privados podem ser restritos com base em critérios diferentes. Os serviços internos podem ficar completamente inacessíveis ao mundo exterior. Para portas que não estão sendo usadas, o acesso é bloqueado totalmente na maioria das configurações.

Como eles aprimoram a segurança?

Os firewalls são uma parte essencial de qualquer configuração do servidor. Mesmo que os seus serviços implementem recursos de segurança ou estejam restritos às interfaces que você deseja que sejam executados, um firewall serve como uma camada extra de proteção.

Um firewall configurado corretamente restringirá o acesso a tudo, exceto aos serviços específicos que você precisa para permanecer aberto. Expor apenas alguns fragmentos de software reduz a superfície de ataque do seu servidor, limitando os componentes que estão vulneráveis ​​à exploração.

Quão difícil é isso implementar?

Existem muitos firewalls disponíveis para sistemas Linux, alguns dos quais têm uma curva de aprendizado mais acentuada do que outros. Em geral, a configuração do firewall deve levar apenas alguns minutos e só precisará acontecer durante a configuração inicial do servidor ou quando você fizer alterações nos serviços oferecidos no computador.

Uma escolha simples é o firewall UFW . Outras opções são usar o iptables ou o firewall do CSF .

VPNs e redes privadas

Redes privadas são redes que estão disponíveis apenas para determinados servidores ou usuários. Por exemplo, as redes privadas DigitalOcean permitem a comunicação isolada entre servidores na mesma conta ou equipe na mesma região . 
Uma VPN, ou rede privada virtual, é uma maneira de criar conexões seguras entre computadores remotos e apresentar a conexão como se fosse uma rede privada local. Isso fornece uma maneira de configurar seus serviços como se estivessem em uma rede privada e conecte servidores remotos em conexões seguras.

Como eles aprimoram a segurança?

Utilizar rede privada em vez de pública para comunicação interna é quase sempre preferível, dada a escolha entre os dois. No entanto, como outros usuários do data center podem acessar a mesma rede, você ainda deve implementar medidas adicionais para proteger a comunicação entre seus servidores.

Usar uma VPN é, efetivamente, uma maneira de mapear uma rede privada que somente seus servidores podem ver. A comunicação será totalmente privada e segura. Outros aplicativos podem ser configurados para passar seu tráfego pela interface virtual que o software VPN expõe. Dessa forma, apenas os serviços destinados a serem consumidos pelos clientes na Internet pública precisam ser expostos na rede pública.

Quão difícil é isso implementar?

Utilizar redes privadas em um datacenter com essa capacidade é tão simples quanto habilitar a interface durante a criação do servidor e configurar seus aplicativos e firewall para usar a rede privada. Tenha em mente que as redes privadas de todo o data center compartilham espaço com outros servidores que usam a mesma rede.

Quanto à VPN, a configuração inicial é um pouco mais complicada, mas a maior segurança vale para a maioria dos casos de uso. Cada servidor em uma VPN deve ter os dados compartilhados de segurança e configuração necessários para estabelecer a conexão segura instalada e configurada. Após a VPN estar em funcionamento, os aplicativos devem ser configurados para usar o túnel VPN. Para saber como configurar uma VPN para conectar sua infraestrutura com segurança, confira nosso tutorial do OpenVPN .

Infraestrutura de chave pública e criptografia SSL / TLS

A infraestrutura de chave pública, ou PKI, refere-se a um sistema projetado para criar, gerenciar e validar certificados para identificar indivíduos e criptografar a comunicação. Os certificados SSL ou TLS podem ser usados ​​para autenticar entidades diferentes entre si. Após a autenticação, eles também podem ser usados ​​para estabelecer uma comunicação criptografada.

Como eles aprimoram a segurança?

Estabelecer uma autoridade de certificação e gerenciar certificados para seus servidores permite que cada entidade em sua infraestrutura valide a identidade de outros membros e criptografe seu tráfego. Isso pode impedir ataques man-in-the-middle em que um invasor imita um servidor em sua infraestrutura para interceptar o tráfego.

Cada servidor pode ser configurado para confiar em uma autoridade de certificação centralizada. Posteriormente, qualquer certificado que a autoridade assina pode ser implicitamente confiável. Se os aplicativos e protocolos que você está usando para se comunicar suportam a criptografia TLS / SSL, essa é uma maneira de criptografar seu sistema sem a sobrecarga de um túnel VPN (que também costuma usar SSL internamente).

Quão difícil é isso implementar?

Configurar uma autoridade de certificação e configurar o restante da infraestrutura de chave pública pode envolver um pouco de esforço inicial. Além disso, o gerenciamento de certificados pode criar uma carga administrativa adicional quando novos certificados precisam ser criados, assinados ou revogados.

Para muitos usuários, implementar uma infra-estrutura de chave pública completa fará mais sentido à medida que suas necessidades de infraestrutura aumentarem. Proteger as comunicações entre os componentes usando VPN pode ser uma boa medida de intervalo até chegar a um ponto em que a PKI vale os custos administrativos extras.

Auditoria de Serviço

Até agora, discutimos algumas tecnologias que você pode implementar para melhorar sua segurança. No entanto, uma grande parte da segurança está analisando seus sistemas, entendendo as superfícies de ataque disponíveis e bloqueando os componentes da melhor forma possível.

A auditoria de serviço é um processo de descobrir quais serviços estão sendo executados nos servidores da sua infraestrutura. Geralmente, o sistema operacional padrão é configurado para executar determinados serviços na inicialização. A instalação de software adicional às vezes pode gerar dependências que também são iniciadas automaticamente.

A auditoria de serviço é uma maneira de saber quais serviços estão sendo executados em seu sistema, quais portas eles estão usando para comunicação e quais protocolos são aceitos. Essas informações podem ajudá-lo a definir suas configurações de firewall.

Como ele aprimora a segurança?

Os servidores iniciam muitos processos para fins internos e para lidar com clientes externos. Cada um deles representa uma superfície de ataque expandida para usuários mal-intencionados. Quanto mais serviços você tiver em execução, maior a chance de haver uma vulnerabilidade existente em seu software acessível.

Depois de ter uma boa ideia de quais serviços de rede estão sendo executados em sua máquina, você pode começar a analisar esses serviços. Algumas perguntas que você vai querer se fazer para cada uma delas são:

  • Este serviço deve estar em execução?
  • O serviço está sendo executado em interfaces que não precisa? Deveria estar vinculado a um único IP?
  • Suas regras de firewall estão estruturadas para permitir o tráfego legítimo para esse serviço?
  • Suas regras de firewall estão bloqueando o tráfego que não é legítimo?
  • Você tem um método de receber alertas de segurança sobre vulnerabilidades para cada um desses serviços?

Esse tipo de auditoria de serviço deve ser uma prática padrão ao configurar qualquer novo servidor em sua infraestrutura.

Quão difícil é isso implementar?

Fazer uma auditoria básica de serviço é incrivelmente simples. Você pode descobrir quais serviços estão escutando as portas em cada interface usando o netstatcomando. Um exemplo simples que mostra o nome do programa, o PID e os endereços usados ​​para escutar o tráfego TCP e UDP é:

sudo netstat -plunt

Você verá a saída que se parece com isto:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      887/sshd        
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      919/nginx       
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd        
tcp6       0      0 :::80                   :::*                    LISTEN      919/nginx

Os principais colunas que você precisa para ficar atenção são ProtoLocal AddressPID/Program name. Se o endereço for 0.0.0.0, o serviço está aceitando conexões em todas as interfaces.

Auditoria de arquivos e sistemas de detecção de intrusão

A auditoria de arquivos é o processo de comparar o sistema atual com um registro dos arquivos e das características do arquivo do sistema quando ele é um estado em bom estado. Isso é usado para detectar alterações no sistema que podem ter sido autorizadas.

Um sistema de detecção de intrusão, ou IDS, é um software que monitora um sistema ou rede para atividades não autorizadas. Muitas implementações de IDS baseadas em host usam a auditoria de arquivos como um método para verificar se o sistema foi alterado.

Como eles aprimoram a segurança?

Semelhante à auditoria de nível de serviço acima, se você é sério sobre como garantir um sistema seguro, é muito útil poder realizar auditorias em nível de arquivo de seu sistema. Isso pode ser feito periodicamente pelo administrador ou como parte de um processo automatizado em um IDS.

Essas estratégias são algumas das únicas maneiras de ter certeza absoluta de que seu sistema de arquivos não foi alterado por algum usuário ou processo. Por muitas razões, os invasores geralmente desejam permanecer ocultos para que possam continuar explorando o servidor por um longo período de tempo. Eles podem substituir binários por versões comprometidas. Fazer uma auditoria no sistema de arquivos informará se algum dos arquivos foi alterado, permitindo que você tenha confiança na integridade do seu ambiente de servidor.

Quão difícil é isso implementar?

A implementação de um IDS ou a realização de auditorias de arquivos pode ser um processo bastante intensivo. A configuração inicial envolve informar ao sistema de auditoria sobre quaisquer alterações não padrão feitas no servidor e definir caminhos que devem ser excluídos para criar uma leitura de linha de base.

Isso também torna as operações do dia a dia mais envolvidas. Isso complica os procedimentos de atualização, pois você precisará verificar novamente o sistema antes de executar as atualizações e, em seguida, recriar a linha de base após executar a atualização para capturar as alterações nas versões do software. Você também precisará descarregar os relatórios em outro local para que um invasor não possa alterar a auditoria para cobrir seus rastros.

Embora isso possa aumentar sua carga de administração, a possibilidade de verificar seu sistema em relação a uma cópia em boas condições é uma das únicas maneiras de garantir que os arquivos não tenham sido alterados sem o seu conhecimento. Alguns sistemas de detecção de intrusão / auditoria de arquivos populares são o Tripwire e o Aide .

Ambientes de Execução Isolada

Isolar ambientes de execução refere-se a qualquer método no qual componentes individuais são executados dentro de seu próprio espaço dedicado.

Isso pode significar separar seus componentes de aplicativos distintos para seus próprios servidores ou pode se referir a configurar seus serviços para operar em chrootambientes ou contêineres. O nível de isolamento depende muito dos requisitos de sua aplicação e das realidades de sua infraestrutura.

Como eles aprimoram a segurança?

Isolar seus processos em ambientes de execução individuais aumenta sua capacidade de isolar quaisquer problemas de segurança que possam surgir. Semelhante à forma como anteparas e compartimentos podem ajudar a conter violações casco em navios, separando seus componentes individuais podem limitar o acesso que um intruso tem que outras peças de sua infra-estrutura.

Quão difícil é isso implementar?

Dependendo do tipo de contenção escolhido, isolar seus aplicativos pode ser relativamente simples. Ao empacotar seus componentes individuais em contêineres, você pode rapidamente obter alguma medida de isolamento, mas observe que o Docker não considera sua conteinerização como um recurso de segurança.

A criação de um chrootambiente para cada peça também pode fornecer algum nível de isolamento, mas também não é um método de isolamento à prova de falhas, pois muitas vezes há maneiras de sair de um chrootambiente. Mover componentes para máquinas dedicadas é o melhor nível de isolamento e, em muitos casos, pode ser o mais fácil, mas pode custar mais para as máquinas adicionais.

Conclusão

As estratégias descritas acima são apenas algumas das melhorias que você pode fazer para melhorar a segurança de seus sistemas. É importante reconhecer que, embora seja melhor tarde do que nunca, as medidas de segurança diminuem sua eficácia quanto mais tempo você espera para implementá-las. A segurança não pode ser uma reflexão tardia e deve ser implementada desde o início, juntamente com os serviços e aplicativos que você está fornecendo.

Fonte: DigitalOcean

Profissional com mais de 6 anos de experiência, trabalhando sempre em empresas líderes de seus segmentos. Sólidos conhecimentos em E-Commerce, marketing, branding, mídia. Specialties: E-commerce, SEO , SEM, User Experience, Usbilidade, Digital Marketing, Social Media , Email Marketing, Media de Performance.

%d blogueiros gostam disto: