O processo foi realizado com sucesso, estou utilizando um servidor linux Debian instaldo.
1º Passo – Instalar o tcpdump (Sniffer)
apt-get install tcpdump
2º Passo – Instar o Snort (IDS)
apt-get install snort
3º Passo - vamos configurar a regra de identificação do
Ultra-Surf: Edite o arquivo dns.rules
vi /etc/snort/rules/dns.rules
Agora, adiciona a seguinte regra (lembrando que é tudo numa
única linha):
alert udp $HOME_NET any -> !$HOME_NET 53 (msg: "[OSSEC] Consulta de DNS Externo Possivel Ultrasurf"; content:"|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|"; classtype: policy-violation;threshold:type limit, track by_src, count 1, seconds 5; sid:1000059; rev:2;)
Salve o arquivo, reinicie o serviço:
/etc/init.d/snort stop
/etc/init.d/snort start
4º Passo – Instalar o OSSEC (HIDS)
Acesse o site: http://www.ossec.net/main/downloads, e baixe o arquivo: ossec-hids-1.6.1.tar.gz
ou
wget http://www.ossec.net/files/ossec-hids-1.6.1.tar.gz
Descompacte o arquivo baixado e acesse a pasta onde foi descompactado:
tar xvzf ossec-hids-1.6.1.tar.gz
cd ossec-hids-1.6.1
Agora, execute o instalador do hids:
./install.sh
No caso atual, pretende-se bloquear o Ultra-Surf, então, não vamos configurar os análises dos diversos logs, vamos nos ater apenas aos logs do snort.
Parâmetros da Instalação do OSSEC
Idioma: BR
Tipo de instalação: LOCAL
Envia Email: NÃO
Verificação de Integridade: NÃO
Detecção de rootkits: NÃO
Respostas Automáticas: SIM
Após a conclusão do OSSEC, você receberá a seguinte mensagem:
- Para iniciar o OSSEC HIDS:
/var/ossec/bin/ossec-control start
- Para parar o OSSEC HIDS:
/var/ossec/bin/ossec-control stop
5º Passo – Configurando o OSSEC (HIDS)
Edit o arquivo de configuração do ossec.
vi /var/ossec/etc/ossec.conf
O meu arquivo ficou assim, note que houve algumas modifficações no arquivo original, para adequar as minhas necessidades.
<ossec_config>
<global>
<email_notification>no</email_notification>
</global>
<rules>
<include>rules_config.xml</include>
<include>pam_rules.xml</include>
<include>sshd_rules.xml</include>
<include>telnetd_rules.xml</include>
<include>syslog_rules.xml</include>
<include>arpwatch_rules.xml</include>
<include>symantec-av_rules.xml</include>
<include>symantec-ws_rules.xml</include>
<include>pix_rules.xml</include>
<include>named_rules.xml</include>
<include>smbd_rules.xml</include>
<include>vsftpd_rules.xml</include>
<include>pureftpd_rules.xml</include>
<include>proftpd_rules.xml</include>
<include>ms_ftpd_rules.xml</include>
<include>ftpd_rules.xml</include>
<include>hordeimp_rules.xml</include>
<include>vpopmail_rules.xml</include>
<include>vmpop3d_rules.xml</include>
<include>courier_rules.xml</include> <include>web_rules.xml</include>
<include>apache_rules.xml</include>
<include>mysql_rules.xml</include>
<include>postgresql_rules.xml</include>
<include>ids_rules.xml</include>
<include>squid_rules.xml</include>
<include>firewall_rules.xml</include>
<include>cisco-ios_rules.xml</include>
<include>netscreenfw_rules.xml</include>
<include>sonicwall_rules.xml</include>
<include>postfix_rules.xml</include>
<include>sendmail_rules.xml</include>
<include>imapd_rules.xml</include>
<include>mailscanner_rules.xml</include>
<include>ms-exchange_rules.xml</include>
<include>racoon_rules.xml</include>
<include>vpn_concentrator_rules.xml</include>
<include>spamd_rules.xml</include>
<include>msauth_rules.xml</include>
<include>mcafee_av_rules.xml</include>
<!--<include>policy_rules.xml</include> -->
<include>zeus_rules.xml</include>
<include>solaris_bsm_rules.xml</include>
<include>vmware_rules.xml</include>
<include>ossec_rules.xml</include>
<include>attack_rules.xml</include>
<include>local_rules.xml</include>
</rules>
<global>
<white_list>127.0.0.1</white_list>
<white_list>^localhost.localdomain$</white_list>
<white_list>200.165.132.155</white_list>
<white_list>200.149.55.140</white_list>
</global>
<alerts>
<log_alert_level>1</log_alert_level>
</alerts>
<command>
<name>host-deny</name>
<executable>host-deny.sh</executable>
<expect>srcip</expect>
<timeout_allowed>yes</timeout_allowed>
</command>
<command>
<name>firewall-drop</name>
<executable>firewall-drop.sh</executable>
<expect>srcip</expect>
<timeout_allowed>yes</timeout_allowed>
</command>
<!-- Active Response Config -->
<active-response>
<!-- This response is going to execute the host-deny
- command for every event that fires a rule with- level (severity) >= 6.
- The IP is going to be blocked for 600 seconds.-->
<command>host-deny</command>
<location>local</location>
<level>6</level>
<timeout>60</timeout>
</active-response>
<active-response>
<!-- Firewall Drop response. Block the IP for
- 600 seconds on the firewall (iptables, - ipfilter, etc).-->
<command>firewall-drop</command>
<location>local</location>
<level>6</level>
<timeout>60</timeout>
</active-response>
<!-- Files to monitor (localfiles) -->
<localfile>
<log_format>syslog</log_format><location>/var/log/squid/access.log</location>
</localfile>
<localfile>
<log_format>snort-full</log_format>
<location>/var/log/snort/alert</location>
</localfile>
</ossec_config>OBS: Eu modifiquei basicamente nas tags COMMAND e ACTIVE-RESPONSE
Agora vamos configurar as regras para o ids: Edite o arquivo:
vi /var/ossec/rules/ids_rules.xml
adicione a seguinte regra:
<rule id="1000059" level="10">
<category>ids</category><description>Utilizacao do
UltraSurf.</description>
</rule>
Salve o arquivo e vamos editar as regras de punição para os infratores:
vi /var/ossec/active-response/bin/firewall-drop.sh
Localize as duas linhas abaixo:
ARG1="-I INPUT -s ${IP} -j DROP"
ARG2="-I FORWARD -s ${IP} -j DROP"
E substitua por:
ARG1="-I INPUT -s ${IP} -p tcp --dport 443 -j DROP"
ARG2="-I FORWARD -s ${IP} -p tcp --dport 443 -j DROP"
Localize as duas linhas abaixo:
ARG1="-D INPUT -s ${IP} -j DROP"
ARG2="-D FORWARD -s ${IP} -j DROP"
E substitua por:
ARG1="-D INPUT -s ${IP} -p tcp --dport 443 -j DROP"
ARG2="-D FORWARD -s ${IP} -p tcp --dport 443 -j DROP"
Salve o arquivo, e edite o próximo arquivo de punição:
vi /var/ossec/active-response/bin/host-deny.sh
Localize a linha:
echo "ALL:${IP}" >> /etc/hosts.deny
e Substitua por:
echo "http:${IP}" >> /etc/hosts.deny
Localize a linha:
cat /etc/hosts.deny | grep -v "ALL:${IP}$"> /tmp/hosts.deny.$$
e Substitua por:
cat /etc/hosts.deny | grep -v "http:${IP}$"> /tmp/hosts.deny.$$
Salve o arquivo e inicie o OSSEC
/var/ossec/bin/ossec-control start
OBSERVAÇÔES: Se você fez tudo correto, seu snort e seu ossec estarão trabalhando em conjunto agora, o snort detectará o uso do ultra-surf, e o ossec bloqueará da seguinte forma: criará regras no IPTABLES fechando o acesso ao HTTPS da máquina requisitante, o bloqueio durará 60 segundos, mas lembre-se, o bloqueio será somente HTTPS, o http (web) funcionará normalmente se o usuário desligar o ultra-surf, com isso, você assegurará que o tráfego da máquina cliente não parará sua produção na empresa e ainda deixará o usuário
infrator com uma raiva danada do ultra-surf.
Agradecimentos especiais ao site:
http://listas.cipsga.org.br/pipermail/snort-ids/2008-August/001202.html
pela regra do snort para detectar o uso do ultra surf.
Artur Luís
Tecnólogo em Redes de Computadores