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

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

If you can't read please download the document

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

Hardening no GNU/Linux e servios

BIND

Por Eden [email protected]

Aumentando a segurana do Linux

Use senhas fortes ( !#P@ssw0rd#! no uma senha forte)

Rode o mnimo de servios possveis. Rode apenas o necessrio para realizar a tarefa desejada.

Para descobrir os servios em execuo digite:
netstat -plantu

Finalize os servios usando /etc/init.d ou kill

Desistale-os usando seu gerenciador de pacotes da distribuio ou delete caso tenha sido instalado independentemente.

Aumentando a Segurana cont...

Utilize uma distribuio destinada a grandes implementaes (ubuntu LTS, Centos, Red Hat, Suse Enterprise, Debian, Slackware, Gentoo)

Mantenha essa distribuio sempre atualizada
apt-get update && apt-get upgrade

Dimensione bem seus seguimentos de rede, separando-os fisicamente, usando DMZ e firewalls

No faa quebra galhos. Ex ( J que esse servidorzinho web em nossa LAN est funcionando to bem, vamos torna-lo externo para facilitar o acesso de casa )

Aumentando a Segurana cont2...

No confie cegamente no software, mesmo no linux! (ex: Colocar servios web, dns, smtp, proxy no firewall confiando no iptables e na configurao de cada servio)

No coloque suas aplicaes na internet, e sim uma forma segura de acessar as aplicaes. (ex: No abra sua porta de banco de dados para um DBA remoto, fornea uma conexo ssh )

Aumentando a Segurana cont3...

Evite usar VPN que d acesso em sua rede local. Faa-o somente quando sem alternativas e quando realmente necessrio.

Cuidado com ex-funcionrios!

Utiliza firewall local.

Faa LOG!

Utilize IDS

Utilize IPS (ou no) com (ou sem) cautela

Blindando o Blindado SSH

No arquivo /etc/ssh/sshd_config

No permita que o usurio root faa login

Seja explicito em quais usurios e grupos tm acesso

Use apenas verso 2 do protocolo sshPermitRootLogin no
AllowUsers fulano sicrano beltrano
AllowGroups admin dba suporte
Protocol 2

Squid

Instale-o no seguemento de rede que necessita do servio de proxy.

Utilize http_port ip:porta no squid.conf
ex: http_port 192.168.0.254:3128

Utilize autenticao.

Faa as regras de acordo com as normas da empresa. Quando possvel, evite excees.

iptables

Defina todas as regras padro como DROP

Evite spoof de endereos, informe sempre as interfaces que o trfego 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

Utilize a tarefa LOG do iptables

Adicionando Segurana no Postfix e Dovecot

Introduo

MTA Mail Transfer Agent. Envia mensagens. Implementado pelo SMTP. Neste caso o Postfix.

MDA Mail Delivery Agent. Recebe a mensagem do MTA e entrega no mailbox do usurio. Exemplos, Procmail, maildrop, dovecot lda. (Configurao opcional)

MUA Mail User Agent. Programa cliente de e-mail usado para se conectar em servidores smtp, pop, imap para envio e recebimento de mensagens.

Dicas de segurana

No anuncie a verso do postfix

Preferencialmente no utilize nomes triviais para seus servidores de e-mail. Ex: mail, mx, correio, email.

Use autenticao, criptografia, e restrinja redes que podem usar seu servidor.

Cheque listas negras para impedir spam de entrar no MUA de seus usurios.

Segurana, cont.

No permita que a rede local tenha acesso porta 25 TCP na internet. Evite excees.

Cheque o DNS reverso do smtps que fazem conexo com seu servidor.

Use greylist (lista cinza)

E lembre-se. Seu servidor passar igualmente por todas esses filtros quando tentar entregar mensagens na internet, ento configure-o corretamente.

Configurao

Lembre-se que e-mail e DNS esto interligados.

Configure seu DNS corretamente, fechando o mximo possvel.

Seu servidor smtp precisa ter registros MX, A, PTR no DNS.

Cheque a configurao de sua zona na internet utilizando DNS Reports na internet.

DNS com BIND9

Entenda que DNS local e DNS externo tm propsitos diferentes.

O DNS externo visa responder ao mundo consultas DNS a respeito de sua zona de internet. (ex: linuxfacil.org, especializa.com.br)

O DNS local visa responder sua rede local consultas a respeito de hosts em sua rede local e possvelmente hosts na internet. (ex: lab3-01, lab3-02, www.uol.com.br, www.google.com)

DNS com BIND9 cont...

Por padro o BIND9 j um resolvedor de consultar recursivas, ou seja, ele no tem nenhuma zona sua configurada e vai perguntar aos DNS raiz sobre toda consulta que seu computador fizer (ex: quem www no domnio google.com ?)

interessante ento, que esse servidor fique no mesmo seguimento de rede da LAN. Caso seu proxy tenha recurso disponvel, ali seria um bom local para coloca-lo.

DNS com BIND9 cont2...

Para restringir acesso ao DNS em apenas alguma rede, faa o seguinte:
No arquivo /etc/bind/named.conf.optionsallow-query { endereo };
allow-recursion{ endereo };

A primeira linha define os endereos que poderam consultar o DNS

A segunda define mesma coisa apenas para consultar recursivas

Endereo pode ser um endereo ip de host ou de rede separados por ponto e vrgula.
Ex: allow-transfer { 192.168.2.7; 192.168.22.0/24;};

DNS com bind9 cont3...

Transferncias de zona tambm so perigosas, assim qualquer host pode fazer download do arquivo de zona e saber a informao de nome/ip de toda a rede do qual o DNS conhece.

Na rede local isso no oferece problemas graves porm na internet isso no desejvel.

Um DNS externo, deve, na maioria dos casos, responder consultas apenas sobre sua zona, no responder consultar recursivas nem oferecer sua lista completa de hosts para qualquer um.

DNS com bind9 cont4...

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; };

