Pessoal estou aqui depois de 3 dias de muita leitura e muita paciência compartilhando a minha luta aqui na empresa para colocar para funcionar um firewall simples, bloqueia tudo e redireciona a porta 80 para um servidor web.
Bom deixa eu começar pela estrutura da rede, eu tenho um servidor firewall com 2 placas de rede:
eth0 : internet
eth1: rede inter (192.168.123.0/24)
Neste firewall tenho tb o dhcp da rede e um svn com o modulo do apache rodando na porta 8080.
O que eu quero fazer é simples, bloquear tudo, compartilhar a internet e redirecionar a porta 80 que chega no firewall para porta 80 do servidor web (192.168.123.1).
O firewall está ligado em um access point, que funciona como hub tb.
O que conseguir fazer:
Liberar o acesso a internet,bloquear tudo.
O que não consegui fazer:
Redirecionar a porta 80 do firewall para o servidor web.
O que apurei depois de muito tempo:
Quando tento acessar o servidor web, com a regra de redirecionamento ativada, percebo no status do iptables que os pacotes estão caindo certinho na chain input da porta 80 como segue abaixo:
administrador@fwserver:~/Desktop$ sudo sh rc4.firewall status
Chain INPUT (policy DROP 7 packets, 2296 bytes)
pkts bytes target prot opt in out source destination
6 360 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
***
Ou seja, o firewall tá recendo e aceitando requisições na porta 80, mas não está redirecionando para porta 8080 do servidor web.
Não sei mais o que fazer se alguem tem experiência e quiser me ajudar estou no msn em [email protected]
Estou postando o script de firewall abaixo para vocês analizaram, não tem muitoo mistério.
Obrigado de ante-mão ....
ME AJUDEM COMUNIDADE LINUX
#!/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="eth1" ## 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)
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ipt_tos
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
#
## 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 ... "
## 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) , svn (8080), webserver (80), vnc(5800,5900)
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 8080 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 5800 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 5900 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 5901 -j ACCEPT
# Aceita todo o tráfego vindo do loopback e indo pro loopback
$IPTABLES -A INPUT -i lo -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
#Libera o foward para o servidor Web
$IPTABLES -A FORWARD -p tcp -s 0/0 -d 0/0 --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d 0/0 -s 0/0 --sport 80 -j ACCEPT
#$IPTABLES -A FORWARD -p tcp -d 192.168.123.1 --dport 80 -j ACCEPT
## MASQUAREDE
$IPTABLES -A POSTROUTING -t nat -o $EXTDEV -j MASQUERADE
#Libera o servidor WEB na porta 80
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -i $EXTDEV -j DNAT --to 192.168.123.1:80
#$IPTABLES -t nat -A PREROUTING -p tcp -s 0/0 -d 0/0 --dport 80 -j REDIRECT --to-port 8080
#$IPTABLES -t nat -A PREROUTING -s 0/0 -d 0/0 -p tcp --dport 80 -j DNAT --to 192.168.123.1:80
$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 ##