Boas práticas de segurança básica em Línux e Serviços de Internet

8,686 views
8,438 views

Published on

Slide com boas práticas de segurança em servidores Linux com serviços comuns de internet.

Published in: Technology

Boas práticas de segurança básica em Línux e Serviços de Internet

  1. 1. Hardening no GNU/Linux e serviços BIND Por Eden Caldas [email_address] www.linuxfacil.org
  2. 2. Aumentando a segurança do Linux <ul><li>Use senhas fortes ( !#P@ssw0rd #! não é uma senha forte)
  3. 3. Rode o mínimo de serviços possíveis. Rode apenas o necessário para realizar a tarefa desejada.
  4. 4. Para descobrir os serviços em execução digite: netstat -plantu
  5. 5. Finalize os serviços usando /etc/init.d ou kill
  6. 6. Desistale-os usando seu gerenciador de pacotes da distribuição ou delete caso tenha sido instalado independentemente. </li></ul>
  7. 7. Aumentando a Segurança cont... <ul><li>Utilize uma distribuição destinada a grandes implementações (ubuntu LTS, Centos, Red Hat, Suse Enterprise, Debian, Slackware, Gentoo)
  8. 8. Mantenha essa distribuição sempre atualizada apt-get update && apt-get upgrade
  9. 9. Dimensione bem seus seguimentos de rede, separando-os fisicamente, usando DMZ e firewalls
  10. 10. Não faça quebra galhos. Ex ( “ Já que esse servidorzinho web em nossa LAN está funcionando tão bem, vamos torna-lo externo para facilitar o acesso de casa ” ) </li></ul>
  11. 11. Aumentando a Segurança cont2... <ul><li>Não confie cegamente no software, mesmo no linux! (ex: Colocar serviços web, dns, smtp, proxy no firewall confiando no iptables e na configuração de cada serviço)
  12. 12. Não coloque suas aplicações na internet, e sim uma forma segura de acessar as aplicações. (ex: Não abra sua porta de banco de dados para um DBA remoto, forneça uma conexão ssh ) </li></ul>
  13. 13. Aumentando a Segurança cont3... <ul><li>Evite usar VPN que dá acesso em sua rede local. Faça-o somente quando sem alternativas e quando realmente necessário.
  14. 14. Cuidado com ex-funcionários!
  15. 15. Utiliza firewall local.
  16. 16. Faça LOG!
  17. 17. Utilize IDS
  18. 18. Utilize IPS (ou não) com (ou sem) cautela </li></ul>
  19. 19. Blindando o Blindado SSH <ul><li>No arquivo /etc/ssh/sshd_config
  20. 20. Não permita que o usuário root faça login
  21. 21. Seja explicito em quais usuários e grupos têm acesso
  22. 22. Use apenas versão 2 do protocolo ssh
  23. 23. PermitRootLogin no AllowUsers fulano sicrano beltrano AllowGroups admin dba suporte Protocol 2 </li></ul>
  24. 24. Squid <ul><li>Instale-o no seguemento de rede que necessita do serviço de proxy.
  25. 25. Utilize http_port ip:porta no squid.conf ex: http_port 192.168.0.254:3128
  26. 26. Utilize autenticação.
  27. 27. Faça as regras de acordo com as normas da empresa. Quando possível, evite exceções. </li></ul>
  28. 28. iptables <ul><li>Defina todas as regras padrão como DROP
  29. 29. Evite spoof de endereços, informe sempre as interfaces que o tráfego precisará usar para passar. Ex: iptables -A INPUT -s 192.168.0.0/24 -p tcp –dport 3128 -j ACCEPT Ficaria melhor desta forma iptables -A INPUT -s 192.168.0.0/24 -i eth1 -p tcp –dport 3128 -j ACCEPT
  30. 30. Utilize a tarefa LOG do iptables </li></ul>
  31. 31. Adicionando Segurança no Postfix e Dovecot
  32. 32. Introdução <ul><li>MTA – Mail Transfer Agent. Envia mensagens. Implementado pelo SMTP. Neste caso o Postfix.
  33. 33. MDA – Mail Delivery Agent. Recebe a mensagem do MTA e entrega no mailbox do usuário. Exemplos, Procmail, maildrop, dovecot lda. (Configuração opcional)
  34. 34. MUA – Mail User Agent. Programa cliente de e-mail usado para se conectar em servidores smtp, pop, imap para envio e recebimento de mensagens. </li></ul>
  35. 35. Dicas de segurança <ul><li>Não anuncie a versão do postfix
  36. 36. Preferencialmente não utilize nomes triviais para seus servidores de e-mail. Ex: mail, mx, correio, email.
  37. 37. Use autenticação, criptografia, e restrinja redes que podem usar seu servidor.
  38. 38. Cheque listas negras para impedir spam de entrar no MUA de seus usuários. </li></ul>
  39. 39. Segurança, cont. <ul><li>Não permita que a rede local tenha acesso à porta 25 TCP na internet. Evite exceções.
  40. 40. Cheque o DNS reverso do smtps que fazem conexão com seu servidor.
  41. 41. Use greylist (lista cinza)
  42. 42. E lembre-se. Seu servidor passará igualmente por todas esses filtros quando tentar entregar mensagens na internet, então configure-o corretamente. </li></ul>
  43. 43. Configuração <ul><li>Lembre-se que e-mail e DNS estão interligados.
  44. 44. Configure seu DNS corretamente, fechando o máximo possível.
  45. 45. Seu servidor smtp precisa ter registros MX, A, PTR no DNS.
  46. 46. Cheque a configuração de sua zona na internet utilizando DNS Reports na internet. </li></ul>
  47. 47. DNS com BIND9 <ul><li>Entenda que DNS local e DNS externo têm propósitos diferentes.
  48. 48. O DNS externo visa responder ao mundo consultas DNS a respeito de sua zona de internet. (ex: linuxfacil.org, especializa.com.br)
  49. 49. O DNS local visa responder à sua rede local consultas a respeito de hosts em sua rede local e possívelmente hosts na internet. (ex: lab3-01, lab3-02, www.uol.com.br, www.google.com) </li></ul>
  50. 50. DNS com BIND9 cont... <ul><li>Por padrão o BIND9 já é um resolvedor de consultar recursivas, ou seja, ele não tem nenhuma zona sua configurada e vai perguntar aos DNS raiz sobre toda consulta que seu computador fizer (ex: quem é www no domínio google.com ?)
  51. 51. É interessante então, que esse servidor fique no mesmo seguimento de rede da LAN. Caso seu proxy tenha recurso disponível, ali seria um bom local para coloca-lo. </li></ul>
  52. 52. DNS com BIND9 cont2... <ul><li>Para restringir acesso ao DNS em apenas alguma rede, faça o seguinte: No arquivo /etc/bind/named.conf.options
  53. 53. allow-query { endereço }; allow-recursion{ endereço };
  54. 54. A primeira linha define os endereços que poderam consultar o DNS
  55. 55. A segunda define mesma coisa apenas para consultar recursivas
  56. 56. Endereço pode ser um endereço ip de host ou de rede separados por ponto e vírgula. Ex: allow-transfer { 192.168.2.7; 192.168.22.0/24;}; </li></ul>
  57. 57. DNS com bind9 cont3... <ul><li>Transferências de zona também são perigosas, assim qualquer host pode fazer download do arquivo de zona e saber a informação de nome/ip de toda a rede do qual o DNS conhece.
  58. 58. Na rede local isso não oferece problemas graves porém na internet isso não é desejável.
  59. 59. Um DNS externo, deve, na maioria dos casos, responder consultas apenas sobre sua zona, não responder consultar recursivas nem oferecer sua lista completa de hosts para qualquer um. </li></ul>
  60. 60. DNS com bind9 cont4... <ul><li>No arquivo /etc/bind/named.conf.options allow-recursion { 127.0.0.1; }; allow-recursion { 127.0.0.1; 192.168.0.0/24; }; allow-transfer { none; }; allow-transfer { 172.16.0.33; };
  61. 61. A primeira linha permite consultas recursivas apenas feitas pelo próprio servidor DNS. A segunda permite a rede local também fazer o mesmo. A terceira, desabilita a transferência de zonas. A quarta libera a transferência para um DNS slave no IP informado. </li></ul>
  62. 62. DNS com bind9 cont5... <ul><li>É possível também configurar o DNS para fazer consultas recursivas encaminhando para um outro DNS, evitando assim ter que ir perguntar para um Servidor DNS raiz. No arquivo /etc/bind/named.conf.options
  63. 63. forwarders { 8.8.8.8; 8.8.4.4; }; forward ( first ); forward (only );
  64. 64. A primeira linha informa os IPs dos servidores DNS que seram consultados. A segunda define que nosso servidor DNS vai encaminhar a consulta primeiro, caso não obtenha resposta, vai tentar ele mesmo resolver com os servidores raiz. A terceira define para apenas fazer o encaminhamento da consulta e pronto, não tentar mais nada. </li></ul>
  65. 65. Aumentando a segurança do Apache2 <ul><li>Esconder a versão do apache
  66. 66. Habilitar criptografia em certos sites.
  67. 67. Restringir sites a certos IPs
  68. 68. Restringir sites com senhas geradas pelo comando htpasswd
  69. 69. E o mais importante: Instale pelo repositório o apache / php / mysql e tudo mais que vá se integrar ao apache.
  70. 70. Mais importante ainda: A programação dos sites que serão hospedados também deve utilizar boas práticas! Exemplo (ex: De nada adianta a segurança do servidor se o site em php permite SQL Injection, ou se o site programado requer, para funcionar, permissão 777 nos diretórios) </li></ul>
  71. 71. Apache2 cont... <ul><li>Removendo o anúncio de versão do apache e seus módulos suportados. No arquivo /etc/apache2/conf.d/security Trocar para as seguinte opções: ServerSignature Off ServerTokens Prod </li></ul>
  72. 72. Apache2 cont... <ul><li>Para descobrir a versão de um servidor apache, use telnet na porta 80
  73. 73. telnet servidor 80 HEAD / HTTP/1.0
  74. 74. <enter>
  75. 75. <enter> </li></ul>
  76. 76. Apache2 cont... <ul><li>Proteja com senha alguns diretórios.
  77. 77. htpasswd -c /etc/apache2/.htpasswd fulano
  78. 78. Entre no diretório onde quer proteger com senha e cria o arquivo .htaccess com o conteúdo: AuthUserFile /etc/apache2/.htpasswd AuthType Basic AuthName &quot;Site Protegido por senha&quot; Require valid-user
  79. 79. Caso precise proteger apenas uma página AuthUserFile /full/path/to/.htpasswd AuthType Basic AuthName &quot;Página Protegida por senha&quot; <Files &quot;mypage.html&quot;> Require valid-user </Files> </li></ul>
  80. 80. Apache2 cont <ul><li>Restringindo por endereço de rede No arquivo de configuração do site:
  81. 81. Order Deny,Allow Deny from all Allow from 176.16.0.0/16
  82. 82. Ou por IP de host
  83. 83. Order Deny,Allow Deny from all Allow from 127.0.0.1 </li></ul>
  84. 84. Apache2 cont... <ul><li>Adicionar o suporte a https no debian/ubuntu é mais fácil do que empurra bebado da ladeira. Pois os arquivos de configuração já estão todos prontos, basta habilitar o módulo e o site padrão:
  85. 85. a2enmod ssl a2ensite default-ssl /etc/init.d/apache2 reload
  86. 86. Pronto, agora seus usuarios já podem acessar por exemplo, seu webmail, por uma conexão criptografada. Lembrando que o certificado usado é o padrão do debian / ubuntu, que apresentará aquela mensagem no navegador informando que “o certificado não pôde ser reconhecido”. </li></ul>
  87. 87. Mão na massa!

×