Problemas com Firewall [RESOLVIDO]

1. Problemas com Firewall [RESOLVIDO]

Danilo
harryarroba

(usa OpenSuSE)

Enviado em 13/05/2010 - 17:19h

Ola pessoal, sou iniciante em linux e pesquisei muito mais muito e não consigo resolver minha situação.

trabalho em uma empresa e recentemente implantamos um server linux suse 11.2 rodando com squid e algumas regras de iptables.

fiz tudo certo, squid, iptables mas tem algo q não vaaaaaaai!!
eles usam um sistema de gestão, esse sistem roda num servidor win2008 e tem os sistemas clientes nas maquinas.
os sistemas clientes precisam da porta 6969 liberada entre cliente-internet para funcionar.

a conexao entre elas e o server win eh pela porta 3550 mas todos estao na mesma hub, o linux esta entre a internet e as maquinas.
se eu libero a internet pra um micro, ele estabiliza a conexao atraves dessa porta 6969 e funciona o sistema
se eu nao libero ele fica buscando e nao abre.

se eu por um 3g no micro e bloquear a rede ele conecta a 6969 e funciona tb!

essa conexao por esta porta eh entre o sistema e o pessoal q desenvolveu o sistema para fins de atualizacao e tals, precisa estar funcionando..


vou postar meu firewall

se puderem me ajudar eu agradeço mto!!!
#!/bin/bash
#
# Variaveis padroes
REDE=$(mysql -u root -puB2u58U4htccdfJn -e "select valorpar as tt from parametros where codigopar = '2' " baselinux)
REDE=$(echo $REDE | cut -c4-18)
echo "Range primaria ATIVA: $REDE"
REDE=192.168.0.0/24
REDE2=192.168.1.0/24

# Limpar regras
iptables -F
iptables -F INPUT
iptables -F FORWARD
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING


# Carrega modulos
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp



# Acesso Liberado

result=$(mysql -u root -puB2u58U4htccdfJn -e "select count(*) as tt from computador where status = 'l' " baselinux)
qtdvezes=$(echo $result | cut -c4-6)
if [ $qtdvezes -eq "0" ] ; then
echo "SEM REGRAS DE IP LIBERADO ATIVAS " ;
else
percc=`echo $qtdvezes | sed 's/^0*//'`
x=1
while [ "$x" -le "$percc" ];
do
#DEFINE O LIMITE
limitei=$(($x-1));
#pegaporta
IPLIBERADO=$(mysql -u root -puB2u58U4htccdfJn -e "select ip from computador where status = 'l' limit $limitei,$x " baselinux)
IPLIBERADO=$(echo $IPLIBERADO | cut -c4-18)
if [ -e $IPLIBERADO ] ; then echo "" ; else
#########<>############<>#############################<>############################## REGRA
iptables -t nat -A POSTROUTING -s $IPLIBERADO -o eth0 -j MASQUERADE
#########<>############<>#############################<>############################## REGRA
echo "SETANDO IP COM INTERNET LIBERADA = $IPLIBERADO "
fi
x=$((x+1));
done ;
fi



#Redirect 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


####################################### PORTAS
result=$(mysql -u root -puB2u58U4htccdfJn -e "select count(*) as tt from portapc, computador where computador.id = portapc.idpc " baselinux)
qtdvezes=$(echo $result | cut -c4-6)
if [ -e $qtdvezes ] ; then echo " " ; else
percc=`echo $qtdvezes | sed 's/^0*//'`
x=1
while [ "$x" -le "$percc" ];
do
#DEFINE O LIMITE
limitei=$(($x-1));
#pegaporta
portaliberar=$(mysql -u root -puB2u58U4htccdfJn -e "select nporta as tt from computador,portapc where computador.id = portapc.idpc limit $limitei,$x " baselinux)
portaliberar=$(echo $portaliberar | cut -c4-12)
#pegaip
ipliberar=$(mysql -u root -puB2u58U4htccdfJn -e "select ip as tt from computador,portapc where computador.id = portapc.idpc limit $limitei,$x " baselinux)
ipliberar=$(echo $ipliberar | cut -c4-20)
## regra
if [ -e $ipliberar ] ; then
echo "SEM REGRAS PARA PORTAS LIBERADAS ";
else
#########<>############<>#############################<>############################## REGRA
iptables -t nat -A POSTROUTING -p TCP --dport $portaliberar -s $ipliberar -d 0/0 -j MASQUERADE
#########<>############<>#############################<>############################## REGRA
echo "LIBERANDO A PORTA $portaliberar PARA O IP $ipliberar "
fi
## REGRA
x=$((x+1));
done ;
fi



####################################### REGRAS PADROES



iptables -P INPUT DROP #BLOQUEIA TODOS PACOTES QUE TENTAREM ENTRAR
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #ACEITA PASSAGERM DE CONEXOES ESTABELECIDAS E RELACIONADAS
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #ACEITA PASSAGERM DE CONEXOES ESTABELECIDAS E RELACIONADAS
iptables -A INPUT -i lo -j ACCEPT #LOOPBACK PARA LOCALHOST
iptables -A FORWARD -i lo -j ACCEPT #LOOPBACK PARA LOCALHOST
iptables -A FORWARD -s $REDE -d 0/0 -m state --state NEW -j ACCEPT #REPASSE DE PACOTES PARA INTERNET


####################################### PORTAS
IPSLIBERA=$REDE

iptables -A INPUT -p TCP -s $IPSLIBERA --dport 10000 -m state --state NEW -j ACCEPT #WEBMIN
iptables -A INPUT -p TCP -s $IPSLIBERA --dport 2022 -m state --state NEW -j ACCEPT #PUTTY
iptables -A INPUT -p TCP -s $IPSLIBERA --dport 8080 -m state --state NEW -j ACCEPT #APACHE
iptables -A INPUT -p TCP -s $IPSLIBERA --dport 3128 -m state --state NEW -j ACCEPT #SQUID
iptables -A INPUT -p TCP -s $IPSLIBERA --dport 53 -m state --state NEW -j ACCEPT #SQUID


IPSLIBERA2=$REDE
#iptables -A INPUT -p TCP -s $IPSLIBERA2 --dport 2022 -m state --state NEW -j ACCEPT #LIBERA PUTTY PARA REDE EXTERNA
#iptables -A INPUT -p TCP -s $IPSLIBERA2 --dport 8080 -m state --state NEW -j ACCEPT #APACHE
#iptables -A INPUT -p TCP -s $IPSLIBERA2 --dport 10000 -m state --state NEW -j ACCEPT #WEBMIN
#iptables -A INPUT -p TCP -s $IPSLIBERA2 --dport 3306 -m state --state NEW -j ACCEPT #MYSQL
#iptables -A INPUT -p TCP -s $IPSLIBERA2 --dport 21 -m state --state NEW -j ACCEPT #FTP

#samba
iptables -t nat -A POSTROUTING -p TCP --dport 139 -s $IPSLIBERA2 -d 0/0 -j MASQUERADE
iptables -A INPUT -p tcp -s $IPSLIBERA2 --dport 139 -j ACCEPT
iptables -A INPUT -p udp -s $IPSLIBERA2 --dport 139 -j ACCEPT
iptables -A INPUT -p udp -s $IPSLIBERA2 --dport 138 -j ACCEPT
iptables -A INPUT -p udp -s $IPSLIBERA2 --dport 139 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 --dport 139 -j DROP
iptables -A INPUT -p udp -s 0/0 --dport 139 -j DROP
iptables -A INPUT -p udp -s 0/0 --dport 138 -j DROP
iptables -A INPUT -p udp -s 0/0 --dport 137 -j DROP
iptables -A OUTPUT -p tcp -s $IPSLIBERA2 --dport 139 -j ACCEPT
iptables -A OUTPUT -p udp -s $IPSLIBERA2 --dport 139 -j ACCEPT
iptables -A OUTPUT -p udp -s $IPSLIBERA2 --dport 138 -j ACCEPT
iptables -A OUTPUT -p udp -s $IPSLIBERA2 --dport 139 -j ACCEPT


#TERMINAR SERVICE
IPREDE=$(mysql -u root -puB2u58U4htccdfJn -e "select valorpar as tt from parametros where codigopar = '1' " baselinux)
IPREDE=$(echo $IPREDE | cut -c4-20)
IPINTERNET=192.168.1.2
if [ -e $IPREDE ]; then echo "REDIRECIONAMENTO POR TERMINAL SERVICE DESATIVADO" ;
else
echo "PLACA ETH0 TRABALHANDO COM O IP $IPINTERNET"
echo "IP LIBERADO PARA CONEXAO VIA TERMINAL SERVICE: $IPREDE"
iptables -A INPUT -i eth0 -p TCP --dport 3389 --syn -j ACCEPT
iptables -A INPUT -i eth0 -p UDP --dport 3389 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s $IPINTERNET -d $IPREDE -p TCP --dport 3389 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s $IPINTERNET -d $IPREDE -p UDP --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p TCP --dport 3389 -j DNAT --to-destination $IPREDE:3389
iptables -A FORWARD -i eth0 -d $IPREDE/32 -p TCP --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p UDP --dport 3389 -j DNAT --to-destination $IPREDE:3389
iptables -A FORWARD -i eth0 -d $IPREDE/32 -p UDP --dport 3389 -j ACCEPT ;
fi




#PARAMETROS FINAIS
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all #BLOQUEIA PING




  


2. Re: Problemas com Firewall [RESOLVIDO]

Jefferson Diego
Diede

(usa Debian)

Enviado em 13/05/2010 - 21:39h

Pelo que entendi, seus clientes têm que acessar a porta 6969 de um servidor externo, do desenvolvedor do software.

Por conta dessas regras:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Tenho que te perguntar: Qual é a interface ligada a web? eth0 ou eth1?
As regras acima sugerem que uma delas está errada...
Tente algo como:


#!/bin/bash
iptables -F
iptables -F INPUT
iptables -F FORWARD
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
modprobe iptable_nat
modprobe ip_conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o INTERFACE_LIGADA_A_WEB -j MASQUERADE
iptables -t nat -A PREROUTING -i INTERFACE_LOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128


3. Interfaces

Danilo
harryarroba

(usa OpenSuSE)

Enviado em 13/05/2010 - 22:19h

Obrigado pela ajuda.

a Interface ligada a web é eth0

a interface ligada aos micros e´eth1

a eth0 esta conectada num modem adsl roteado e ela esta com o ip 192.168.1.2
o gatway é 192.168.1.1

a maior parte dessas regras acima eu fui pegando de foruns e pesquisas.
não compreendo mto de iptables mas estou começando a entender.

o que sugere para resolver meu problema com essas informações?


e me perdoe perguntar, se eu usar

iptables -t nat -A POSTROUTING -o INTERFACE_LIGADA_A_WEB -j MASQUERADE

eu vou estar liberando todas portas ?
preciso liberar só akela...


Abraços.


4. Resolvi

Danilo
harryarroba

(usa OpenSuSE)

Enviado em 14/05/2010 - 12:18h

Entao amigo, através da sua ajuda cheguei no resultado..

quando pus

iptables -t nat -A POSTROUTING -o INTERFACE_LIGADA_A_WEB -j MASQUERADE

ele me liberou todas portas, claro q navegação ainda estava redirecionada, mas programas como outlook, shareaza, etc etc ainda funcionavam..


ai mudei a regra pra


iptables -t nat -A POSTROUTING -o INTERFACE_LIGADA_A_WEB -p tcp --dport 6969 -j MASQUERADE


e funfo!!

obrigado pela ajuda..!
abraços






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts