O que pode ser feito para proteger o servidor Ubuntu?
35
Eu tenho um projeto para proteger o Ubuntu Server o máximo possível. O servidor é um servidor de hospedagem na web. O servidor estará executando LAMP, Mail e DNS.
Eu fiz uma folha de dicas do Ubuntu Server e gostaria de compartilhá-la com você. As primeiras páginas são comandos linux gerais, pacotes de servidores específicos e a última página é uma lista de verificação de segurança do servidor. A lista de verificação reúne dicas e reforços de muitos sites. Espero que ajude você! Licenciado sob a licença WTFPL . Você pode visualizar / baixar / qualquer que seja a lista de verificação aqui . Eu atualizo de vez em quando.
Noah Krasser
Respostas:
43
Aqui está uma lista de coisas que faço para proteger meu servidor.
Ative UFW ( sudo ufw enable) e, em seguida, permita apenas portas que são realmente usadas. ( sudo ufw allow 80)
Certifique-se de que o MySQL permita apenas conexões do host local.
Habilite o TLS nos serviços de correio. Mesmo que seja um certificado autoassinado. Você não deseja que as senhas sejam enviadas de forma clara.
Instale bloqueadores ssh bruteforce como denyhosts ou fail2ban. ( sudo apt-get install denyhosts)
Procure criar apenas logins baseados em chave ssh.
Aprenda AppArmor. Se você usa configurações razoavelmente completas, é extremamente fácil. Apenas verifique se está ligado. Isso ajudará a reduzir as explorações de dia zero.
Dependendo do acesso físico ao servidor, você pode até querer criptografar os dados no disco rígido.
Siga outras recomendações neste link. EDIT: esqueci de editar isso quando não tinha reputação suficiente para adicionar mais links. O link indicado aqui é o último link abaixo.
Nunca confie em seus usuários. Se você estiver tendo vários usuários com acesso ao sistema, bloqueie-os. Se você precisar dar acesso ao sudo, dê apenas o que eles precisam.
Use o senso comum. Pense bem em como você entraria se estivesse trancado. Depois feche esses orifícios.
Mais algumas coisas a considerar. A maioria das pessoas esquece do acesso físico. Todas as configurações de software do mundo não significam nada se eu puder entrar fisicamente com um LiveCD e roubar seus dados. Cuidado com a engenharia social. Faça perguntas para verificar quem está ao telefone e verifique se eles têm autorização para fazer a solicitação que estão fazendo.
Uma alternativa ao uso do UFW (enquanto ainda usa firewalls embutidos no Ubuntu) é bloquear seu sistema com iptablesregras extremamente específicas para impedir o acesso externo a qualquer serviço que você não utilize, se você tiver um problema. configuração de bola que requer roteamento avançado e outras coisas.
Thomas Ward
2
@LordofTime concordou. Na verdade, eu mesmo uso o iptables, mas o ufw é adequado para a maioria das instalações básicas. Além disso, o UFW é mais ou menos apenas um invólucro para as configurações mais comuns de iptables. O sistema subjacente ainda é o mesmo.
Patrick Regan
2
+1 para ufw, você não é um usuário novo, você é membro por 1 ano: p
Tachyons
1
Na verdade, eu só queria salientar que, em certos casos iptables terá uma melhor usabilidade sobre ufw em certos casos
Thomas Ward
1
Considere o BastilleLinux , também é um bom conjunto de proteção de segurança.
pl1nk
13
Memória compartilhada segura
/ dev / shm pode ser usado em um ataque contra um serviço em execução, como httpd. Modifique / etc / fstab para torná-lo mais seguro.
Abra uma janela do terminal e digite o seguinte:
sudo vi /etc/fstab
Adicione a seguinte linha e salve. Você precisará reiniciar para que esta configuração entre em vigor:
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
Endurecer a rede com configurações sysctl
O arquivo /etc/sysctl.conf contém todas as configurações do sysctl. Impedir o roteamento de origem dos pacotes recebidos e registrar IPs malformados, digite o seguinte em uma janela do terminal
sudo vi /etc/sysctl.conf
Edite o arquivo /etc/sysctl.conf e retire o comentário ou adicione as seguintes linhas:
Verificar logs e banir hosts suspeitos - DenyHosts e Fail2Ban
@DenyHosts
DenyHosts é um programa python que bloqueia automaticamente ataques SSH adicionando entradas ao /etc/hosts.deny. O DenyHosts também informará os administradores do Linux sobre hosts ofensivos, usuários atacados e logins suspeitos.
Abra um terminal e digite o seguinte:
sudo apt-get install denyhosts
Após a instalação, edite o arquivo de configuração /etc/denyhosts.conf e altere o email e outras configurações, conforme necessário.
Para editar as configurações de e-mail do administrador, abra uma janela do terminal e digite:
sudo vi /etc/denyhosts.conf
Altere os seguintes valores conforme necessário em seu servidor:
O Fail2ban é mais avançado que o DenyHosts, pois estende o monitoramento de log para outros serviços, incluindo SSH, Apache, Courier, FTP e muito mais.
O Fail2ban verifica os arquivos de log e proíbe os IPs que mostram os sinais maliciosos - muitas falhas de senha, buscando explorações etc.
Geralmente, o Fail2Ban é usado para atualizar as regras do firewall para rejeitar os endereços IP por um período de tempo especificado, embora qualquer outra ação arbitrária também possa ser configurada. Fora da caixa O Fail2Ban vem com filtros para vários serviços (apache, courier, ftp, ssh, etc).
Abra um terminal e digite o seguinte:
sudo apt-get install fail2ban
Após a instalação, edite o arquivo de configuração /etc/fail2ban/jail.local e crie as regras de filtro conforme necessário.
Para editar as configurações, abra uma janela do terminal e digite:
sudo vi /etc/fail2ban/jail.conf
Ative todos os serviços que você gostaria que o fail2ban monitorasse, alterando enabled = false para * enabled = true *
Por exemplo, se você deseja habilitar o monitoramento SSH e banir a prisão, localize a linha abaixo e altere a opção habilitada de falsa para verdadeira . É isso aí.
O Nmap ("Network Mapper") é um utilitário gratuito e de código aberto para descoberta de rede e auditoria de segurança.
Abra um terminal e digite o seguinte:
sudo apt-get install nmap
Examine seu sistema em busca de portas abertas com:
nmap -v -sT localhost
Digitalização SYN com o seguinte:
sudo nmap -v -sS localhost
Analisar arquivos de log do sistema - LogWatch
O Logwatch é um sistema de análise de logs personalizável. O Logwatch analisa os logs do sistema e cria um relatório analisando as áreas que você especificar. O Logwatch é fácil de usar e funcionará imediatamente na maioria dos sistemas.
Abra um terminal e digite o seguinte:
sudo apt-get install logwatch libdate-manip-perl
Para visualizar a saída do logwatch, use menos:
sudo logwatch | less
Para enviar por e-mail um relatório do watchwatch dos últimos 7 dias para um endereço de e-mail, digite o seguinte e substitua [email protected] pelo e-mail necessário. :
sudo logwatch --mailto [email protected] --output mail --format html --range 'between -7 days and today'
Audite a segurança do seu sistema - Tiger.
O Tiger é uma ferramenta de segurança que pode ser usada como um sistema de auditoria de segurança e detecção de intrusões.
Abra um terminal e digite o seguinte:
sudo apt-get install tiger
Para executar o tigre, digite:
sudo tiger
Toda a saída do Tiger pode ser encontrada no diretório / var / log / tiger
Para visualizar os relatórios de segurança do tigre, abra um terminal e digite o seguinte:
Como você disse que este é um servidor de hospedagem na web ... eu gostaria de compartilhar minhas melhores práticas e experiência de 5 longos anos na linha de hospedagem na web.
Pelas minhas experiências passadas, em vez de entrar no inferno imediatamente de configuração, você deve primeiro reunir as uvas baixas de segurança, conforme indicado no artigo fornecido.
Como você está usando o LAMP, você deve ter muito cuidado com o PHP e suas configurações do php.ini. Este é um bom link para proteger o PHP. O PHP possui super poderes que podem se tornar um loop de segurança quando não configurados corretamente.
Você pode usar um trabalho cron para verificar quando seus arquivos foram modificados sem sua permissão e possivelmente hackeados; usando este trabalho cron . Prefiro o Notepad ++ para comparar os resultados do cron (baixe diretamente o email do cron do seu servidor da web e abra no Notepad ++).
Se você deseja instalar algum SEM, o cPanel é o melhor preferido (no entanto pago). Webmin e zpanel são muito boas alternativas gratuitas. O Webmin é melhor, pelo menos usa certificados autoassinados e adiciona segurança.
Se você quiser que algo funcione imediatamente, você pode optar pelo Turnkey Linux. É baseado no Ubuntu, extremamente fácil de implementar e flexível para suas necessidades. Com muito pouco esforço, você obtém segurança imediata. Esta é a sua pilha LAMP . Eu pessoalmente uso e prefiro isso apenas.
Se você estiver começando do zero, também poderá instalar o ISPconfig3. Instrução Aqui .
você pode testar sua segurança tentando penetrá-la usando o Back-Track-Linux .
mantenha senhas longas e aleatórias complexas . Não os guarde no PC. escreva-os. Use um CD ao vivo para acessar esses logins.
obtenha um software de proteção de força bruta como o fail2ban.
Não execute os daemons que você não precisa.
Bloqueie todas as portas desnecessárias . tenha muito cuidado com a porta SSH (22).
Obtenha um IP estático no sistema através do qual você gerenciará o servidor. Faça a maioria das coisas do bloco IP e permita apenas que seu IP específico acesse esses locais de configuração como a porta 22.
No final do dia ... trabalhe com total tranqüilidade, não se emocione com a instalação e aplicar o bom senso leva muito além.
O PHP também pode ser perigoso ao confiar na entrada do usuário (injeção de sql, por exemplo).
NoBugs
@ NoBugs Concordo absolutamente com este ponto. Não é possível compactar tudo em uma única resposta. Minha resposta contém muitos hiperlinks e, como tal, esses sites que contêm essas páginas são realmente muito úteis. Espero que minha resposta e links incluídos ajudar a comunidade :)
Bhavesh Diwan
2
# 9: Não, as senhas ramdom são ruins, a chave está no comprimento , ou seja. "D0g ....................." é mais forte que "PrXyc.N (n4k77 # L! EVdAfp9". Explicação em explanxkcd.com/2011/08/10 / password-força
papukaija
2
@papukaija, sugiro que você pesquise no Google brute force attackse dictionary attacks... Senha longa aleatória é a única maneira de se proteger de tais ataques.
Bhavesh Diwan
6
Faça uso do projeto Bastille Linux.
Ele fornece uma ferramenta interativa para executar medidas adicionais de proteção de segurança para aumentar a segurança geral e diminuir a suscetibilidade de comprometimento do sistema Ubuntu (do Bastille Linux ).
Ele oferece uma funcionalidade de avaliação e relatório, para que você possa dizer quais partes do sistema não estão bloqueadas. Ele examina o sistema somente para leitura, relatando o status de cada um de seus itens de proteção. Por exemplo, o Bastille pode verificar se o servidor DNS está bloqueado em uma prisão chroot, se o telnet está desativado ou mesmo se as senhas precisam ter um bom tamanho. Você pode dar uma olhada em uma demonstração apenas na Web disso através deste link (mais informações ).
Você pode ter uma prévia da demonstração da Web (apenas) aqui .
Eu posso concordar com essa recomendação. Para executar hosts expostos (por exemplo, servidores Web), o bastille ajuda bastante na proteção do sistema.
Floyd
Isso se parece com o sistema SELinux que você encontra no CentOS / Redhat, mas aposto que o SELinux é mais moderno.
djangofan
3
Use nmapem todas as interfaces da máquina, para saber quais serviços você executa na sua máquina. Esta é uma ferramenta essencial para a segurança.
Remova todos os serviços que você não precisa nas suas interfaces externas. Você pode configurar o MySQL para escutar apenas em interfaces específicas, como localhost.
Use o ufw para proteger seu serviço SSH (e outros possíveis) para que ele não permita muitas conexões (com falha) por minuto da mesma máquina. Isso tornará os ataques de força bruta mais difíceis. Alterar o número da porta não é tão útil, apenas obscuridade, sem segurança.
Seja restritivo com o número de contas em sua máquina. Também não instale mais pacotes / programas do que você realmente usa. Instale apenas clientes X11, não um servidor X11.
Permita apenas o login ssh na máquina com certificados digitais, sem senha. Isso também tornará os ataques de força bruta difíceis / impossíveis.
Também consultaria o documento CIS Debian Benchmarks e ele possui um número significativo de procedimentos e processos para proteger o sistema operacional que será aplicado ao Ubuntu, pois é um derivado do Debian. Eu também consultaria:
A segurança sempre vem com um preço. Estabelecer limites realistas ajudará você a atingir seus objetivos. Eu consideraria os seguintes aspectos:
Contra o que você está se protegendo (que tipo de vilão, qual é o orçamento dele)?
Quais são seus vetores de ataque?
Verificando todos os links postados aqui, acho que este deve ser adicionado. Ele entra em detalhes não apenas sobre como configurar seu software, mas também sobre o plano de segurança. Como vantagem, todo comando a ser executado é explicado com uma fonte.
Respostas:
Aqui está uma lista de coisas que faço para proteger meu servidor.
sudo ufw enable
) e, em seguida, permita apenas portas que são realmente usadas. (sudo ufw allow 80
)sudo apt-get install denyhosts
)Mais algumas coisas a considerar. A maioria das pessoas esquece do acesso físico. Todas as configurações de software do mundo não significam nada se eu puder entrar fisicamente com um LiveCD e roubar seus dados. Cuidado com a engenharia social. Faça perguntas para verificar quem está ao telefone e verifique se eles têm autorização para fazer a solicitação que estão fazendo.
Como ainda sou um usuário 'novo', não posso postar mais de dois links. Você pode ler mais sobre este assunto aqui: https://help.ubuntu.com/12.04/serverguide/index.html e prestar atenção especial a https://help.ubuntu.com/12.04/serverguide/security.html
fonte
iptables
regras extremamente específicas para impedir o acesso externo a qualquer serviço que você não utilize, se você tiver um problema. configuração de bola que requer roteamento avançado e outras coisas.Memória compartilhada segura
/ dev / shm pode ser usado em um ataque contra um serviço em execução, como httpd. Modifique / etc / fstab para torná-lo mais seguro.
Abra uma janela do terminal e digite o seguinte:
Adicione a seguinte linha e salve. Você precisará reiniciar para que esta configuração entre em vigor:
Endurecer a rede com configurações sysctl
O arquivo /etc/sysctl.conf contém todas as configurações do sysctl. Impedir o roteamento de origem dos pacotes recebidos e registrar IPs malformados, digite o seguinte em uma janela do terminal
Edite o arquivo /etc/sysctl.conf e retire o comentário ou adicione as seguintes linhas:
Para recarregar o sysctl com as alterações mais recentes, digite:
Evitar falsificação de IP
Abra um terminal e digite o seguinte:
Adicione ou edite as seguintes linhas:
Endurecer o PHP para segurança
Edite o arquivo php.ini:
Adicione ou edite as seguintes linhas:
Firewall de aplicativos Web - ModSecurity
http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server
Proteger contra ataques DDOS (Denial of Service) - ModEvasive
http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server
Verificar logs e banir hosts suspeitos - DenyHosts e Fail2Ban
@DenyHosts
DenyHosts é um programa python que bloqueia automaticamente ataques SSH adicionando entradas ao /etc/hosts.deny. O DenyHosts também informará os administradores do Linux sobre hosts ofensivos, usuários atacados e logins suspeitos.
Abra um terminal e digite o seguinte:
Após a instalação, edite o arquivo de configuração /etc/denyhosts.conf e altere o email e outras configurações, conforme necessário.
Para editar as configurações de e-mail do administrador, abra uma janela do terminal e digite:
Altere os seguintes valores conforme necessário em seu servidor:
@ Fail2Ban
O Fail2ban é mais avançado que o DenyHosts, pois estende o monitoramento de log para outros serviços, incluindo SSH, Apache, Courier, FTP e muito mais.
O Fail2ban verifica os arquivos de log e proíbe os IPs que mostram os sinais maliciosos - muitas falhas de senha, buscando explorações etc.
Geralmente, o Fail2Ban é usado para atualizar as regras do firewall para rejeitar os endereços IP por um período de tempo especificado, embora qualquer outra ação arbitrária também possa ser configurada. Fora da caixa O Fail2Ban vem com filtros para vários serviços (apache, courier, ftp, ssh, etc).
Abra um terminal e digite o seguinte:
Após a instalação, edite o arquivo de configuração /etc/fail2ban/jail.local e crie as regras de filtro conforme necessário.
Para editar as configurações, abra uma janela do terminal e digite:
Ative todos os serviços que você gostaria que o fail2ban monitorasse, alterando enabled = false para * enabled = true *
Por exemplo, se você deseja habilitar o monitoramento SSH e banir a prisão, localize a linha abaixo e altere a opção habilitada de falsa para verdadeira . É isso aí.
Se você deseja receber e-mails do Fail2Ban se os hosts forem proibidos, altere a seguinte linha para o seu endereço de e-mail.
e altere a seguinte linha de:
para:
Você também pode criar filtros de regras para os vários serviços que você gostaria que o fail2ban monitore que não seja fornecido por padrão.
Boas instruções sobre como configurar o fail2ban e criar os vários filtros podem ser encontradas no HowtoForge - clique aqui para ver um exemplo
Quando terminar com a configuração do Fail2Ban, reinicie o serviço com:
Você também pode verificar o status com.
Verifique rootkits - RKHunter e CHKRootKit.
O RKHunter e o CHKRootkit basicamente fazem a mesma coisa - verifique o seu sistema quanto a rootkits. Nenhum dano em usar os dois.
Abra um terminal e digite o seguinte:
Para executar o chkrootkit, abra uma janela do terminal e digite:
Para atualizar e executar o RKHunter. Abra um terminal e digite o seguinte
Verificar portas abertas - Nmap
O Nmap ("Network Mapper") é um utilitário gratuito e de código aberto para descoberta de rede e auditoria de segurança.
Abra um terminal e digite o seguinte:
Examine seu sistema em busca de portas abertas com:
Digitalização SYN com o seguinte:
Analisar arquivos de log do sistema - LogWatch
O Logwatch é um sistema de análise de logs personalizável. O Logwatch analisa os logs do sistema e cria um relatório analisando as áreas que você especificar. O Logwatch é fácil de usar e funcionará imediatamente na maioria dos sistemas.
Abra um terminal e digite o seguinte:
Para visualizar a saída do logwatch, use menos:
Para enviar por e-mail um relatório do watchwatch dos últimos 7 dias para um endereço de e-mail, digite o seguinte e substitua [email protected] pelo e-mail necessário. :
Audite a segurança do seu sistema - Tiger.
O Tiger é uma ferramenta de segurança que pode ser usada como um sistema de auditoria de segurança e detecção de intrusões.
Abra um terminal e digite o seguinte:
Para executar o tigre, digite:
Toda a saída do Tiger pode ser encontrada no diretório / var / log / tiger
Para visualizar os relatórios de segurança do tigre, abra um terminal e digite o seguinte:
Para obter mais ajuda
fonte
magic_quotes_gpc = On
. Magic quotes foi primeiro obsoleto e, em seguida, removido: php.net/manual/en/security.magicquotes.whynot.phpComo você disse que este é um servidor de hospedagem na web ... eu gostaria de compartilhar minhas melhores práticas e experiência de 5 longos anos na linha de hospedagem na web.
Pelas minhas experiências passadas, em vez de entrar no inferno imediatamente de configuração, você deve primeiro reunir as uvas baixas de segurança, conforme indicado no artigo fornecido.
Como você está usando o LAMP, você deve ter muito cuidado com o PHP e suas configurações do php.ini. Este é um bom link para proteger o PHP. O PHP possui super poderes que podem se tornar um loop de segurança quando não configurados corretamente.
Você pode usar um trabalho cron para verificar quando seus arquivos foram modificados sem sua permissão e possivelmente hackeados; usando este trabalho cron . Prefiro o Notepad ++ para comparar os resultados do cron (baixe diretamente o email do cron do seu servidor da web e abra no Notepad ++).
Se você deseja instalar algum SEM, o cPanel é o melhor preferido (no entanto pago). Webmin e zpanel são muito boas alternativas gratuitas. O Webmin é melhor, pelo menos usa certificados autoassinados e adiciona segurança.
Se você quiser que algo funcione imediatamente, você pode optar pelo Turnkey Linux. É baseado no Ubuntu, extremamente fácil de implementar e flexível para suas necessidades. Com muito pouco esforço, você obtém segurança imediata. Esta é a sua pilha LAMP . Eu pessoalmente uso e prefiro isso apenas.
Se você estiver começando do zero, também poderá instalar o ISPconfig3. Instrução Aqui .
você pode testar sua segurança tentando penetrá-la usando o Back-Track-Linux .
mantenha senhas longas e aleatórias complexas . Não os guarde no PC. escreva-os. Use um CD ao vivo para acessar esses logins.
obtenha um software de proteção de força bruta como o fail2ban.
Não execute os daemons que você não precisa.
Bloqueie todas as portas desnecessárias . tenha muito cuidado com a porta SSH (22).
Obtenha um IP estático no sistema através do qual você gerenciará o servidor. Faça a maioria das coisas do bloco IP e permita apenas que seu IP específico acesse esses locais de configuração como a porta 22.
No final do dia ... trabalhe com total tranqüilidade, não se emocione com a instalação e aplicar o bom senso leva muito além.
fonte
brute force attacks
edictionary attacks
... Senha longa aleatória é a única maneira de se proteger de tais ataques.Faça uso do projeto Bastille Linux.
Ele fornece uma ferramenta interativa para executar medidas adicionais de proteção de segurança para aumentar a segurança geral e diminuir a suscetibilidade de comprometimento do sistema Ubuntu (do Bastille Linux ).
Ele oferece uma funcionalidade de avaliação e relatório, para que você possa dizer quais partes do sistema não estão bloqueadas. Ele examina o sistema somente para leitura, relatando o status de cada um de seus itens de proteção. Por exemplo, o Bastille pode verificar se o servidor DNS está bloqueado em uma prisão chroot, se o telnet está desativado ou mesmo se as senhas precisam ter um bom tamanho. Você pode dar uma olhada em uma demonstração apenas na Web disso através deste link (mais informações ).
Você pode ter uma prévia da demonstração da Web (apenas) aqui .
fonte
Use
nmap
em todas as interfaces da máquina, para saber quais serviços você executa na sua máquina. Esta é uma ferramenta essencial para a segurança.Remova todos os serviços que você não precisa nas suas interfaces externas. Você pode configurar o MySQL para escutar apenas em interfaces específicas, como localhost.
Use o ufw para proteger seu serviço SSH (e outros possíveis) para que ele não permita muitas conexões (com falha) por minuto da mesma máquina. Isso tornará os ataques de força bruta mais difíceis. Alterar o número da porta não é tão útil, apenas obscuridade, sem segurança.
Seja restritivo com o número de contas em sua máquina. Também não instale mais pacotes / programas do que você realmente usa. Instale apenas clientes X11, não um servidor X11.
Permita apenas o login ssh na máquina com certificados digitais, sem senha. Isso também tornará os ataques de força bruta difíceis / impossíveis.
fonte
Também consultaria o documento CIS Debian Benchmarks e ele possui um número significativo de procedimentos e processos para proteger o sistema operacional que será aplicado ao Ubuntu, pois é um derivado do Debian. Eu também consultaria:
fonte
A segurança sempre vem com um preço. Estabelecer limites realistas ajudará você a atingir seus objetivos. Eu consideraria os seguintes aspectos:
Verificando todos os links postados aqui, acho que este deve ser adicionado. Ele entra em detalhes não apenas sobre como configurar seu software, mas também sobre o plano de segurança. Como vantagem, todo comando a ser executado é explicado com uma fonte.
Protegendo um servidor Web Ubuntu no Xenial 16.04
fonte
Eu fiz um post sobre isso há pouco tempo sobre como proteger o ubuntu 16.04-18.04. Essas etapas incluem:
Substituir login por senha por chaves autorizadas Instale um firewall no servidor Linux
e um pouco mais https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/
fonte