A primeira linha permite consultas recursivas apenas feitas pelo prprio servidor DNS. A segunda permite a rede local tambm fazer o mesmo. A terceira, desabilita a transferncia de zonas. A quarta libera a transferncia para um DNS slave no IP informado.

DNS com bind9 cont5...

possvel tambm 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.optionsforwarders { 8.8.8.8; 8.8.4.4; };
forward ( first );
forward (only );

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 no obtenha resposta, vai tentar ele mesmo resolver com os servidores raiz. A terceira define para apenas fazer o encaminhamento da consulta e pronto, no tentar mais nada.

Aumentando a segurana do Apache2

Esconder a verso do apache

Habilitar criptografia em certos sites.

Restringir sites a certos IPs

Restringir sites com senhas geradas pelo comando htpasswd

E o mais importante: Instale pelo repositrio o apache / php / mysql e tudo mais que v se integrar ao apache.

Mais importante ainda: A programao dos sites que sero hospedados tambm deve utilizar boas prticas!
Exemplo (ex: De nada adianta a segurana do servidor se o site em php permite SQL Injection, ou se o site programado requer, para funcionar, permisso 777 nos diretrios)

Apache2 cont...

Removendo o anncio de verso do apache e seus mdulos suportados.
No arquivo /etc/apache2/conf.d/security
Trocar para as seguinte opes:
ServerSignature Off
ServerTokens Prod

Apache2 cont...

Para descobrir a verso de um servidor apache, use telnet na porta 80telnet servidor 80
HEAD / HTTP/1.0

Apache2 cont...

Proteja com senha alguns diretrios.htpasswd -c /etc/apache2/.htpasswd fulano

Entre no diretrio onde quer proteger com senha e cria o arquivo .htaccess com o contedo:
AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Site Protegido por senha"
Require valid-user

Caso precise proteger apenas uma pgina
AuthUserFile /full/path/to/.htpasswd
AuthType Basic
AuthName "Pgina Protegida por senha"

Require valid-user

Apache2 cont

Restringindo por endereo de rede
No arquivo de configurao do site:Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16

Ou por IP de hostOrder Deny,Allow
Deny from all
Allow from 127.0.0.1

Apache2 cont...

Adicionar o suporte a https no debian/ubuntu mais fcil do que empurra bebado da ladeira. Pois os arquivos de configurao j esto todos prontos, basta habilitar o mdulo e o site padro:a2enmod ssl
a2ensite default-ssl
/etc/init.d/apache2 reload

Pronto, agora seus usuarios j podem acessar por exemplo, seu webmail, por uma conexo criptografada. Lembrando que o certificado usado o padro do debian / ubuntu, que apresentar aquela mensagem no navegador informando que o certificado no pde ser reconhecido.

Mo na massa!