Prof. Diogo Oliveira

Transcrição

Prof. Diogo Oliveira
Faculdade Senac
Relatório Projeto integrador
SI 5
Introdução
O objetivo do projeto era o de implementar alguns serviços e dividi-los em dois servidores.
Os serviços são HTTP, Banco de Dados, DNS, FTP e Correio Eletrônico.
Assim foi feito, em um primeiro servidor temos o serviço HTTP e banco de dados
funcionando, e em um segundo servidor temos o serviço de e-mail postfix configurado e
funcionando junto ao servidor de FTP.
Para atender à solicitação de duas disciplinas, Segurança de redes e transmissão de dados
e tópicos avançados de SI, além de subir os serviços em perfeito funcionamento, era necessário
implementar algum tipo de hardening em cada um doas serviços, qualquer configuração feita nos
serviços que possam garantir, ou pelo menos reduzir o risco de ter a disponibilidade do nosso
serviço, a autenticidade dos nossos usuários e dados e a integridade das informações que
trafegam pelos nossos servidores, ou são armazenadas nele, portanto este documento se aplica
as duas disciplinas(Segurança de redes e transmissão de dados e tópicos avançados de SI).
A seguir neste documento, uma explicação e descrição de todos métodos escolhidos para
implementar hardening em cada um dos serviços citados acima.
Serviço de Ftp
O Serviço escolhido para implementar o servidor FTP foi o proftpd, um serviço de FTP que foi
projetado do zero, afim de prover maior segurança e desempenho.
Como a maioria dos pacotes que fornecem o serviço de FTP, o proFTPD tem um arquivo de
configuração que não se diferencia muito dos outros, porém eu particularmente achei a
experiência de configuração, usabilidade e implementação de um nível de segurança melhor do
que outros pacotes testados.
Configuração
Seu arquivo de configuração proftpd.conf encontra-se no diretório /etc/proftpd/, é válido
informar que a distribuição utilizada no nosso servidor foi o ubuntu 12.04.
Algumas configurações bastante relevantes para prover os princípios básicos de segurança
de arquivos foram feitas no serviço, visando prover um serviço seguro.
Os usuários que tem permissão para utilizarem nosso serviço de ftp possuem acesso
somente ao seu diretório /home, evitando assim que o usuário tenha acesso às demais pastas que
nas mãos de um usuário mal intencionado pode significar um ataque eminente aos nossos
serviços.
O simples fato de autenticação já garante aos nossos usuários do serviço FTP a
confidencialidade de suas pastas e arquivos guardados no sistema de FTP, ou seja, somente o
usuário que criou a pasta ou colocou os arquivos lá terá acesso aos mesmos.
Uma opção no arquivo de configuração habilita a função chamada chroot, onde quando o
usuário acessa o ftp, ele verá sua pasta /home, como o diretório raiz do sistema.
Essa configuração também nos garante a integridade do nosso servidor e serviços, e a
disponibilidade deles, pois não será possível a um usuário (a não ser que seja um root) visualizar as
pastas e arquivos que estiverem abaixo de sua pasta home.
Foram criados dois tipos de usuários. O primeiro tipo de usuário, possui acesso somente ao ftp, ou
seja, esse primeiro grupo não possui acesso ao shell do servidor, não podem fazer um login ssh por
exemplo. Assim evitamos que usuários que não necessitam acessar o servidor for o serviço de ftp,
tenha brecha para desenvolver ou explorar alguma vulnerabilidade. Para os usuários que precisam
de acesso ao shell, existe o segundo tipo de usuários, os que além de permissão para acessar o ftp,
possuem permissão também para logarem no shell do servidor.
Esse tipo de segregação é importante para evitar acessos indevidos ao servidor, e quanto mais
limitarmos o acesso ao servidor ao necessário, melhor para garantir a integridade de nossos
serviços, e a disponibilidade dos mesmos. Para implementar isso, além das configurações
realizadas no arquivo de configuração do serviço, foram utilizados parâmetros no momento da
criação do usuário, onde apontamos o seu shell para um local inválido. No arquivo de
configuração, apenas autorizamos ao ftp reconhecer e aceitar usuários que não possuam um shell
válido.
Dentro do serviço FTP essas são as configurações mais vitais no que diz respeito a garantir
o tripé básico da Segurança da Informação.
Serviço de e-mail
Para prover o serviço de e-mail foi escolhido o postifix, um software livre desenvolvido
para prestar serviço de correio eletrônico. O software foi escolhido por ser amplamente utilizado,
e porque foi o software estudado durante o quinto período do nosso curso.
Configuração
Não existe muitas configurações a se fazer no serviço no serviço propriamente dito. Para
implementação de hardening no serviço de correio eletrônico, foram utilizados softwares a parte
para garantir um nível de segurança no servidor de e-mail.
Para isso assiciamos o serviço de e-mail ao antivírus clamav e ao analisador de conteúdo
de e-mail Amavis.
Quando o serviço de correio eletrônico recebe uma mensagem, antes de disponiza-la ao
usuário destinatário, ele entrega ao Amavis para que o conteúdo da mensagem seja analisado.
Caso alguma detecção de ameaça seja constatada, o Amavis envia a mensagem para o antivírus
Clamav, este sim, o antivírus, tratará devidamente a mensagem conforme a sua configuração,
lixeira, quarentena etc. Além desses dois softwares, foi utilizado também o Spamassassim, um
software de detecção de spams.
O objetivo dessa integração de softwares, e justamente prover uma camada extra de
segurança a uma das brechas mais famosas de softwares maliciosos os e-mails.
Abaixo é exemplificado todo o processo realizado para implementar o serviço de e-mail
com hardening:
Após instalar o postfix, e configura-lo, realizar os passos a seguir, que incluem download,
instalação e configuração dos softwares que farão todo o trabalho de detecção e tratamento das
mensagens.
Instalando os pacotes
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo
libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop
Configurar amavisd-new
vim /etc/amavis/conf.d/15-content_filter_mode
@bypass_virus_checks_maps = ( \%bypass_virus_checks,
\$bypass_virus_checks_re);
@bypass_spam_checks_maps = ( \%bypass_spam_checks,
\$bypass_spam_checks_re);
\@bypass_virus_checks_acl,
\@bypass_spam_checks_acl,
Adicione o usuário clamav ao grupo amavis
Gpasswd -a clamav amavis
No arquivo /etc/amavis/conf.d/05-node_id
Colocar o domínio do dns na variável myhostname
Reinicie os serviços amavis e clamav-daemon /etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
Configure o arquivo /etc/clamav/freshclam.conf, configurando a linha como indicado abaixo
NotifyClamd /etc/clamav/clamd.conf
Reinicie o freshclam
/etc/init.d/clamav-freshclam restart
Configure o postfix para repassar mensagens que chegam ao amavisd-new
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'
A seguir linhas a serem inseridas no arquivo /etc/postfix/master.cf
Vim /etc/postfix/master.cf
amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
#-o smtpd_bind_address=127.0.0.1
Reinicie o postfix
/etc/init.d/postfix restart
Verifique se o processo master está escutando as portas 25 e 10025, e se o processo
amavisd-new está escutando na porta 10024
netstat -tap
tcp 0 0 localhost.localdo:10024 *:*
LISTEN 6886/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:*
LISTEN 7268/master
tcp6 0 0 *:smtp *:* LISTEN
7268/master
Razor e Pyzor são ferramentas para melhorar o desempenho do spamassassin
apt-get install razor pyzor
Configure o spamassassin para utilizar essas ferramentas
vim /etc/spamassassin/local.cf
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1
use_razor2 1
razor_config /etc/razor/razor-agent.conf
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
Reinicie amavisd-new
/etc/init.d/amavis restart
Verifique os módulos carregados
tail -f /var/log/mail.log
telnet localhost 25
mail from: lucas
rcpt to:
data
conteudo
.
Quit
Para testar antivirus envie e-mail com a seguinte string no corpo da mensagem
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Para testar antispam envie e-mail com a seguinte string no corpo da mensagem
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Colocar swap no hd
dd if=/dev/zero of=/root/swap bs=1024 count=1000000
du -sh /root/swap
mkswap /root/swap
swapon /root/swap
Serviço de DNS
O DNS ( Domain Name System - Sistema de Nomes de Domínios ) é um sistema de
gerenciamento de nomes hierárquico e distribuído visando resolver nomes de domínios em
endereços de rede (IP).
O sistema de distribuição de nomes de domínio foi introduzido em 1984, e com ele, os
nomes de hosts residentes em um banco de dados pode ser distribuído entre servidores múltiplos,
diminuindo assim a carga em qualquer servidor que provê administração no sistema de nomeação
de domínios. Ele baseia-se em nomes hierárquicos e permite a inscrição de vários dados digitados
além do nome do host e seu IP. Em virtude do banco de dados de DNS ser distribuído, seu
tamanho é ilimitado e o desempenho não degrada tanto quando se adiciona mais servidores nele.
Este tipo de servidor usa como porta padrão a 53.
Configuração
Pensando na disponibilidade do servidor e resolução de nome, utilizamos o
redirecionamento de DNS em servidores da web, através de sub domínios com a criação de Alias
(A) com o endereço de IP do servidor.
$TTL
1800 @
IN
SOA
NS1.DIGITALOCEAN.COM.hostmaster.projeto.samuel.si.(
1401402268 ; last update: 2014-05-29 22:24:28 UTC 3600
refresh
900 ; retry
1209600
expire
1800 ; ttl
)
NS
NS1.DIGITALOCEAN.COM.
NS2.DIGITALOCEAN.COM.
NS3.DIGITALOCEAN.COM. @
IN A
192.241.158.14
;
;
IN
NS
NS
Assim dentro de servidores de apontamento de DNS, conseguimos utilizar dessa
configuração para adicionar uma resolução de nome.
Essa foi uma opção escolhida vizando garantir a integridade e disponibilidade de nossos
serviços.
Existem opções de chroot no serviço de DNS. O chroot consiste em um técnica de
enjaulamento do serviço, ou seja, colocar o serviço para funcionar em ambiente totalmente
limitado a uma estrutura de pastas e arquivos criadas em um ambiente enjaulado, de tal forma
que para o serviço esxistam apenas aquele diretório e pastas. Assim sendo um atacante não teria
acesso a pasta raiz do servidor que abriga o serviço de DNS, pois na visão do DNS a raiz seria uma
pasta qualquer criada para ele funcionar.
Serviço WEB
O serviço escolhido para implementação do servidor web, foi o Apache 2.
O servidor Apache (ou Servidor HTTP Apache, em inglês: Apache HTTP Server, ou
simplesmente: Apache) é o mais bem sucedido servidor web livre. Foi criado em 1995 por Rob
McCool, então funcionário do NCSA (National Center for Supercomputing Applications). Desde
então os desenvolvedores vêm trabalhando em melhorias de segurança e desempenho do serviço.
Além de ter sido o software estudado em sala de aula, essa popularidade do servidor e o
constante trabalho em novas versões e melhorias, esse foi o motivo de termos escolhido o apache
2.
Para trabalhar o hardening envolvendo o servidor web, foi implementado uma
autenticação utilizando HTTP, onde o usuário, ao tentar acessar a aplicação web terá que se
autenticar no servidor http, antes mesmo de ter que se autenticar na aplicação. Esse controle de
acesso visa garantir a integridade das informações gravadas na aplicação web, pois assim somente
os usuários autorizados terão acesso às suas informações.
Além disso Evitamos assim que usuários não autorizados tenham acesso aos formulários
da aplicação web e consequentemente, mesmo que limitado, um acesso ao banco de dados,
impedindo, ou dificultando um ataque de sql injection e garantindo a integridade dos dados
guardados em nossos bancos de dados.
Conclusão
Ao fim desse relatório, e do projeto como um todo, ficou claro diversas formas de
implementar camadas extras de segurança aos serviços e servidores, e principalmente a
necessidade de se colocar em prática essas técnicas, sempre a fim de garantir os princípios básicos
da Segurança da informação, a integridade dos dados que os usuários confiam aos nossos serviços,
ou integridade dos próprios serviços e servidores, a disponibilidade de todos os serviços de acordo
com a necessidade e plano de negócio de um possível cliente e a autenticidade das informações e
de quem possui acessa a elas.
É possível minimizar os riscos relacionados a segurança de redes servidores e serviços com
configurações as vezes não muito complexas.

Documentos relacionados

FACULDADE DE TECNOLOGIA SENAC GOIÁS Segurança da

FACULDADE DE TECNOLOGIA SENAC GOIÁS Segurança da -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes

Leia mais

Vinícius Graciano Elias Servidor de E-mail - Postfix/Amavisd

Vinícius Graciano Elias Servidor de E-mail - Postfix/Amavisd acesso remoto. Caso contrário o usuário deverá transferir suas mensagens para sua máquina a fim de lê-las utilizando o seu cliente de e-mail (MUA). A transferência de mensagens recebidas entre o se...

Leia mais