É impossível proteger o servidor de acessos externos de uma vez por todas, pois a cada dia novas vulnerabilidades são descobertas e novas formas de hackear o servidor aparecem. Falaremos sobre como proteger servidores contra acesso não autorizado neste artigo.
Os servidores de qualquer empresa podem, mais cedo ou mais tarde, tornar-se alvo de hackers ou ataques de vírus. Normalmente, o resultado de tal ataque é a perda de dados, danos à reputação ou financeiros, portanto, as questões de segurança do servidor devem receber atenção prioritária.
Deve-se entender que a proteção contra hackers de servidores é um conjunto de medidas que inclui monitoramento constante da operação do servidor e trabalho para melhorar a proteção. É impossível proteger o servidor de acessos externos de uma vez por todas, pois a cada dia novas vulnerabilidades são descobertas e novas formas de hackear o servidor aparecem.
Falaremos sobre como proteger servidores contra acesso não autorizado neste artigo.
Formas e métodos de proteger servidores contra acesso não autorizado
Proteção física do servidor
Proteção física. É aconselhável que o servidor esteja localizado em um data center seguro, uma sala fechada e vigiada não deve ter acesso ao servidor;
Configurar autenticação SSH
Ao configurar o acesso ao servidor, use a autenticação por chave SSH em vez de uma senha, pois essas chaves são muito mais difíceis e às vezes simplesmente impossíveis de serem quebradas usando força bruta.
Se você acha que ainda precisa de uma senha, limite o número de tentativas para digitá-la.
Observe se você vir uma mensagem como esta ao fazer login:
Última falha de login: terça-feira, 28 de setembro 12:42:35 MSK 2017 de 52.15.194.10 em ssh:notty
Houve 8.243 tentativas de login malsucedidas desde o último login bem-sucedido.
Isso pode indicar que alguém tentou hackear seu servidor. Neste caso, para configurar a segurança do servidor, altere a porta SSH, limite a lista de IPs a partir dos quais é possível o acesso ao servidor ou instale um software que bloqueie automaticamente atividades excessivamente frequentes e suspeitas.
Instale as atualizações mais recentes regularmente
Para garantir a proteção do servidor, instale imediatamente os patches e atualizações mais recentes para o software de servidor que você usa - sistema operacional, hipervisor, servidor de banco de dados.
É aconselhável verificar novos patches, atualizações e relatórios de bugs/vulnerabilidades todos os dias para evitar ataques que exploram vulnerabilidades de dia zero. Para isso, assine as novidades da empresa desenvolvedora de software, acompanhe suas páginas nas redes sociais.
Proteja suas senhas
Até agora, uma das formas mais comuns de obter acesso a um servidor é hackear a senha do servidor. Portanto, siga recomendações conhecidas, mas relevantes, para não deixar o servidor desprotegido:
- Não utilize senhas fáceis de adivinhar, como o nome da sua empresa;
- se você ainda estiver usando a senha padrão do console do administrador, altere-a imediatamente;
- senhas para serviços diferentes deve ser diferente;
- se precisar passar uma senha para alguém, nunca envie o endereço IP, login e senha no mesmo e-mail ou mensagem do messenger;
- Você pode configurar a autenticação de dois fatores para fazer login na sua conta de administrador.
Firewall
- Certifique-se de que o servidor tenha , esteja configurado e em execução o tempo todo.
- Proteja o tráfego de entrada e saída.
- Acompanhe quais portas estão abertas e para quais finalidades, não abra nada desnecessário, a fim de reduzir o número de possíveis vulnerabilidades para hackear o servidor.
Em particular, um firewall é muito útil para proteger o servidor contra ataques ddos, porque você pode criar rapidamente regras de firewall proibitivas e adicionar os endereços IP de onde vem o ataque ou bloquear o acesso a determinados aplicativos usando determinados protocolos.
Monitoramento e detecção de intrusão
- Limite o software e os serviços em execução no seu servidor. Verifique periodicamente tudo o que você está executando e, se encontrar algum processo desconhecido, exclua-o imediatamente e comece a verificar se há vírus.
- Verifique periodicamente se há sinais de adulteração. Novas informações podem indicar hack contas usuários que você não criou, movendo ou excluindo um arquivo /etc/syslog.conf, arquivos excluídos/etc/sombra E /etc/senha.
- Monitore o desempenho do seu servidor, veja sua velocidade normal e rendimento, para que você possa notar desvios, por exemplo, quando a carga no servidor se tornar significativamente maior do que o normal.
Usando criptografia VPN e SSL/TLS
Se necessário acesso remoto ao servidor, só deve ser permitido a partir de determinados endereços IP e ocorrer através de uma VPN.
O próximo passo para garantir a segurança pode ser a configuração do SSL, que permitirá não só criptografar dados, mas também verificar a identidade de outros participantes da infraestrutura de rede, emitindo-lhes os certificados apropriados.
Verificação de segurança do servidor
Seria uma boa ideia verificar de forma independente a segurança do servidor usando um método pentest, ou seja, modelagem de ataque para encontrar vulnerabilidades potenciais e eliminá-las em tempo hábil. É aconselhável envolver especialistas neste segurança da informação, porém, alguns testes podem ser feitos de forma independente, utilizando programas para hackear servidores.
O que mais ameaça os servidores além de hackear?
Um servidor pode falhar por vários motivos além de hackers. Por exemplo, pode ser uma infecção por malware ou simplesmente uma falha física de qualquer um dos componentes.
Portanto, as medidas para proteger o servidor devem incluir:
- Instalação e atualização de programas de proteção do servidor - antivírus.
- Cópias criptografadas regulares de dados, pelo menos uma vez por semana, pois, segundo as estatísticas, os discos rígidos dos servidores estão em primeiro lugar na frequência de falhas. Certificar-se backup armazenados em um ambiente fisicamente seguro.
- Garantir fornecimento de energia ininterrupto para a sala do servidor.
- Prevenção física oportuna de servidores, incluindo limpeza de poeira e substituição de pasta térmica.
A experiência dos especialistas da Integrus diz-nos que a melhor proteção contra este tipo de ameaça é a aplicação das melhores práticas no domínio dos sistemas de proteção de servidores.
Para garantir a segurança dos servidores dos nossos clientes, utilizamos uma combinação de ferramentas: firewalls, antivírus, tecnologias de segurança/gestão de eventos (SIM/SEM), tecnologias de deteção/proteção de intrusão (IDS/IPS), tecnologias de análise de comportamento de rede (NBA). , é claro, manutenção preventiva regular de servidores e organização de salas de servidores seguras prontas para uso. Isso permite reduzir ao mínimo os riscos de invasão ou falha do servidor por outros motivos.
Estamos prontos para realizar uma auditoria de segurança nos servidores da sua empresa, consultar especialistas e realizar todo tipo de trabalho para configurar a proteção dos equipamentos dos servidores.
A maioria dos programas deve interagir com o usuário inserindo determinados dados, seja nome completo, altura, peso a ser inserido no banco de dados ou dimensões geométricas de algum objeto para o qual algo precisa ser calculado. Todos esses dados são inseridos pelo usuário - uma pessoa, o que significa que qualquer coisa pode vir em resposta. Qual será o resultado do programa se o usuário escrever em palavras em vez da idade necessária? Muito provavelmente, o programa irá travar ou congelar, mas não se tiver “proteção contra tolos”.
Por que um programa pode falhar ou congelar? O programa tentará converter o conjunto de caracteres em um número, o que não será possível, o que significa que o posterior funcionamento da aplicação não está definido. Portanto, é muito importante organizar a estrutura do programa para que ao entrar inesperado para o programa de dados (incorreto do ponto de vista do formato requerido: é necessário um número, mas uma palavra é inserida), o aplicativo não travou, mas informou ao usuário que havia ocorrido um erro e pediu para repetir a entrada. Isto é “à prova de idiotas”.
Implementando proteção contra falhas em C
Para implementar uma boa segurança na inserção de vários dados numéricos (int, double...), é necessário ler não os números em si, mas toda a string de entrada e só então analisar a entrada. A linguagem C tem uma função muito boa sscanf(const char *, const char *, args) , que funciona de forma semelhante à função scanf(const char *, args), retornando o número de argumentos lidos com sucesso, apenas os dados são lidos não do fluxo de entrada padrão, mas da string passada para ele como o primeiro argumento.
Vejamos alguns exemplos de funções que implementam a prova de erros usando a função sscanf.
Inserindo um número inteiro com verificação de entrada incorreta
int get_integer(const char *msg) ( char answer; // linha para leitura int n; // inteiro final printf("%s", msg); // exibe prompt fgets(answer, sizeof(answer), stdin); // lê a linha // até que um número inteiro seja lido while (sscanf(answer, "%d", &n) != 1) ( printf("Entrada incorreta. Tente novamente: "); // imprime uma mensagem sobre o erro fgets (resposta, sizeof(resposta), stdin); // e leia a linha novamente) return n;Para ler um número inteiro, o algoritmo lê a string inteira e então tenta obter um número inteiro dela. Se isso falhar, a função exibirá uma mensagem de erro solicitando que você repita a entrada até que o valor inteiro correto seja inserido.
Inserindo um número real com verificação de entrada incorreta
double get_double(const char *msg) ( char answer; // linha para ler double x; // número real final printf("%s", msg); // exibe um prompt de entrada fgets(answer, sizeof(answer), stdin); // lê a linha // até que um número real seja lido while (sscanf(answer, "%lf", &x) != 1) ( printf("Entrada incorreta. Tente novamente: "); // imprime um mensagem sobre erro fgets(answer, sizeof(answer), stdin); // e leia a linha novamente) return x // retorna o número real correto)Inserindo um ponto no plano de coordenadas (estrutura com dois campos reais)
// descrição da estrutura de dados typedef struct point_t ( double x; // coordenada x double y; // coordenada y ) point_t; point_t get_point(const char *msg) ( char answer; // linha para ler point_t point; // ponto final printf("%s", msg); // exibe um prompt de entrada fgets(answer, sizeof(answer), stdin ); // lê a linha // até que ambas as coordenadas do ponto sejam lidas while (sscanf(answer, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Incorrect input. Tente novamente: "); // exibe uma mensagem de erro fgets(answer, sizeof(answer), stdin); // e lê a linha novamente ) return point; // retorna o ponto correto )Como pode ser visto nos exemplos, o recurso da função sscanf que retorna o número de argumentos lidos permite controlar a exatidão dos dados inseridos no formato especificado, e a leitura de toda a linha protege contra o fato de caracteres de espaço ou quebras de linha "\n" permanecerá no fluxo de entrada, o que muitas vezes força você a desperdiçar. Não leva uma hora ou mesmo um dia para encontrar um erro.
Análise