[Ubuntu-BR] Script Iptables não faz o que eu quero :(
Bruno Lima
bslima19 em gmail.com
Segunda Abril 21 21:47:30 UTC 2008
Eu dei uma enxugada no script mas tenho a impressão que o problema está na
estrutura de rede que eu montei aqui. Fiz assim: conexão da internet via
dhcp entra na eth0 do firewall e na outra placa de rede eth2 do firewall sai
um cabo ligado na porta WAN (192.168.123.253) do roteador wireless linksys,
ai configurei o roteador para IP statico (192.168.123.254) colocando o
gateway o ip do firewall (192.168.123.254), na rede interna do roteador
coloquei o ip dele como 192.168.123.252, com o DHCP server ligado para a
faixa de ip entre 192.168.123.100-140.
A primeira coisa que estranhei foi não conseguir acessar o roteador linksys
do firewall, apesar de eles estarem na mesma rede (192.168.123.0). Os
clientes wi-fi pegam o roteador como gateway e os ips estâo na mesma rede (
192.168.123.0) mas não consigo dar ping no firewall a partir dos clientes da
rede.
Alguem sabe o que eu posso estar fazendo errado?
O que posso fazer para acertar isso ?
Vai abaixo o script de firewall que eu fiz.
PS: Não to nem me preocupando com firewall no momento só quero acertar a
estrutura da rede primeiro..
Obrigado de ante-mão a todos
#!/bin/sh
#
# Script iptables para firewall.
# Feito para empresa Intertech - Soluções em Informática
# Autor: Bruno Seabra Nogueira Mendonça Lima - 16-04-2008
#
#
# Libera as portas do SVN (8080), VNC(5800/5900), SSH(22)
# Redireciona as portas da WEB(80) e VNC(5801/5901) para a máquina
192.168.123.1 (SERVIDOR SOL)
# Aceita conexões da rede interna
#
#
#
IPTABLES="/sbin/iptables" ## iptables
EXTDEV="eth0" ## placa de rede externa
INTDEV="eth2" ## placa de rede interna
IF_LOC="lo" # loopback
EXTIP=`ifconfig $EXTDEV | grep "inet " | cut -f2 -d: | cut -f1 -dB` ##
externo ip
INTIP=`ifconfig $INTDEV | grep "inet " | cut -f2 -d: | cut -f1 -dB` ##
interno ip
NET_INT="192.168.123.0/255.255.255.0" # Rede da interface INTDEV
case "$1" in
start)
#
## Compartilhar Internet
#
echo -n "Enabling IP Forwarding ... "
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "done."
#
## Dynamic Ip
#
echo -n "Enabling Dynamic Ips ... "
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "done."
#
## Limpa as tabelas e setando a politica DROP
#
echo -n "Flushing tables, Setting default policies to DROP ... "
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
echo "done."
echo -n "Setting up the firewall now ... "
# Aceita todo o tráfego vindo do loopback e indo pro loopback
$IPTABLES -A INPUT -i lo -j ACCEPT
## Somente conexões estabelecidas por nós primeiro
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Aceitar conexao das maquinas da rede interna
$IPTABLES -A INPUT -p tcp --syn -s $NET_INT -j ACCEPT
## Permitir ssh (22) e svn (8080)
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 8080 -j ACCEPT
## Conexões estabelicidas sejam encaminhadas
$IPTABLES -A FORWARD -i $EXTDEV -m state --state RELATED,ESTABLISHED -j
ACCEPT
## Conexões da rede interna para internet
$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -j ACCEPT
## MASQUAREDE (compartilhar internet)
$IPTABLES -A POSTROUTING -t nat -o $EXTDEV -j MASQUERADE
$IPTABLES -P OUTPUT ACCEPT
echo "Firewall has been fully installed"
;;
stop)
echo -n "Flushin all rules ... "
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F OUTPUT
echo "done."
;;
restart)
sh $0 stop
sh $0 start
;;
status)
$IPTABLES -L -n -v
;;
*)
echo "usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
## EOF ##
2008/4/20 Bruno Lima <bslima19 em gmail.com>:
> Mas nesse caso eu não estaria bloquando tudo ?
> Por que a politica padrao é DROP certo ?
> Mas assim que tiver lah na empresa eu vou testar o que falaste ...
> obrigado pela atenção ...
> :)
>
> 2008/4/19 ..:: S.e.r.i.a.l ::.. <skroot em gmail.com>:
>
> Amigo,
> >
> > Posso estar falando besteira, mas tem coisa demais nesse script para
> > fazer
> > apenas o que vc quer, mas vamos lá:
> >
> > Troubleshoot 1) reinicie sei firewall sem rodar esse script
> > Troubleshoot 2) Digite esses codigos:
> > iptables -t nat -A PREROUTING -s 0/0 -d 0/0 -p
> > tcp
> > --dport 80 -j DNAT 192.168.0.1:80 <http://192.168.0.1/>
> > echo "1" > /proc/sys/net/ipv4/ip_forword
> > troubleshoot 3) Garanta que seu servidor 192.168.0.1 tenha gateway
> > configurado para o ip do seu firewall
> > troubleshoot 4) teste seu acesso web da internet para seu servidor.
> >
> > Me fale no que deu depois
> >
> >
> > [.]'s
> > Serial
> >
> >
> >
> > -----Original Message-----
> > From: ubuntu-br-bounces em lists.ubuntu.com
> > [mailto:ubuntu-br-bounces em lists.ubuntu.com] On Behalf Of Bruno Lima
> > Sent: sábado, 19 de abril de 2008 16:38
> > To: Lista de discussão do LoCoTeam Brasileiro
> > Subject: [Ubuntu-BR] Script Iptables não faz o que eu quero :(
> >
> > Pessoal vou explicar a minha situação:
> >
> > Tenho um computador AMD DURON 900Mhz com 256Mb de memoria aqui na
> > empresa,
> > ele tava encostado sem fazer nada, ai decidi colocar ele como firewall,
> > instalei o ubuntu recompilei o kernel deixei enxuto, ficou bala. Sim,
> > mas
> > vamos seguir ao firewall: Ele tem 2 placas de rede,obvio, uma de cara
> > para
> > internet outra que vai ser ligada na porta WAN de um roteador wireless,
> > a
> > empresa toda wifi :). O que eu quero com o firewall é liberar o acesso
> > aos
> > serviços básicos http,https,ssh,vnc, entre outros, além do que eu tenho
> > um
> > servidor web que vai ficar atras do roteador ao qual eu preciso
> > redirecionar a porta 80 para este servidor, além da porta de vnc para
> > ele.
> > Depois de 2 dias tentando configurar tudo isso aqui no iptables eu acho
> > que
> > cheguei a algo que faz sentido pelo menos pra mim mas que não está
> > funcionando do jeito que eu quero.
> > Abaixo vai o script do iptables que eu fiz, eu que dei a ideia o chefe
> > adorou e me deu até sexta-feira dia 25, mas como eu me empolguei com a
> > ideia
> > quero acabar logo e botar essa budega pra funcionar. Por favor me ajudem
> > :)
> >
> > #!/bin/sh
> > #
> > # Script iptables para firewall.
> > # Feito para empresa Intertech - Soluções em Informática
> > # Autor: Bruno Seabra Nogueira Mendonça Lima - 16-04-2008
> > #
> > #
> > # Libera as portas do SVN (8080), VNC(5800/5900), SSH(22)
> > # Redireciona as portas da WEB(80) e VNC(5801/5901) para a máquina
> > 192.168.123.1 (SERVIDOR SOL)
> > # Aceita conexões da rede interna
> > #
> > #
> > #
> >
> >
> > IPTABLES="/sbin/iptables" ## location to iptables binary file
> >
> > EXTDEV="eth0" ## external device that connects to modem
> > INTDEV="eth1" ## internal device that connects to lan
> > IF_LOC="lo" # Interface Loopback
> >
> > EXTIP=`ifconfig $EXTDEV | grep "inet " | cut -f2 -d: | cut -f1 -dB` ##
> > external ip address
> > INTIP=`ifconfig $INTDEV | grep "inet " | cut -f2 -d: | cut -f1 -dB` ##
> > internal ip address
> >
> > NET_INT="192.168.123.0/24" # Rede da interface IF_INT
> >
> > case "$1" in
> > start)
> >
> > #
> > ## First we want to enable ip forwarding
> > #
> > echo -n "Habilitando Compartilhamento ... "
> > echo "1" > /proc/sys/net/ipv4/ip_forward
> > echo "Pronto!"
> >
> > #
> > ## Secondly we want to enable dynamic ips
> > #
> > echo -n "Habilitando IP Dinamico ... "
> > echo "1" > /proc/sys/net/ipv4/ip_forward
> > echo "Pronto."
> >
> > #
> > ## Now lets clear all the tables incase they were improperly shutdown
> > #
> >
> > echo -n "Descarregando regras e tabelas ... "
> > $IPTABLES -P INPUT DROP
> > $IPTABLES -F INPUT
> > $IPTABLES -P FORWARD DROP
> > $IPTABLES -F FORWARD
> > $IPTABLES -P OUTPUT DROP
> > $IPTABLES -F OUTPUT
> > $IPTABLES -t nat -F
> > $IPTABLES -t mangle -F
> > echo "Pronto."
> >
> > #
> > ## Its time to start setting up our rules and policies
> > #
> >
> > echo -n "Setando o firewall agora ... "
> >
> > #################################################################
> > # CHAIN DE PREROUTING
> > #################################################################
> >
> > echo -n "Setando as regras de PREROUTING ..."
> >
> > #Libera o VNC na porta 5900
> > $IPTABLES -t nat -A PREROUTING -p tcp -i $EXTDEV --dport 5800:5900 -j
> > DNAT --to 192.168.123.1:5800-5900
> > $IPTABLES -t nat -A PREROUTING -p udp -i $EXTDEV --dport 5800:5900 -j
> > DNAT --to 192.168.123.1:5800-5900
> >
> >
> > #Libera o servidor WEB na porta 80
> > $IPTABLES -t nat -A PREROUTING -p tcp -i $EXTDEV --dport 80 -j DNAT
> > --to
> > 192.168.123.1:80 <http://192.168.123.1/>
> >
> > echo "Pronto!"
> >
> > #################################################################
> > # REGRAS DE INPUT E OUTPUT
> > #################################################################
> >
> > echo -n "Setando as regras de input e output ..."
> >
> > #LIbera interface local
> > echo -n "Liberando interface local ..."
> > $IPTABLES -A OUTPUT -j ACCEPT -o $IF_LOC
> > $IPTABLES -A INPUT -j ACCEPT -i $IF_LOC
> > echo " Pronto!"
> >
> > ## First we want to allow only incoming connections that we establish
> > first
> > echo -n "Liberando conexões que foram estabelicidas primeiro ... "
> > $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
> > echo "Pronto!"
> >
> > #Aceita que o firewall acesse a web
> > echo -n "Liberando acesso a WEB ... "
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport 80
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport 80
> > echo "Pronto!"
> >
> > #Liberando que o firewall acesse o msn
> > echo -n "Liberando acesso a MSN ... "
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport 1863
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport 1863
> > echo "Pronto!"
> >
> > #Aceita que o firewall faca ssh pra fora
> > echo -n "Liberando SSH para a internet ... "
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport ssh
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport ssh
> > echo "Pronto!"
> >
> > #Aceita conexao com o no-ip.com
> > echo -n "Liberando conexão com o no-ip.com (8245) ..."
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport 8245
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport 8245
> > echo "Pronto!"
> >
> > #Aceita conexao com o Apache
> > echo -n "Liberando conexão com Apache (SVN:8080) ..."
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport 8080
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport 8080
> > echo "Pronto!"
> >
> > #Aceita conexao com o ssh
> > echo -n "Liberando conexão com SSH (22) ..."
> > $IPTABLES -A OUTPUT -j ACCEPT -p tcp --dport 22
> > $IPTABLES -A INPUT -j ACCEPT -p tcp --sport 22
> > echo "Pronto!"
> >
> > # Aceita conexoes da rede interna
> > echo -n "Liberando conexões da rede interna ..."
> > $IPTABLES -A OUTPUT -j ACCEPT -d $NET_INT
> > $IPTABLES -A INPUT -j ACCEPT -s $NET_INT
> > echo "Pronto!"
> >
> > echo -n "Pronto!"
> >
> > #################################################################
> > # REGRAS DE FORWARD
> > #################################################################
> >
> > echo -n "Setando todas as regras de FOWARD ..."
> > #
> > ## Aceitar a lan interna acessar a internet
> > #
> >
> > ## Conexões estabelecidas ou relacionadas sejam encaminhadas
> > imediatamente
> > $IPTABLES -A FORWARD -i $EXTDEV -m state --state RELATED,ESTABLISHED -j
> > ACCEPT
> >
> > ## Encaminha todas as conexões da lan interna para internet
> > $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -j ACCEPT
> >
> > #Libera o VNC na porta 5900
> > $IPTABLES -A FORWARD -i $EXTDEV -p tcp --dport 5800:5900 -m state
> > --state
> > NEW,ESTABLISHED,RELATED -j ACCEPT
> > $IPTABLES -A FORWARD -i $EXTDEV -p udp --dport 5800:5900 -m state
> > --state
> > NEW,ESTABLISHED,RELATED -j ACCEPT
> >
> > #Redireciona o WebServer
> > $IPTABLES -A FORWARD -i $EXTDEV -p tcp --dport 80 -m state --state
> > NEW,ESTABLISHED,RELATED -j ACCEPT
> >
> > echo "Pronto!"
> >
> >
> > #################################################################
> > # REGRAS DE POSTROUTING
> > #################################################################
> >
> > ## Masquerade from Internal Net to External Net
> > $IPTABLES -A POSTROUTING -t nat -o $EXTDEV -j MASQUERADE
> >
> > #$IPTABLES -P OUTPUT ACCEPT
> >
> >
> > echo -n "Firewall has been fully installed"
> >
> > ;;
> > stop)
> >
> > echo -n "Flushin all rules ... "
> > $IPTABLES -P INPUT ACCEPT
> > $IPTABLES -P FORWARD ACCEPT
> > $IPTABLES -P OUTPUT ACCEPT
> > $IPTABLES -F INPUT
> > $IPTABLES -F FORWARD
> > $IPTABLES -F OUTPUT
> > $IPTABLES -t nat -P PREROUTING ACCEPT
> > $IPTABLES -t nat -P POSTROUTING ACCEPT
> > $IPTABLES -t nat -P OUTPUT ACCEPT
> > $IPTABLES -t nat -F PREROUTING
> > $IPTABLES -t nat -F POSTROUTING
> > $IPTABLES -t nat -F OUTPUT
> > echo "done."
> > ;;
> > restart)
> > $0 stop
> > $0 start
> > ;;
> > status)
> > $IPTABLES -L -n -v
> > #$IPTABLES -t nat -L -n
> > ;;
> > *)
> > echo "usage: $0 {start|stop|restart|status}"
> > exit 1
> > esac
> > exit 0
> >
> > ## EOF ##
> >
> >
> >
> > Obrigado
> >
> > --
> > Bruno Seabra Mendoça Lima
> > --------------
> > UFMA - Universidade Federal do Maranhão
> > DEINF - Departamento de Informática
> > LESERC - Laboratório de Engenharia de Software e Redes de Computadores
> > Pesquisador
> > Telefone: 3217-8239
> > -------------------
> > Intertech - Soluções em Informática
> > WEB Developer
> > Telefone: 3227-1224
> > -------------------
> > --
> > Interessado em aprender mais sobre o Ubuntu em português?
> > http://wiki.ubuntu-br.org/ComeceAqui -
> > ubuntu-br mailing list
> > ubuntu-br em lists.ubuntu.com
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >
> >
> > --
> > Interessado em aprender mais sobre o Ubuntu em português?
> > http://wiki.ubuntu-br.org/ComeceAqui -
> > ubuntu-br mailing list
> > ubuntu-br em lists.ubuntu.com
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >
>
>
>
> --
> Bruno Seabra Mendoça Lima
> --------------
> UFMA - Universidade Federal do Maranhão
> DEINF - Departamento de Informática
> LESERC - Laboratório de Engenharia de Software e Redes de Computadores
> Pesquisador
> Telefone: 3217-8239
> -------------------
> Intertech - Soluções em Informática
> WEB Developer
> Telefone: 3227-1224
> -------------------
>
--
Bruno Seabra Mendoça Lima
--------------
UFMA - Universidade Federal do Maranhão
DEINF - Departamento de Informática
LESERC - Laboratório de Engenharia de Software e Redes de Computadores
Pesquisador
Telefone: 3217-8239
-------------------
Intertech - Soluções em Informática
WEB Developer
Telefone: 3227-1224
-------------------
More information about the ubuntu-br
mailing list