Tirar apenas um IP para nao passar dentro do Proxy Transpare
Olá pessoal,
Tenho um pequeno problema. Dentro das minhas regras de firewall, criei uma regra para fazer proxy transparente, descrita abaixo:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Assim funciona que é uma beleza, todo mundo que está na interface eth0 sai para a internet usando o squid.
Só que tenho um problema, um usuário dessa interface não pode sair para a internet usando o Proxy Transparente, somente ele deve sair sem proxy, o restante do pessoal deve usar o proxy!
A pergunta é...
Como fazer para que somente o ip 10.10.1.50 não saia para internet
usando o Proxy?
Abraços
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Citação:
Postado originalmente por felco
Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
Não entendi!
Como seria a regra completa?
Tirar apenas um IP para nao passar dentro do Proxy Transpare
seria isso?
iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT
:?
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Citação:
Postado originalmente por RicardoVS
seria isso?
iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT
:?
Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?[/quote]
é que agora vou mudar o IP do usuário...
seria isso mesmo? Pois não deu certo!
Meu firewall está assim:
#!/bin/sh
# Variaveis
# -------------------------------------------------------
IF_EXTERNA=eth0
IF_LOJA=eth1
IF_WIRELESS=eth3
IF_LINUX=eth2
# Ativa modulos
# -------------------------------------------------------
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
# Ativa roteamento no kernel
# -------------------------------------------------------
echo "1" > /proc/sys/net/ipv4/ip_forward
# Protecao contra IP spoofing
# -------------------------------------------------------
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
# Zera regras
# -------------------------------------------------------
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
# Determina a politica padrao
# -------------------------------------------------------
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#########################################################
# Tabela FILTER
#########################################################
# Dropa pacotes TCP indesejaveis
# -------------------------------------------------------
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
# Dropa pacotes mal formados
# -------------------------------------------------------
iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP
# Aceita os pacotes que realmente devem entrar
# -------------------------------------------------------
iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# Protecao contra trinoo
# -------------------------------------------------------
iptables -N TRINOO
iptables -A TRINOO -j DROP
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO
# Protecao contra tronjans
# -------------------------------------------------------
iptables -N TROJAN
iptables -A TROJAN -j DROP
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN
# Protecao contra worms
# -------------------------------------------------------
iptables -A FORWARD -p tcp --dport 135 -i $IF_LOJA -j REJECT
iptables -A FORWARD -p tcp --dport 135 -i $IF_WIRELESS -j REJECT
iptables -A FORWARD -p tcp --dport 135 -i $IF_LINUX -j REJECT
# Protecao contra syn-flood
# -------------------------------------------------------
iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
# Protecao contra ping da morte
# -------------------------------------------------------
# Aceita a requisição do PING
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# Protecao contra port scanners
# -------------------------------------------------------
iptables -N SCANNER
iptables -A SCANNER -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER
# Libera acesso externo a determinadas portas
# -------------------------------------------------------
iptables -A INPUT -p tcp --dport 443 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p udp --dport 443 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -i $IF_WIRELESS -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -i $IF_LOJA -j ACCEPT
iptables -A INPUT -p tcp --dport 5800 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j ACCEPT
iptables -A INPUT -p tcp --dport 5800 -i $IF_LINUX -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -i $IF_LINUX -j ACCEPT
#########################################################
# Tabela NAT
#########################################################
# Ativa mascaramento de saida
# -------------------------------------------------------
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
# Libera o acesso para sair do Proxy Transparente
# -------------------------------------------------------
iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT
# Proxy transparente
# -------------------------------------------------------
iptables -t nat -A PREROUTING -i $IF_LOJA -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $IF_WIRELESS -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $IF_LINUX -p tcp --dport 80 -j REDIRECT --to-port 3128
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Hummmmmm eh verdade x)
Mas acho que esta DROP no OUTPUT
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Ahhhh sabia que eu nao tava viajando -j ACCEPT funciona sim, pq ele manda o pacote pra tabela filter, ele esta na tabela NAT entao ele vai pra tabela filter porque o destino dele eh a internet ele vai para FORWARD eh depois pra OUTPUT
# Ativa mascaramento de saida
# -------------------------------------------------------
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
# Libera o acesso para sair do Proxy Transparente
# -------------------------------------------------------
iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT
Eh isso mesmo POREM CONTUDO.... eu disse
Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra DEVE vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
eh vc coloquei embaixo
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Ta certo, foi mal, mas esse IP que vc colocou ai 200.x.y.z? Nao eh pra ser um IP privado?!
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Mais eu coloquei assim e ainda nao funcionou, o cliente continua saindo com o IP do servidor.
# Ativa mascaramento de saida
# -------------------------------------------------------
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
# Libera o acesso para sair do Proxy Transparente
# -------------------------------------------------------
iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Calma ai cara, oq vc quis dizer com "continua saindo com o IP do servidor"?
Vai ser o IP do servidor nao pq vc esta saindo pelo Squid, isso eh indeferente, ele sai com IP do Firewall pq vc esta fazendo MASQUERADE nao SNAT
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Então me desculpe.
Preciso que o cliente saia para internet usando o IP valido dele! Por isso preciso que ele não passe pelo Proxy Transparente.
Entendeu?
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Tirar apenas um IP para nao passar dentro do Proxy Transpare
Sem muito estresse, na mesma regra de redirecionamento para o proxy transparente faça o seguinte...
Código :
# iptables -t nat -A PREROUTING -i eth0 -s ! <ip do host a liberar> -p tcp --dport 80 -j REDIRECT --to-port 3128
Esta inserção diz + ou - o seguinte:
Redirecione tudo o que vem pela eth0, menos da fonte <ip do host...> , com porta de destino 80 para a porta 3128
Desta forma vc estará excluindo o IP postado depois da "!" da regra de redirecionamento.
Qualquer coisa, escreva...
T+