Problema com o Firewall

1. Problema com o Firewall

Hélder Nicolodelli
Super_Might

(usa Debian)

Enviado em 05/01/2013 - 08:52h

Ola amigos,
Estou com dificuldade de configurar meu firewall, quando o firewall esta ativo a internet para, pauso o firewall a internet volta, peguei um script como base e tentei adaptar para minhas necessidade, mas não tive muito sucesso. Segue abaixo o script, se alguém conseguir me ajudar apontando os erros ficarei muito grato.
O firewall direciona porta 80 para o squid.
Atualmente ele nem da ping.

--------------------------------------------------------------
#!/bin/bash

# A linha acima é conhecida como shebang e server para chamar o interpretador do script
# poderia-se trocar o bash pelo sh ou outro shell de sua preferência

########################################################
# EXEMPLO DE SCRIPT DE FIREWALL PARA ARTIGO NO SITE www.vivaolinux.com.br
# CRIADO POR phrich
# Data da última alteração: 11/01/2012
# ######################################################

######################
# DECLARANDO AS VARIÁVEIS #
######################

# Interface de rede ligada a internet
IFACE_WEB="eth0"

# Interface de rede ligada a rede interna
IFACE_REDE="eth1"

# Rede interna
REDE_INTERNA="192.168.25.0/24"

# Portas liberadas TCP
PORTAS_TCP="20,21,53,80,443"

# Portas liberadas UDP
PORTAS_UDP="53"

# Portas liberadas para a rede interna
PORTAS_REDE_INTERNA="25,110"

############################################################
# FUNÇÃO START #
# Esta função limpa as regras criadas anteriormente, e insere as regras listadas na função
###########################################################

function start () {

#++++++++++++++++++++++
# LIMPA AS REGRAS EXISTENTES #
#+++++++++++++++++++++#

# Limpa as regras da tabela filter
iptables -F

# Limpa as regras da tabela nat
iptables -t nat -F

# DEFINE AS POLICAS PADRÕES DO IPTABLES COMO DROP #
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# CRIA A IDA E VOLTA DO ACESSO NAS CHAINS INPUT, OUTPUT E FORWARD, ASSIM NÃO PRECISAMOS CRIAR A IDA E VOLTA NAS REGRAS
# Não vamos nos aprofundar neste assunto, mas vale a pena dar uma estudada no módulo state ;-)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

##############
# REGRAS DE NAT #
#############

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE
#iptables -t nat -A PREROUTING -o $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# REDIRECIONA O ACESSO RDP PARA OUTRO SERVIDOR DENTRO DA REDE INTERNA#
#iptables -t nat -A PREROUTING -p tcp --dport 3389 -j REDIRECT --to 192.168.25.100:3389
iptables -t nat -A PREROUTING -i $IFACE_WEB -p tcp --dport 3389 -j DNAT --to 192.168.25.254:3389

###############
# REGRAS DE INPUT #
###############

#Liberar porta internet
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Libera o acesso SSH de qualquer origem
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera o squid a partir da rede interna
iptables -A INPUT -s $REDE_INTERNA -p tcp --dport 3128 -j ACCEPT

#DNS
#iptables -A INPUT -s $REDE_INTERNA -p udp --dport 53
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# Aceita ping apenas da rede interna
iptables -A INPUT -s $REDE_INTERNA -p icmp --icmp-type 8 -j ACCEPT

################
# REGRAS DE OUTPUT #
################

# Libera as portas constantes na variável $PORTAS_TCP (para liberar mais portas, basta inserir as mesmas na variável citada)
#iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT

iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# Libera ping para qualquer lugar
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT

##################
# REGRAS DE FORWARD #
#################

#Squid
#iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 21 -j ACCEPT

# Libera as portas constantes em na variável $PORTAS_REDE_INTERNA (para liberar mais portas, basta inserir as mesmas na variável citada)
#iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT

#DNS
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 5353 -j ACCEPT

# Libera RDP citado na regra de NAT
iptables -A FORWARD -p tcp --dport 3389 -d 192.168.25.254 -j ACCEPT
# FINAL DA FUNÇÃO START #
}

############################################################################
# CRIA FUNÇÃO STOP #
# Esta função limpa todas as regras, deixa as políticas padrões com ACCEPT e deixa todo e qualquer acesso liberado
############################################################################

function stop () {

# LIMPA AS REGRAS EXISTENTES #
iptables -F
iptables -t nat -F

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP #
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

# Caso queira manter as regras de NAT favor copiar as regras de nat
# e as correspondentes as mesmas de forward aqui

# FINAL DA FUNÇÃO STOP #
}

# Criando os parâmetros para o script, esses parâmetros serão start, stop e restart vejamos:
# start - chama a função start (Regras inseridas e política padrão como DROP)
# stop - chama a função stop (Sem regras e com a política padrão como ACCEPT, util para realizar testes)
# restart - chama a função stop e depois a função start (Carrega as novas regras que venha a ser inseridas na função start)

# Qualquer parâmetro que não seja start, stop ou restart não será válido e nada será alterado.

case $1 in

start)
start
;;

stop)
stop
;;

restart)
stop
start
;;

*)
echo "Insira um parâmetro para /etc/init.d/firewall... start | stop | restart"
exit 0
;;

esac
# FIM DO SCRIPT DE FIREWALL #



  


2. Re: Problema com o Firewall

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 05/01/2013 - 10:46h

bom tu esta usando a politica DROP
na minha opinião como tu não muito conhecimento em relação ao firewall
deixe como ACCEPT e vai bloqueando aos poucos e procure entender o que esta fazendo
assim fica mais fácil personalizar as regras de firewall na minha opinião

espero que ajude



3. Re: Problema com o Firewall

Phillip Vieira
phrich

(usa Slackware)

Enviado em 07/01/2013 - 16:29h

Eu conheço esse exemplo de script de algum lugar... ;-)

Cara, não copie e cole, firewall não é receita de bolo, leia o script, procure entender cada linha e realize as adaptações para o seu caso, só assim vc terá sucesso.


4. Re: Problema com o Firewall

Hélder Nicolodelli
Super_Might

(usa Debian)

Enviado em 09/01/2013 - 16:44h

^.^, Script bem comentado e mais simples de entender. Gostei muito dele, peguei ele como base para tentar montar um, fiz questão de deixar seus comentários e seu nome, pois foi você que criou ele ^.^.

Estou tentando adaptar o seu script, mais estou encontrando varias dificuldade, eu estava utilizando outro antes de encontrar o seu, que trabalhava da seguinte forma, aceitava tudo e broqueava só o que eu queria, como não tenho muito conhecimento, ele tava trabalhando quase sem bloquear nada. Gostei muito do seu pois ele broqueia tudo e só libera o que agente quer, e a dificuldade se encontra nisso, estou tentando adaptar o seu, quase tudo esta funcionando, mas estou encontrando muita dificuldade de liberar a internet, você poderia me ajudar?


5. Re: Problema com o Firewall

Phillip Vieira
phrich

(usa Slackware)

Enviado em 09/01/2013 - 17:04h

Isso vai variar de como vc está utilizando o script e sua rede, vc consegue navegar a partir do próprio firewall?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts