O objetivo deste tutorial é mostrar uma solução de Gateway SMTP Linux integrando 4 Produtos: Postfix, Clamav, Amavis e Spamassassin.
O principal meio para entrada de vírus em uma rede coorporativa é o e-mail. O Spam é outro fator preocupante para qualquer Administrador de Redes. Esse Gateway pode ser implantado
na frente de qualquer Servidor de E-Mail como Lotuso Domino, Exchange, Zimbra e outros. Para aumentarmos ainda mais a segurança , podemos implantar essa solução de Gateway SMTP
em um servidor fora da nossa Infra-Estrutura, evitando assim que Vírus e Spam's consumam a Banda de Internet.
Instalar os programas necessários:
apt-get install postfix
apt-get install spamassassin
apt-get install clamav
apt-get install amavis
No arquivo /etc/postfix/main.cf inserir as seguintes linhas abaixo
# Desabilitando a Entrega Local
mydestination =
local_recipient_maps =
local_transport = error:local mail delivery is disabled
# Habilitando a Origem - Esse é o domínio externo
myorigin = wilson.com.br
# Habilite as Redes Locais, inclusive a placa WAN
mynetworks = 192.168.0.0/24
# HAbilitando de qual dominio a mensagem será roteada
relay_domains = wilson.com.br
# Habilitando o mapeamento de Transporte
transport_maps = hash:/etc/postfix/transport
# Habilitando os usuarios de e-mail
relay_recipient_maps = hash:/etc/postfix/relay_recipients
No arquivo /etc/postfix/master.cf comentar a seguinte linha
# Desabilitar a Entrega Local no arquivo master.cf
#local unix - n n - - local
Agora crie 2 arquivos em /etc/postfix, um com o nome de relay_recipients e outro com transport
relay_recipients
#
# Aqui consta todos os e-mails externos dos seus usuários, se faltar alguns, o postfix não irá rotear as mensagens
wilson@wilson.com OK
Transport
#
# Aqui tem o nome do servidor que irá ser roteada as mensagens
# Domínio IP do servidor
wilson.com.br smtp:192.168.0.77
# Atualizando as COnfigurações
postmap hash:/etc/postfix/transport
postmap hash:/etc/postfix/relay_recipients
/etc/init.d/postfix restart
# Visualizar os Logs das Mensagens que entram
tail -f /var/log/mail.info
Acessar o arquivo /etc/defaults/spamassassin e mude ENABLED=0 para ENABLED=1
Acesse o arquivo /etc/spamassassin/local.cf e descomente as linhas:
rewrite_header Subject *****SPAM*****
report_safe 1
required_score 5
use_bayes 1
bayes_auto_learn 1
Ou entao se preferir, pode acessar o site abaixo que ela gera um arquivo local.cf com as configurações que vc escolher
http://www.yrex.com/spam/spamconfig.php
Reinicie o Serviço SpamAssassin
Ativando o Amavis
Acesse o arquivo /etc/postfix/master.cf e adicione as seguintes linhas no final:
# AMAVISD
#
smtp-amavis unix - - n - 10 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o virtual_mailbox_maps=
-o virtual_alias_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_milters=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
Adicione no arquivo /etc/postfix/main.cf a seguinte linha
content_filter = smtp-amavis:[127.0.0.1]:10024
Restart no PostFix
/etc/init.d/postfix restart
Restart no Amavis
/etc/init.d/amavis restart
quinta-feira, 15 de outubro de 2009
Testando a Eficiência do seu Anti-Virus
Vamos criar um arquivo que simula um vírus. Assim podemos testar se nosso anti-vírus está funcionando corretamente.
No bloco de notas, copie o seguinte código
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Salve o arquivo com o nome de virus.com
Agora é só mandar por e-mail, rodar scan..etc
No bloco de notas, copie o seguinte código
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Salve o arquivo com o nome de virus.com
Agora é só mandar por e-mail, rodar scan..etc
terça-feira, 13 de outubro de 2009
Gateway HTTP com Squid + ClamAv + HAVP + SquidGuard
HAVP é um proxy Anti-Vírus para Linux. A função principal dele é scannear todo tráfego HTTP que passa por ele. Ele previne que seja feito download de arquivos infectados, abertura de página com scripts maliciosos dentre outros.
O SquidGuard são listas de sites divididas por temas. Com isso podemos efetuar o bloqueio atráves da classificação do tema dos sites.
Nesse tutorial, integramos o HAVP com o Squid. Para completar , colocamos o SquidGuard para reforçar ainda mais a segurança do nosso Servidor.
1. Instalar o Squid
2. Instalar o Clamav
apt-get install clamav clamav-base clamav-freshclam
3. Instalar o HAVP
Inserir o seguinte repositório no Sources.list
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Adquiri a Chave GPG com esse comando
wget -q http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add -
Instalação
apt-get install havp
4 Editar o arquivo /etc/havp/havp.config
# Acesso para acesso ao Proxy
USER havp
GROUP havp
# Faz o Log de Virus Encotnrados
LOG_OKS true
# Porta que o HAVP escuta
PORT 8080
# Default
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/br
# Ativa o Engine do ClamAv para o filtro HTTP
ENABLECLAMLIB true
ENABLECLAMD false
5. No arquivo /etc/squid/squid.conf colocar as linhas antes das ACL
cache_peer localhost parent 8080 0 no-query no-digest no-netdb-exchange default
# A linha dá erros em alguns squid's
cache_peer_access localhost allow all
acl HTTP proto HTTP
never_direct allow HTTP
6 . Reinicie o Squid e o HAVP
/etc/init.d/squid restart
/etc/init.d/havp restart
7. Programe a Atualizacao do clamAV
Para saber onde está o clamAV
which freshclam
No webmin, selecionar Tarefas Agendadas. Colocar o seguinte comando para ser executado
/usr/bin/freshclam
Para Testar se o Gateway esta filtrando os virus, acessar o link
http://www.eicar.org/download/eicar_com.zip
Instalação e Configuração do SquidGuard
1 Instalacao do Squid Guard
apt-get install squidguard
2. Baixar as BlackLists
wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz
wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
3 Copia as Blacklists para o diretorio /var/lib/squidguard/db/
cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/
cd /var/lib/squidguard/db/
4 Descompactar as blacklists
tar -zxvf blacklists.tgz
tar -zxvf shallalist.tar.gz
5 Modelo do Arquivo /etc/squid/squidGuard.conf
# /etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
acl {
default {
pass !porn !proxy all
redirect http://wilson-betaserver.blogspot.com.br
}
}
6. Converte as lista para uso
squidGuard -C all
7. Atribue as permissoes
chown -R proxy:proxy /var/lib/squidguard/db/*
find /var/lib/squidguard/db -type f | xargs chmod 644
find /var/lib/squidguard/db -type d | xargs chmod 755
8 Inserir essa linha antes das ACL
redirect_program /usr/bin/squidGuard
9. Reiniciar Squid
/etc/init.d/squid restart
10. Confirmacao se esta funcionando
tail /var/log/squid/squidGuard.log
Se aparecer essas linhas esta ok
2008-06-14 09:16:02 [4521] squidGuard 1.2.0 started (1208175362.060)
2008-06-14 09:16:02 [4521] squidGuard ready for requests (1208175362.105)
O SquidGuard são listas de sites divididas por temas. Com isso podemos efetuar o bloqueio atráves da classificação do tema dos sites.
Nesse tutorial, integramos o HAVP com o Squid. Para completar , colocamos o SquidGuard para reforçar ainda mais a segurança do nosso Servidor.
1. Instalar o Squid
2. Instalar o Clamav
apt-get install clamav clamav-base clamav-freshclam
3. Instalar o HAVP
Inserir o seguinte repositório no Sources.list
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Adquiri a Chave GPG com esse comando
wget -q http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add -
Instalação
apt-get install havp
4 Editar o arquivo /etc/havp/havp.config
# Acesso para acesso ao Proxy
USER havp
GROUP havp
# Faz o Log de Virus Encotnrados
LOG_OKS true
# Porta que o HAVP escuta
PORT 8080
# Default
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/br
# Ativa o Engine do ClamAv para o filtro HTTP
ENABLECLAMLIB true
ENABLECLAMD false
5. No arquivo /etc/squid/squid.conf colocar as linhas antes das ACL
cache_peer localhost parent 8080 0 no-query no-digest no-netdb-exchange default
# A linha dá erros em alguns squid's
cache_peer_access localhost allow all
acl HTTP proto HTTP
never_direct allow HTTP
6 . Reinicie o Squid e o HAVP
/etc/init.d/squid restart
/etc/init.d/havp restart
7. Programe a Atualizacao do clamAV
Para saber onde está o clamAV
which freshclam
No webmin, selecionar Tarefas Agendadas. Colocar o seguinte comando para ser executado
/usr/bin/freshclam
Para Testar se o Gateway esta filtrando os virus, acessar o link
http://www.eicar.org/download/eicar_com.zip
Instalação e Configuração do SquidGuard
1 Instalacao do Squid Guard
apt-get install squidguard
2. Baixar as BlackLists
wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz
wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
3 Copia as Blacklists para o diretorio /var/lib/squidguard/db/
cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/
cd /var/lib/squidguard/db/
4 Descompactar as blacklists
tar -zxvf blacklists.tgz
tar -zxvf shallalist.tar.gz
5 Modelo do Arquivo /etc/squid/squidGuard.conf
# /etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
acl {
default {
pass !porn !proxy all
redirect http://wilson-betaserver.blogspot.com.br
}
}
6. Converte as lista para uso
squidGuard -C all
7. Atribue as permissoes
chown -R proxy:proxy /var/lib/squidguard/db/*
find /var/lib/squidguard/db -type f | xargs chmod 644
find /var/lib/squidguard/db -type d | xargs chmod 755
8 Inserir essa linha antes das ACL
redirect_program /usr/bin/squidGuard
9. Reiniciar Squid
/etc/init.d/squid restart
10. Confirmacao se esta funcionando
tail /var/log/squid/squidGuard.log
Se aparecer essas linhas esta ok
2008-06-14 09:16:02 [4521] squidGuard 1.2.0 started (1208175362.060)
2008-06-14 09:16:02 [4521] squidGuard ready for requests (1208175362.105)
Marcadores:
instalação squidguard HAVP Gateway HTTP
Regras de Segurança IPTABLES
# Protege contra os "Ping of Death"
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT
# Protege contra os ataques do tipo "Syn-flood, DoS, etc"
$IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os
relatados ...
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Logar os pacotes mortos por inatividade ...
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
# Protege contra port scanners avançados (Ex.: nmap)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT
# Protege contra pacotes que podem procurar e obter informações da
rede interna ...
$IPTABLES -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
# Protege contra todos os pacotes danificados e ou suspeitos ...
$IPTABLES -A FORWARD -m unclean -j DROP
# Bloqueando tracertroute
$IPTABLES -A INPUT -p udp -s 0/0 -i $ENT --dport 33435:33525 -j DROP
# Protecoes contra ataques
$IPTABLES -A INPUT -m state --state INVALID -j DROP
# Performance - Setando acesso a web com delay minimo
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 53 -j TOS
--set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 80 -j TOS
--set-tos Minimize-Delay
# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -j REJECT
# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
$IPTABLES -A INPUT -i $ENT -p tcp --syn -j DROP
# Mesmo assim fechar todas as portas abaixo de 32000
$IPTABLES -A INPUT -i $ENT -p tcp --dport :32000 -j DROP
# Responde pacotes icmp especificados e rejeita o restante
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type host-unreachable -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp -j REJECT --reject-with
icmp-host-unreachable
# Rejeita o Kazaa (não testado ainda)
#$IPTABLES -A FORWARD -p tcp -m string --string X-Kazaa-Username: -j
REJECT --reject-with tcp-reset
# libera acesso interno da rede
$IPTABLES -A INPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A FORWARD -p tcp --syn -s $REDEINT -j ACCEPT
# libera o loopback
$IPTABLES -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
# libera conexoes de fora pra dentro
$IPTABLES -A INPUT -p tcp --destination-port 80 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 443 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 20 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 21 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 22 -j ACCEPT
#libera conexoes de dentro pra fora:
$IPTABLES -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 86 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 5190 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 443 -j ACCEPT
# libera o bittorrent - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$IPTABLES -A INPUT -p tcp --destination-port 1214 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp --dport 1214 -j DNAT
--to-dest X.X.X.X
#$IPTABLES -A FORWARD -p tcp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp --dport 1214 -j DNAT
--to-dest X.X.X.X
#$IPTABLES -A FORWARD -p udp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
# faz o icq receber arquivos - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$IPTABLES -A INPUT -p tcp --destination-port 2000:3000 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp --dport 2000:3000 -j
DNAT --to-dest X.X.X.X
#$IPTABLES -A FORWARD -p tcp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp --dport 2000:3000 -j
DNAT --to-dest X.X.X.X
#$IPTABLES -A FORWARD -p udp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
# compartilha a web na rede interna
$IPTABLES -t nat -A POSTROUTING -s $REDEINT -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# bloqueia o resto
$IPTABLES -A INPUT -p tcp --syn -j DROP
$IPTABLES -A OUTPUT -p tcp --syn -j DROP
$IPTABLES -A FORWARD -p tcp --syn -j DROP
# bloqueia ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit
1/s -j ACCEPT
# Protege contra os ataques do tipo "Syn-flood, DoS, etc"
$IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
# Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os
relatados ...
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Logar os pacotes mortos por inatividade ...
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
# Protege contra port scanners avançados (Ex.: nmap)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT
# Protege contra pacotes que podem procurar e obter informações da
rede interna ...
$IPTABLES -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
# Protege contra todos os pacotes danificados e ou suspeitos ...
$IPTABLES -A FORWARD -m unclean -j DROP
# Bloqueando tracertroute
$IPTABLES -A INPUT -p udp -s 0/0 -i $ENT --dport 33435:33525 -j DROP
# Protecoes contra ataques
$IPTABLES -A INPUT -m state --state INVALID -j DROP
# Performance - Setando acesso a web com delay minimo
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 53 -j TOS
--set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $ENT -p tcp --dport 80 -j TOS
--set-tos Minimize-Delay
# Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -s $IPDNSPROVEDOR -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p udp -j REJECT
# Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
$IPTABLES -A INPUT -i $ENT -p tcp --syn -j DROP
# Mesmo assim fechar todas as portas abaixo de 32000
$IPTABLES -A INPUT -i $ENT -p tcp --dport :32000 -j DROP
# Responde pacotes icmp especificados e rejeita o restante
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type host-unreachable -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp --icmp-type source-quench -j ACCEPT
$IPTABLES -A INPUT -i $ENT -p icmp -j REJECT --reject-with
icmp-host-unreachable
# Rejeita o Kazaa (não testado ainda)
#$IPTABLES -A FORWARD -p tcp -m string --string X-Kazaa-Username: -j
REJECT --reject-with tcp-reset
# libera acesso interno da rede
$IPTABLES -A INPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --syn -s $REDEINT -j ACCEPT
$IPTABLES -A FORWARD -p tcp --syn -s $REDEINT -j ACCEPT
# libera o loopback
$IPTABLES -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
# libera conexoes de fora pra dentro
$IPTABLES -A INPUT -p tcp --destination-port 80 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 443 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 20 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 21 -j ACCEPT
#$IPTABLES -A INPUT -p tcp --destination-port 22 -j ACCEPT
#libera conexoes de dentro pra fora:
$IPTABLES -A OUTPUT -p tcp --destination-port 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 3306 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 20 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 21 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 86 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 5190 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --destination-port 443 -j ACCEPT
# libera o bittorrent - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$IPTABLES -A INPUT -p tcp --destination-port 1214 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp --dport 1214 -j DNAT
--to-dest X.X.X.X
#$IPTABLES -A FORWARD -p tcp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp --dport 1214 -j DNAT
--to-dest X.X.X.X
#$IPTABLES -A FORWARD -p udp -i ppp0 --dport 1214 -d X.X.X.X -j ACCEPT
# faz o icq receber arquivos - (não testado)
# troque o X.X.X.X pelo IP da máquina correspondente
#$IPTABLES -A INPUT -p tcp --destination-port 2000:3000 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p tcp --dport 2000:3000 -j
DNAT --to-dest X.X.X.X
#$IPTABLES -A FORWARD -p tcp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i ppp0 -p udp --dport 2000:3000 -j
DNAT --to-dest X.X.X.X
#$IPTABLES -A FORWARD -p udp -i ppp0 --dport 2000:3000 -d X.X.X.X -j ACCEPT
# compartilha a web na rede interna
$IPTABLES -t nat -A POSTROUTING -s $REDEINT -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# bloqueia o resto
$IPTABLES -A INPUT -p tcp --syn -j DROP
$IPTABLES -A OUTPUT -p tcp --syn -j DROP
$IPTABLES -A FORWARD -p tcp --syn -j DROP
# bloqueia ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
segunda-feira, 12 de outubro de 2009
iptables - script básico
# Generated by iptables-save v1.4.2 on Mon Oct 12 13:47:41 2009
*mangle
:PREROUTING ACCEPT [24987:9959134]
:INPUT ACCEPT [14010:2346272]
:FORWARD ACCEPT [10973:7611900]
:OUTPUT ACCEPT [13936:935526]
:POSTROUTING ACCEPT [24913:8548388]
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
# Generated by iptables-save v1.4.2 on Mon Oct 12 13:47:41 2009
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:scanner - [0:0]
#
# Dropa pacotes TCP indesejáveis
#
-A FORWARD -p tcp -m state --state NEW -j LOG ! --syn --log-level 6 --log-prefix "FIREWALL: NEW sem syn: "
-A FORWARD -p tcp -m state --state NEW -j DROP ! --syn
#
# Proteção contra ping da morte
#
-A FORWARD -p icmp -m limit --icmp-type echo-request --limit 1/s -j ACCEPT
#
# Proteção contra ataque de loop-back
-A INPUT -m state --state INVALID -j DROP
#
# Protecao contra Ataque de Port Scanner
#
-A INPUT -p tcp -m tcp -i eth1 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK,FIN,RST,URG,PSH -j scanner
-A scanner -m limit --limit 15/minute -j LOG
-A scanner -j DROP
#
# Permite Sites
#
-A INPUT -p tcp -m tcp -i eth1 --dport 8001 -j ACCEPT
#
# Permite Webmin
#
-A INPUT -p tcp -m tcp -i eth1 --dport 10000 -j ACCEPT
#
# Permite SSH
#
-A INPUT -p tcp -m tcp -i eth1 --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth1 -j DROP
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
# Generated by iptables-save v1.4.2 on Mon Oct 12 13:47:41 2009
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE
#
# DNAT para Sites
#
-A PREROUTING -p tcp -m tcp -i eth1 --dport 8001 -j DNAT --to-destination 192.168.0.77
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
Colocar essas seguintes linhas no rc.local
#
# Desativa o ping broadcasts
#
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#
# Desativa o recurso Source Route
#
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
#
# Previne Ataques de Syn Cookies
#
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
# Previne que o Firewall Responda Flags provindos da mesma interfaces
#
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
#
#
*mangle
:PREROUTING ACCEPT [24987:9959134]
:INPUT ACCEPT [14010:2346272]
:FORWARD ACCEPT [10973:7611900]
:OUTPUT ACCEPT [13936:935526]
:POSTROUTING ACCEPT [24913:8548388]
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
# Generated by iptables-save v1.4.2 on Mon Oct 12 13:47:41 2009
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:scanner - [0:0]
#
# Dropa pacotes TCP indesejáveis
#
-A FORWARD -p tcp -m state --state NEW -j LOG ! --syn --log-level 6 --log-prefix "FIREWALL: NEW sem syn: "
-A FORWARD -p tcp -m state --state NEW -j DROP ! --syn
#
# Proteção contra ping da morte
#
-A FORWARD -p icmp -m limit --icmp-type echo-request --limit 1/s -j ACCEPT
#
# Proteção contra ataque de loop-back
-A INPUT -m state --state INVALID -j DROP
#
# Protecao contra Ataque de Port Scanner
#
-A INPUT -p tcp -m tcp -i eth1 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK,FIN,RST,URG,PSH -j scanner
-A scanner -m limit --limit 15/minute -j LOG
-A scanner -j DROP
#
# Permite Sites
#
-A INPUT -p tcp -m tcp -i eth1 --dport 8001 -j ACCEPT
#
# Permite Webmin
#
-A INPUT -p tcp -m tcp -i eth1 --dport 10000 -j ACCEPT
#
# Permite SSH
#
-A INPUT -p tcp -m tcp -i eth1 --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth1 -j DROP
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
# Generated by iptables-save v1.4.2 on Mon Oct 12 13:47:41 2009
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE
#
# DNAT para Sites
#
-A PREROUTING -p tcp -m tcp -i eth1 --dport 8001 -j DNAT --to-destination 192.168.0.77
COMMIT
# Completed on Mon Oct 12 13:47:41 2009
Colocar essas seguintes linhas no rc.local
#
# Desativa o ping broadcasts
#
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#
# Desativa o recurso Source Route
#
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
#
# Previne Ataques de Syn Cookies
#
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
# Previne que o Firewall Responda Flags provindos da mesma interfaces
#
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
#
#
Modelo Básico - squid.conf
http_port 3128
visible_hostname srvlxabreu02
cache_access_log /var/log/squid/access.log
# Configuracoes do Cache
cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 KB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
# Autenticacao
auth_param basic program /usr/lib/squid/msnt_auth
auth_param basic children 5
auth_param basic realm Controle de Acesso a Internet
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_Ports port 80 443
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# ACL
acl redelocal src 192.168.0.0/255.255.255.0
acl usuarios_liberados proxy_auth "/etc/squid/usuarios_liberados"
acl sites_bloqueados url_regex -i "/etc/squid/sites_bloqueados"
acl sites_liberados url_regex -i "/etc/squid/sites_liberados"
http_access allow localhost
http_access deny sites_bloqueados
http_access allow sites_liberados
http_access allow usuarios_liberados
http_access deny all
visible_hostname srvlxabreu02
cache_access_log /var/log/squid/access.log
# Configuracoes do Cache
cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 KB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
# Autenticacao
auth_param basic program /usr/lib/squid/msnt_auth
auth_param basic children 5
auth_param basic realm Controle de Acesso a Internet
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_Ports port 80 443
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# ACL
acl redelocal src 192.168.0.0/255.255.255.0
acl usuarios_liberados proxy_auth "/etc/squid/usuarios_liberados"
acl sites_bloqueados url_regex -i "/etc/squid/sites_bloqueados"
acl sites_liberados url_regex -i "/etc/squid/sites_liberados"
http_access allow localhost
http_access deny sites_bloqueados
http_access allow sites_liberados
http_access allow usuarios_liberados
http_access deny all
Instalacao e Configuração do SquidGuard
Instalação e Configuração do SquidGuard
1 Instalacao do Squid Guard
apt-get install squidguard
2. Baixar as BlackLists
wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz
wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
3 Copia as Blacklists para o diretorio /var/lib/squidguard/db/
cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/
cd /var/lib/squidguard/db/
4 Descompactar as blacklists
tar -zxvf blacklists.tgz
tar -zxvf shallalist.tar.gz
5 Modelo do Arquivo /etc/squid/squidGuard.conf
# /etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
acl {
default {
pass !porn !proxy all
redirect http://wilson-betaserver.blogspot.com.br
}
}
6. Converte as lista para uso
squidGuard -C all
7. Atribue as permissoes
chown -R proxy:proxy /var/lib/squidguard/db/*
find /var/lib/squidguard/db -type f | xargs chmod 644
find /var/lib/squidguard/db -type d | xargs chmod 755
8 Inserir essa linha antes das ACL
redirect_program /usr/bin/squidGuard
9. Reiniciar Squid
/etc/init.d/squid restart
10. Confirmacao se esta funcionando
tail /var/log/squid/squidGuard.log
Se aparecer essas linhas esta ok
2008-06-14 09:16:02 [4521] squidGuard 1.2.0 started (1208175362.060)
2008-06-14 09:16:02 [4521] squidGuard ready for requests (1208175362.105)
11. Fim
1 Instalacao do Squid Guard
apt-get install squidguard
2. Baixar as BlackLists
wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz
wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
3 Copia as Blacklists para o diretorio /var/lib/squidguard/db/
cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/
cd /var/lib/squidguard/db/
4 Descompactar as blacklists
tar -zxvf blacklists.tgz
tar -zxvf shallalist.tar.gz
5 Modelo do Arquivo /etc/squid/squidGuard.conf
# /etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
acl {
default {
pass !porn !proxy all
redirect http://wilson-betaserver.blogspot.com.br
}
}
6. Converte as lista para uso
squidGuard -C all
7. Atribue as permissoes
chown -R proxy:proxy /var/lib/squidguard/db/*
find /var/lib/squidguard/db -type f | xargs chmod 644
find /var/lib/squidguard/db -type d | xargs chmod 755
8 Inserir essa linha antes das ACL
redirect_program /usr/bin/squidGuard
9. Reiniciar Squid
/etc/init.d/squid restart
10. Confirmacao se esta funcionando
tail /var/log/squid/squidGuard.log
Se aparecer essas linhas esta ok
2008-06-14 09:16:02 [4521] squidGuard 1.2.0 started (1208175362.060)
2008-06-14 09:16:02 [4521] squidGuard ready for requests (1208175362.105)
11. Fim
Linux - Dois Ip's na mesma placa de Rede
Basta inserirmos no arquivo rc.local a seguinte linha
ifconfig ethx:0 192.168.0.1
ifconfig ethx:0 192.168.0.1
Utilizando o Hping
O hping é um programa que server para fazer o mapeamento de uma rede, verificando quais hosts estão disponíveis atrás do firewall.
Segue abaixo os comandos mais comuns:
hping -p --syn -f -r
onde
--syn manda um pacote com o flag syn ligado. Ideal para mapear firewall com filtro de pacotes
-f pacotes fragmentados
-r Mostra o numero de IPID. Serve para verificar se o host mapeado tem muitos conexoes no momento.
Segue abaixo os comandos mais comuns:
hping
onde
--syn manda um pacote com o flag syn ligado. Ideal para mapear firewall com filtro de pacotes
-f pacotes fragmentados
-r Mostra o numero de IPID. Serve para verificar se o host mapeado tem muitos conexoes no momento.
sábado, 10 de outubro de 2009
Instalação e Configuração de um Controlador de Domínio Linux - PDC Samba
1. Instalar o Samba
apt-get install samba apt-get install smbclient
2. Criar usuarios no Webmin
3. Criar os Grupos
4. Inserir os Usuarios nos Grupos criados.
5. No Webmin, sincronizar os usuarios
6. No Webmin, resetar a senha dos usuarios no console do Samba
7. Usar esse arquivo como modelo
Conceder Permissoes as Pastas Compartilhadas:
chgrp g_rh /arquivos/rh
chmod 775 /arquivos/rh
Criando contas das Estacoes do Dominio:
useradd -d /dev/null -s /bin/false estacao01$passwd -l estacao01$smbpasswd -a -m estacao01
Criar o Arquivo netlogon.bat em /var/samba/netlogon
Criar uma pasta profiles em /var com as seguintes permissões:
chmod 1777 /var/profiles
Modelo de Configuracao do Samba que está funcionando em ambiente de produção
# Samba config file created using SWAT
# from UNKNOWN ()
# Date: 2009/09/12 14:14:38
[global]
netbios name = srvdebian02
workgroup = wilson.local
server string = Servidor PDC
domain master = yes
domain logons = yes
logon script = netlogon.bat
logon home = \\%L\%U.profiles
logon path = \\%L\profiles\%U
security = user
encrypt passwords = yes
enable privileges = yes
passdb backend = tdbsam
preferred master = yes
local master = yes
os level = 100
wins support = yes
printing = cups
load printers = yes
enable privileges = yes
[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[netlogon]
browseable = no
path = /etc/netlogon
read only = yes
[profiles]
path = /var/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700
[RH]
writeable = yes
path = /arquivos/rh
write list = @g_rh
force group = g_rh
valid users = @g_rh
create mode = 775
directory mode = 775
[Producao]
writeable = yes
path = /arquivos/producao
write list = @g_producao
force group = g_producao
valid users = @g_producao
create mode = 775
directory mode = 775
[Engenharia]
writeable = yes
path = /arquivos/engenharia
write list = @g_engenharia
force group = g_engenharia
valid users = @g_engenharia
create mode = 775
directory mode = 775
apt-get install samba apt-get install smbclient
2. Criar usuarios no Webmin
3. Criar os Grupos
4. Inserir os Usuarios nos Grupos criados.
5. No Webmin, sincronizar os usuarios
6. No Webmin, resetar a senha dos usuarios no console do Samba
7. Usar esse arquivo como modelo
Conceder Permissoes as Pastas Compartilhadas:
chgrp g_rh /arquivos/rh
chmod 775 /arquivos/rh
Criando contas das Estacoes do Dominio:
useradd -d /dev/null -s /bin/false estacao01$passwd -l estacao01$smbpasswd -a -m estacao01
Criar o Arquivo netlogon.bat em /var/samba/netlogon
Criar uma pasta profiles em /var com as seguintes permissões:
chmod 1777 /var/profiles
Modelo de Configuracao do Samba que está funcionando em ambiente de produção
# Samba config file created using SWAT
# from UNKNOWN ()
# Date: 2009/09/12 14:14:38
[global]
netbios name = srvdebian02
workgroup = wilson.local
server string = Servidor PDC
domain master = yes
domain logons = yes
logon script = netlogon.bat
logon home = \\%L\%U.profiles
logon path = \\%L\profiles\%U
security = user
encrypt passwords = yes
enable privileges = yes
passdb backend = tdbsam
preferred master = yes
local master = yes
os level = 100
wins support = yes
printing = cups
load printers = yes
enable privileges = yes
[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[netlogon]
browseable = no
path = /etc/netlogon
read only = yes
[profiles]
path = /var/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700
[RH]
writeable = yes
path = /arquivos/rh
write list = @g_rh
force group = g_rh
valid users = @g_rh
create mode = 775
directory mode = 775
[Producao]
writeable = yes
path = /arquivos/producao
write list = @g_producao
force group = g_producao
valid users = @g_producao
create mode = 775
directory mode = 775
[Engenharia]
writeable = yes
path = /arquivos/engenharia
write list = @g_engenharia
force group = g_engenharia
valid users = @g_engenharia
create mode = 775
directory mode = 775
Assinar:
Postagens (Atom)