Home >

Melhorando a Segurança de um Servidor WEB (IIS) com IPSEC

11. December 2008

Algumas pessoas me perguntam como melhorar a segurança de um servidor WEB (IIS) publicado na Internet. Infelizmente não existe uma única resposta para essa pergunta, temos sempre de analisar o cenário onde este servidor está inserido ( arquitetura, ambiente, requisitos de negócio e etc).

Gosto sempre melhorar as configurações de segurança de um servidor WEB, publicado na Internet, com políticas de IPSEC.

Vamos considerar o seguinte estudo de caso :  Um servidor WEB - IIS -  publicado diretamente na Internet (em um Data-center ou outro modelo de hospedagem);

 

image

Podemos melhorar a segurança nesse servidor de várias formas, algumas delas são :

É importante considerar que a escolha de uma das opções acima não invalida as demais, ou seja, podemos utiliza-las em conjunto. Por exemplo : IPSEC + Security Configuration Wizard

 

Para esse Estudo de Caso minha proposta é melhorar a segurança com a implementação do IPSEC. Abaixo segue um modelo de script para criação e aplicação de uma Política de IPSEC, este script possui as seguintes configurações :

  • - Retrição de todo o acesso Inbound ao Servidor WEB;
  • - Tráfego HTTP e HTTPS habilitado para Inbound e Outbound;
  • - Tráfego DNS, Outbound, habilitado;
  • - Tráfego FTP e RDP habilitado somente para um IP específico;
  • - Tráfego ICMP (Ping) habilitado para facilitar resoluções de problemas;

############################################################
# Modelo de Script para Restringir o Acesso a um Servidor IIS - Baseado no IPSEC
#
# Execute o script da seguinte forma :
# Passo 1 - Salvar o arquivo com o nome ScriptIPSEC.txt
# Passo 2 - Substituir os campos XXX.XXX.XXX.XXX pelos IPs correspondentes a cada politica

# Passo 3 - no prompt de comando execute  < netsh -f ScriptIPSEC.txt >
#
# Criado por : Rodrigo Immaginario
# 12 de Dexembro de 2008

#
#############################################################

############# Seleciona modo Estatico ############

pushd ipsec static

# Apaga todas as politicas IPSEC existente
delete all

# Registra o armazenamento local
set store location=local

# FILTROS DE ACOES
add filteraction name="Acesso Bloqueado" description="Bloqueia o acesso" action=block
add filteraction name="Acesso Permitido" description="Acesso Permitido o trafego em claro" action=permit

# All - Inbound
add filterlist name="All - Inbound" description="All - Inbound"
add filter filterlist="All - Inbound" srcaddr=any dstaddr=me description="All - Inbound" protocol=any srcport=0 dstport=0 mirrored=YES

# RDP - Inbound
add filterlist name="RDP - Inbound" description="RDP - Inbound"
add filter filterlist="RDP - Inbound" srcaddr=XXX.XXX.XXX.XXX  dstaddr=me description="RDP - Inbound" protocol=TCP srcport=0 dstport=3389 mirrored=YES

# DNS - Oubound
add filterlist name="DNS - Oubound" description="DNS - Oubound"
add filter filterlist="DNS - Oubound" protocol=TCP srcaddr=ME srcport=0 dstaddr=DNS description="DNS - Oubound" dstport=53 mirrored=YES
add filter filterlist="DNS - Oubound" protocol=UDP srcaddr=ME srcport=0 dstaddr=DNS description="DNS - Oubound" dstport=53 mirrored=YES

# WEB - Inbound
add filterlist name="WEB - Inbound" description="WEB - Inbound"
add filter filterlist="WEB - Inbound" srcaddr=any dstaddr=me description="HTTP - Inbound" protocol=TCP srcport=0 dstport=80 mirrored=YES
add filter filterlist="WEB - Inbound" srcaddr=any dstaddr=me description="HTTPS - Inbound" protocol=TCP srcport=0 dstport=443 mirrored=YES

# WEB - Outbound
add filterlist name="WEB - Outbound" description="WEB - Outbound"
add filter filterlist="WEB - Outbound" srcaddr=me dstaddr=any description="HTTP - Outbound" protocol=TCP srcport=0 dstport=80 mirrored=YES
add filter filterlist="WEB - Outbound" srcaddr=me dstaddr=any description="HTTPS - Outbound" protocol=TCP srcport=0 dstport=443 mirrored=YES

# FTP - Inbound
add filterlist name="FTP - Inbound" description="FTP - Inbound"
add filter filterlist="FTP - Inbound" srcaddr=XXX.XXX.XXX.XXX dstaddr=me description="FTP - Inbound" protocol=TCP srcport=0 dstport=20 mirrored=YES
add filter filterlist="FTP - Inbound" srcaddr=XXX.XXX.XXX.XXX dstaddr=me description="FTP - Inbound" protocol=TCP srcport=0 dstport=21 mirrored=YES

# Versão da Politica - Para Documentação da Política
add filterlist name="Versao Politica IPsec 1.00.20081211.1000" description="Define a versao da politica IPsec"
add filter filterlist="Versao Politica IPsec 1.00.20081211.1000" srcaddr=1.1.1.1 dstaddr=1.1.1.2 description="Politica 1.00.20081211.1000" protocol=ICMP
mirrored=YES

# Habilita PING - Para facilitar o Trobleshouting
add filterlist name="Habilita PING 1.00.20081211.1000" description="Habilita PING"
add filter filterlist="Habilita PING 1.00.20081211.1000" srcaddr=any dstaddr=me description="Habilita PING 1.00.20081211.1000" protocol=ICMP
mirrored=YES

# Cria a Politica
add policy name="Hardening Servidor WEB (1.00.20081211.1000)" description="Hardening Servidor WEB" activatedefaultrule=no mmlifetime=60 assign=no pollinginterval=60 mmsecmethods="3DES-SHA1-2 3DES-MD5-2 DES-SHA1-1 DES-MD5-1"

# Adiciona as Regras
add rule name="Regra - Versao Politica" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="Versao Politica IPsec 1.00.20081211.1000" filteraction="Acesso Permitido"
add rule name="Regra - Habilita PING" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="Habilita PING 1.00.20081211.1000" filteraction="Acesso Permitido"
add rule name="Regra - SMTP - Oubound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="SMTP - Outbound" filteraction="Acesso Permitido"
add rule name="Regra - FTP - Inbound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="FTP - Inbound" filteraction="Acesso Permitido"
add rule name="Regra - WEB - Outbound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="WEB - Outbound" filteraction="Acesso Permitido"
add rule name="Regra - WEB - Inbound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="WEB - Inbound" filteraction="Acesso Permitido"
add rule name="Regra - DNS - Oubound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="DNS - Oubound" filteraction="Acesso Permitido"
add rule name="Regra - RDP - Inbound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="RDP - Inbound" filteraction="Acesso Permitido"
add rule name="Regra - All - Inbound" policy="Hardening Servidor WEB (1.00.20081211.1000)" filterlist="All - Inbound" filteraction="Acesso Bloqueado"

# Liga a Politica
# O comando abaixo está comentado.
# T
enha certeza de que as configurações acima estão corretas, considerando seu cenário, para não perder o acesso ao Servidor ( ex. IP da politica de RDP)

## set policy name="Hardening Servidor WEB (1.00.20081211.1000)" assign=YES

popd

exit

 

Completando o nosso cenário podemos devemos considerar também :

  • - Instalação e configuração do URLScan3.1 ;
  • - Garantir que o Servidor esteja atualizado;

 

Está é a opção para melhorarmos um Servidor WEB publicado diretamente na Internet com base em Políticas IPSEC.

 

Abraços,

, , , , , , ,