Re: Firewall
Olá!!
Se me permite a sugestão, eu só faria uma mudança:
Trabalharia com variáveis para tornar mais fácil a posterior
manutenção do seu script
EX: Digamos que por algum motivo vc tenha que mudar a sua rede de 10.X
pra 192.X. No seu script atual, vc vai ter que sair editando tudo na
mão pra corrigir isso. Eu recomendo que vc crie uma variavel qualquer
(eu uso $REDE por exemplo) e coloque o valor que represanta a sua rede
e faça o mesmo com as placas de rede. Suponhamos que a sua placa de
rede de conexão com a rede interna seja a eth0 e a da internet seja a
eth1, eu faria assim:
ETH_INT="eth0"
ETH_EXT="eth1"
REDE="192.168.21.0/24"
E substituiria todos os locais onde há os eth0 por $ETH_INT, eth1 por
$ETH_EXT e o ip da sua rede por $REDE, assim, qualquer mudança, é só
ir nas variáveis e rodar o Script novamente.
Outra coisa que eu coloco nos meus scripts de firewall (mais por mania
do que outra coisa... ;-) é uma limpesa das regras antes de fazer
qualquer coisa, antes mesmo de definir as variáveis:
iptrables -F
iptrables -X
iptrables -t nat -F
iptrables -t nat -X
iptrables -t mangle -F
iptrables -t mangle -X
Assim, se vc for rodar o script novamente depois de uma alteração, vc
tem certeza de que as regras estão todas zeradas!
Mas é isso aí!! Ficou muito bom!!
Abraços!!
2006/3/21, Eder Gobbi <edergobbi@gmail.com>:
> Em Ter, 2006-03-21 às 06:20 -0300, Pedro Pardini escreveu:
> > Bom dia, Eder.
> > Quanto ao WTS, me parece que existe ainda algo mais a ser feito... Me
> > parece que a liberação é algo simples, necessitando porém, se certificar
> > de que a segurança esteja garantida no resto do script.
> > Quanto ao "verbose", não sei se entendí corretamente o que está
> > acontecendo, mas me parece que vc está usando um teminal para ativar
> > estes serviços e depois está tentando utilizar o mesmo terminal para
> > trabalhar... Caso não seja isto o que está acontecendo, desconsidere a
> > mensagem.
> >
> > Bem, se for este o caso, na verdade, o que vc precisa fazer é
> > transformar tudo isto em um script a ser ativado na inicialização do
> > servidor, ou a qualquer momento, em que vc o solicite.
> > Insira uma linha com "#!/bin/bash" (sem as aspas) no início do script, e
> > dê permissão de execução ao mesmo (chmod a+x seu_script.sh).
> > se quiser ativá-lo agora pelo
> >
> > Em Ter, 2006-03-21 às 09:07 -0300, Eder Gobbi escreveu:
> > > Bom dia lista
> > >
> > > Seguindo sugestão do pessoal aqui da lista, estudei o guia foca, mais
> > > especificamente a sessão iptables. Usei o script exemplo do Gleydson
> > > para aplicar as regras ao meu gateway. Segue:
> > >
> > > ##### Carregando módulos necessários #####
> > > modprobe iptable_nat
> > > modprobe ip_nat_ftp
> > > modprobe ip_conntrack_ftp
> > >
> > > ##### Definição de Policiamento #####
> > > # Tabela filter
> > > iptables -t filter -P INPUT DROP
> > > iptables -t filter -P OUTPUT ACCEPT
> > > iptables -t filter -P FORWARD DROP
> > > # Tabela nat
> > > iptables -t nat -P PREROUTING ACCEPT
> > > iptables -t nat -P OUTPUT ACCEPT
> > > iptables -t nat -P POSTROUTING DROP
> > > # Tabela mangle
> > > iptables -t mangle -P PREROUTING ACCEPT
> > > iptables -t mangle -P OUTPUT ACCEPT
> > >
> > >
> > > ##### Proteção contra IP Spoofing #####
> > > for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
> > > echo 1 >$i
> > > done
> > >
> > > ##### Ativamos o redirecionamento de pacotes (requerido para NAT) #####
> > > echo "1" >/proc/sys/net/ipv4/ip_forward
> > >
> > > # O iptables define automaticamente o número máximo de conexões
> > > simultâneas
> > > # com base na memória do sistema. Para 32MB = 2048, 64MB = 4096, 128MB =
> > > 8192,
> > > # sendo que são usados 350 bytes de memória residente para controlar
> > > # cada conexão.
> > > # Quando este limite é excedido a seguinte mensagem é mostrada:
> > > # "ip_conntrack: maximum limit of XXX entries exceed"
> > > #
> > > # Como temos uma rede simples, vamos abaixar este limite. Por outro lado
> > > isto
> > > # criará uma certa limitação de tráfego para evitar a sobrecarga do
> > > servidor.
> > > # echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max
> > >
> > >
> > > ###############################################################
> > > # Tabela filter #
> > > ###############################################################
> > >
> > > ##### Chain INPUT #####
> > > # Criamos um chain que será usado para tratar o tráfego vindo da
> > > Internet e
> > > iptables -N net-input
> > >
> > > # Aceita todo o tráfego vindo do loopback e indo pro loopback
> > > iptables -A INPUT -i lo -j ACCEPT
> > > # Todo tráfego vindo da rede interna também é aceito
> > > iptables -A INPUT -s 10.43.42.0/24 -i eth1 -j ACCEPT
> > >
> > > # Conexões vindas da interface eth0 são tratadas pelo chain net-input
> > > iptables -A INPUT -i eth0 -j net-input
> > >
> > > # Qualquer outra conexão desconhecida é imediatamente registrada e
> > > derrubada
> > > iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "
> > > iptables -A INPUT -j DROP
> > >
> > >
> > > ##### Chain FORWARD ####
> > > # Permite redirecionamento de conexões entre as interfaces locais
> > > # especificadas abaixo. Qualquer tráfego vindo/indo para outras
> > > # interfaces será bloqueado neste passo
> > > iptables -A FORWARD -d 10.43.42.0/24 -i eth0 -o eth1 -j ACCEPT
> > > iptables -A FORWARD -s 10.43.42.0/24 -i eth1 -o eth0 -j ACCEPT
> > > iptables -A FORWARD -j LOG --log-prefix "FIREWALL: FORWARD "
> > > iptables -A FORWARD -j DROP
> > >
> > >
> > > ##### Chain net-input ####
> > > # Aceitamos todas as mensagens icmp vindas de eth0 com certa limitação
> > > # O tráfego de pacotes icmp que superar este limite será bloqueado
> > > # pela regra "...! ESTABLISHED,RELATED -j DROP" no final do
> > > # chain net-input
> > > #
> > > iptables -A net-input -p icmp -m limit --limit 2/s -j ACCEPT
> > >
> > > # Primeiro aceitamos o tráfego vindo da Internet para o serviço www
> > > (porta 80)
> > > iptables -A net-input -p tcp --dport 80 -j ACCEPT
> > >
> > > # A tentativa de acesso externo a estes serviços serão registrados no
> > > syslog
> > > # do sistema e serão bloqueados pela última regra abaixo.
> > > iptables -A net-input -p tcp --dport 21 -j LOG --log-prefix "FIREWALL:
> > > ftp "
> > > iptables -A net-input -p tcp --dport 25 -j LOG --log-prefix "FIREWALL:
> > > smtp "
> > > iptables -A net-input -p udp --dport 53 -j LOG --log-prefix "FIREWALL:
> > > dns "
> > > iptables -A net-input -p tcp --dport 110 -j LOG --log-prefix "FIREWALL:
> > > pop3 "
> > > iptables -A net-input -p tcp --dport 113 -j LOG --log-prefix "FIREWALL:
> > > identd "
> > > iptables -A net-input -p udp --dport 111 -j LOG --log-prefix "FIREWALL:
> > > rpc"
> > > iptables -A net-input -p tcp --dport 111 -j LOG --log-prefix "FIREWALL:
> > > rpc"
> > > iptables -A net-input -p tcp --dport 137:139 -j LOG --log-prefix
> > > "FIREWALL: samba "
> > > iptables -A net-input -p udp --dport 137:139 -j LOG --log-prefix
> > > "FIREWALL: samba "
> > > # Bloqueia qualquer tentativa de nova conexão de fora para esta máquina
> > > iptables -A net-input -m state --state ! ESTABLISHED,RELATED -j LOG
> > > --log-prefix "FIREWALL: netin "
> > > iptables -A net-input -m state --state ! ESTABLISHED,RELATED -j DROP
> > > # Qualquer outro tipo de tráfego é aceito
> > > iptables -A net-input -j ACCEPT
> > >
> > >
> > > #######################################################
> > > # Tabela nat #
> > > #######################################################
> > >
> > > ##### Chain POSTROUTING #####
> > > # Permite qualquer conexão vinda com destino a lo e rede local para eth1
> > > iptables -t nat -A POSTROUTING -o lo -j ACCEPT
> > > iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth1 -j ACCEPT
> > >
> > > # Não queremos que usuários tenham acesso direto a www e smtp da rede
> > > externa, o
> > > # squid e smtpd do firewall devem ser obrigatoriamente usados. Também
> > > registramos
> > > # as tentativas para monitorarmos qual máquina está tentando conectar-se
> > > diretamente.
> > > iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth0 -p tcp --dport
> > > 80 -j LOG --log-prefix "FIREWALL: SNAT-www "
> > > #iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth0 -p tcp --dport
> > > 25 -j LOG --log-prefix "FIREWALL: SNAT-smtp "
> > > #iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth0 -p tcp --dport
> > > 25 -j DROP
> > > iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth0 -p tcp --dport
> > > 80 -j DROP
> > > # É feito masquerading dos outros serviços da rede interna indo para a
> > > interface
> > > # eth0
> > > iptables -t nat -A POSTROUTING -s 10.43.42.0/24 -o eth0 -j MASQUERADE
> > >
> > > # Qualquer outra origem de tráfego desconhecida indo para eth1 (conexões
> > > vindas
> > > # de eth0) são bloqueadas aqui
> > > iptables -t nat -A POSTROUTING -o eth1 -d 10.43.42.0/24 -j LOG
> > > --log-prefix "FIREWALL: SNAT unknown"
> > > iptables -t nat -A POSTROUTING -o eth1 -d 10.43.42.0/24 -j DROP
> > > # Quando iniciamos uma conexão eth, obtemos um endereço classe A
> > > (10.x.x.x) e após
> > > # estabelecida a conexão real, este endereço é modificado. O tráfego
> > > indo para
> > > # a interface eth não deverá ser bloqueado. Os bloqueios serão feitos no
> > > # chain INPUT da tabela filter
> > > iptables -t nat -A POSTROUTING -o eth0 -j ACCEPT
> > >
> > > # Registra e bloqueia qualquer outro tipo de tráfego desconhecido
> > > iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT "
> > > iptables -t nat -A POSTROUTING -j DROP
> > >
> > >
> > > ###############################################
> > > # Tabela mangle #
> > > ###############################################
> > >
> > > ##### Chain OUTPUT #####
> > > # Define mínimo de espera para os serviços ftp, telnet, irc e DNS, isto
> > > # dará uma melhor sensação de conexão em tempo real e diminuirá o tempo
> > > # de espera para conexões que requerem resolução de nomes.
> > > #iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 21 -j TOS --set-tos
> > > 0x10
> > > #iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 23 -j TOS --set-tos
> > > 0x10
> > > #iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 6665:6668 -j TOS
> > > --set-tos 0x10
> > > #iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 53 -j TOS --set-tos
> > > 0x10
> > > iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 3389 -j TOS
> > > --set-tos 0x10
> > >
> > >
> > > Gostaria de saber, se desta forma estarei priorizando os acesso ao WTS?
> > > E porque os logs ficam aparecendo na tela do server? É normal?
> > > Como se fosse em modo verbose sabem? Ficam aparecendo so registros dos
> > > logs na tela, e não consigo acessar a máquina localmente, aliás,
> > > consigo, mas os logs não deixam fazer nada.. :)
> > >
> > > --
> > > ...
> > > []'s
> > >
> > > _ Eder Gobbi - "Woody"
> > > ^-) MSN - gobbix at gmail dot com
> > > ( . . _ GoogleTalk - gobbix at gmail dot com
> > > \ `\\ Jabber - gobbix at jabber dot com
> > > |> Linux User - #385577 - http://counter.li.org
> > > ______/|______ UIN - 161655702
> > >
> > > "Livre? É... Eu sou!!!"
> > >
> > > "Se você pensa que pode, ou se pensa que não pode, de qualquer forma
> > > você está certo!" (Henry Ford)
> > >
> > >
> >
> >
> >
> >
> >
> > ____________________________________________________
> >
> >
> --
> ...
> []'s
>
> _ Eder Gobbi - "Woody"
> ^-) MSN - gobbix at gmail dot com
> ( . . _ GoogleTalk - gobbix at gmail dot com
> \ `\\ Jabber - gobbix at jabber dot com
> |> Linux User - #385577 - http://counter.li.org
> ______/|______ UIN - 161655702
>
> "Livre? É... Eu sou!!!"
>
> "Se você pensa que pode, ou se pensa que não pode, de qualquer forma
> você está certo!" (Henry Ford)
>
>
> --
> To UNSUBSCRIBE, email to debian-user-portuguese-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
>
--
---
Douglas Tabajara
www.tabajara.eti.br
Analista de Suporte
www.proservvi.com.br
www.paulistainformatica.com.br
"Pense Livre! Use Linux!!"
www.mandrivabrasil.org
"Quanto mais aprendo, mais me dou conta da minha ignorância"
"O único homem que está isento de erros, é aquele que não se
arrisca acertar."
- Albert Einstein
---
--
Reply to: