Correção do Squid + Iptables [RESOLVIDO]

1. Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 11/03/2009 - 10:00h

Bom dia pessoal,

Gostaria de pedir que analisem meus scripts pois não consigo fazer a internet funcionar nas estações.

Meu servidor é um Debian 5.0 e está funcionando a internet numa boa.

Minha conexão é o speedy da telefõnica (ip fixo)

[MODEM]----[SERVER ETH0][SERVER ETH1]------[SWITCH]---[REDE LOCAL]

Minha rede local é Win XP

Vou postar minhas configurações de rede, squid e firewall

*************** REDE ***********

#The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.x.x
netmask 255.255.255.0
broadcast 192.168.x.255
network 192.168.x.x

************* MINHA ESTAÇÃO XP ***********

IP 192.168.x.x
MASC 255.255.255.0
GAT (O MESMO IP DO SERVIDOR)
DNS (TBM O IP DO SERVIDOR)

************ RESOLV.CONF *****************
### BEGIN INFO

domain lan
search lan

nameserver 200.204.0.10
nameserver 200.204.0.138
************ SQUID ***********************

http_port 3128 transparent

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

cache_mem 8 MB #memória ram disponibilizado para o proxy
cache_swap_low 90
cache_swap_high 95
cache_mgr [email protected]
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_effective_user (usuario)
cache_effective_group (grupo)
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 8 KB
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /var/spool/squid
visible_hostname squid.empresa.com.br

hosts_file /etc/hosts

#Padrao de atualização do cache
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

#Libera o squid para ser utilizado por todos os ips
acl blockedsites url_regex -i "/etc/squid/bloqueados/block.txt"
acl unblockedsites url_regex -i "/etc/squid/bloqueados/unblock.txt"
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object

#Regra localhost
acl localhost src 127.0.0.1/255.255.255.255

#Regra para a rede local
acl redelocal src 192.168.0.0/24 #não sei se devo deixar assim ou com o ip do server (eth1) já tentei dos 2 jeitos e não dá certo

#Especificaçao das portas seguras
acl SSL_ports port 443 563 10000 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 1000 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

#Regras basicas para o gerenciamento do proxy
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge

#Proibe o acesso fora das portas listadas
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Permite o acesso do localhost e de rede local ao proxy
http_access deny blockedsites !unblockedsites
http_access allow localhost
http_access allow redelocal
http_access deny all

http_reply_access allow all
icp_access allow all

************ FIREWALL ********************

#!/bin/bash
# REGRAS DE FIREWALL PROXY ;SQUID ;APACHE ;SARG ;DHCP3-SERVER ;BIND
#########################################################################
#
echo
echo "=========================================="
echo "| :: SETTING IPTABLES'S CONFIGURATION :: |"
echo "=========================================="
#
EXTERNAL=eth0
INTERNAL=eth1
IP=192.168.x.x/24 (o mesmo ip do servidor)
#
flush_rules()
{
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
}
#
add_rules()
{
######################Habilitando o roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Roteamento .........................[ OK ]"
#
#
######################CARREGANDO MODULOS
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_state
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ipt_multiport
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_tos
/sbin/modprobe ipt_limit
echo "Loading iptables's modules .........[ OK ]"
#
######################Liberacao do Loopback
iptables -A INPUT -i lo -j ACCEPT
#
######################Ativa mascaramento de saida
iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
#
######################REDIRECIONANDO PROXY TRANSPARENTE
iptables -t nat -A PREROUTING -i $INTERNAL -p tcp --dport 80 -j REDIRECT --to-port 3128
#
####################DNS
iptables -I POSTROUTING -j MASQUERADE -t nat -s $IP -p udp --dport 53 -o $EXTERNAL
#
#####################Mascaramento
iptables -t nat -A POSTROUTING -s $IP -d 0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $IP -o $EXTERNAL -j MASQUERADE
#
####################Proteção contra ping da morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#
######################Protege contra pacotes danificados
#Portscanners, Ping of Death, ataques DoS, Syb-flood e Etc
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
#
#######################Allow all connections OUT and only related ones IN
iptables -A FORWARD -i $EXTERNAL -o $INTERNAL -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#Fecha portas
iptables -A INPUT -i $EXTERNAL -m state --state ! ESTABLISHED,RELATED -j DROP
#
#Ponto Chave do firewall! Se nao entrar em nenhuma regra acima rejeita tudo!
iptables -A INPUT -i $EXTERNAL -p tcp --syn -j DROP
#
# Mesmo assim fechar todas as portas abaixo de 32000
iptables -A INPUT -i $EXTERNAL -p tcp --dport :32000 -j DROP
#
}
case $1 in
start)
echo -n Starting Firewall...
add_rules
echo "Done"
;;
stop)
echo -n Stoping Firewall...
flush_rules
echo "Done"
;;
restart)
echo Restarting Firewall...
flush_rules
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
echo "Cleaning all rules .................[ OK ]"
add_rules
echo "Done"
;;
status)
echo "============================ Firewall rules:"
iptables -L -n
echo "============================ Masquerade tables:"
iptables -t nat -L -n
echo "============================ Mangle table:"
iptables -t mangle -L -n
;;
*)
echo Usar: "$0 { status | start | stop | restart }"
;;
esac

exit 0


**************** OBSERVAÇÃO **************
Estou conseguindo pingar do meu pc para o servidor mas não consigo conectar na internet. Fica um tempão tentando carregar a pagina e não conecta.

dentros dos arquivos block.txt eu coloquei www.terra.com.br e dentro de unblock.txt eu coloquei www.google.com.br


  


2. Re: Correção do Squid + Iptables [RESOLVIDO]

Andrio Prestes Jasper
andriopj

(usa Fedora)

Enviado em 11/03/2009 - 10:24h

vamos por parte para poder detectar o erro

1> coloque ip fixo na sua eth0 (ip, mascara, gatway)
coloque ip fico na sua eth1 (ip, mascara, nao precisa gatway)
adicione os dns servers do seu provedor
desative o squid: service squid stop

veja se seu servidor navega na internet.... se sim, vamos entao compartilhar a internet pura:

2>adicione os seguintes comandos no seu firewall:

#################################################################

#Carregando os modulos
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_state
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ipt_multiport
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_tos
/sbin/modprobe ipt_limit
echo "Carregando modulos .........[ OK ]"

iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
echo "limpando regras .........[ OK ]"


#nao vi as seguintes regras no seu firewall, responsavel por ativar o roteamento kernel
# e compartilhamento entre as placas
# # Ativa roteamento no kernel
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
#################################################################

3>na sua rede interna, vc ira colocar os seguintes ips:
##ip a mais do que o do seu gateway (eth1), ex: eth1 192.168.0.1, de algum pc na sua rede 192.168.0.2
##mascara de sub rede = do seu gateway
##o gateway da sua rede vai ser o endereco da eth1 do seu servidor, ex: eth1 192.168.0.1
##dns, vai ser o mesmo que vc adicionou no resolv.conf:
nameserver 200.204.0.10
nameserver 200.204.0.138

veja se sua rede vai navegar


3. Re: Correção do Squid + Iptables [RESOLVIDO]

Andrio Prestes Jasper
andriopj

(usa Fedora)

Enviado em 11/03/2009 - 10:26h

desculpa, agora que eu vi o roteamento la em cima...
mas tenta fazer um script puro, e veja se vai navegar...
depois, vai adicionando as regras aos poucos e veja aonde ira barrar!


4. Re: Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 11/03/2009 - 11:02h

Obrigada, vou tentar e ja posto o resultado


5. Re: Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 12/03/2009 - 09:59h

Sou mulher rs

Então gente, to sem net na empresa, a telefonica está fazendo manutenção então por enquanto não vou conseguir testar, desculpe não responder antes, mas tive que improvisar pra poder responder o topico.

T+


6. Re: Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 12/03/2009 - 14:18h

Pessoal voltei, fiz os teste e continuo na mesma, servidor com internet ok, estação pingando mas sem acesso a internet :0(

Verdinho, qual é a sua sugestão?

Obrigada


7. Resposta

Davi lima
Verdinho

(usa Debian)

Enviado em 12/03/2009 - 18:51h

Estes e um passo a passo para vc compartilhar internet em uma rede local.

1) Vc vai em #/etc/network/interfaces
vc vai ver sa seguintes configuracoes

#Aqui vc edita as configuracoes de sua fornecedora de internet

#Internet Embratel
auto eth0
iface eth0 inet static
address 200.xxx.xxx.x
netmask 255.255.255.xxx
gateway 200.246.xxx.xx
broadcast 200.246.xxx.xx

#Internet Telemar para fazer redundancia - (este e opcional)
auto eth1
iface eth0 inet static
address 200.xxx.xxx.x
netmask 255.255.255.xxx
gateway 200.204.xxx.xx
broadcast 216.240.xxx.xx

# Aqui vc edita suas configuracoes de rede local
#Rede Local Tabajara Amazonas
auto eth2
iface eth1 inet static
address 10.0.0.1
netmask 255.255.xxx.0

Lembrando que sua eth0 1 2 3 seja ela qual for, deve esta configurado com ip fixo,
agora vamos fazer as configuracoes de seu firewal, esta parte e bem simples.

2) Passo

no meu caso >>> #/etc/init.d/firewall

# Declarando as Variaveis
# -------------------------------------------------------
iptables=/sbin/iptables
IF_LAN="eth0"
IF_WAN="eth1"
IF_WAN="eth2" <<< Opcional no caso de redundancia
IF_BASTAZINI="10.0.0.0/24" <<< conforme sua operadora de internet
PORTS1="1863:1864"
PORTS2="6891:6900"

# Loga tentativa de acesso a determinadas portas no Caso de Webmail
# -------------------------------------------------------
$iptables -A INPUT -p tcp --dport 21 -i $IF_WAN -j LOG --log-level 6 --log-prefix "FIREWALL: ftp:"
$iptables -A INPUT -p tcp --dport 25 -i $IF_WAN -j LOG --log-level 6 --log-prefix "FIREWALL: smtp:"
$iptables -A INPUT -p tcp --dport 80 -i $IF_WAN -j LOG --log-level 6 --log-prefix "FIREWALL: http:"
$iptables -A INPUT -p tcp --dport 110 -i $IF_WAN -j LOG --log-level 6 --log-prefix "FIREWALL: pop3:"

# Libera acesso a determinadas portas na sua maquina Esta parte e muito importante
# -------------------------------------------------------

$iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT # SSH
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A INPUT -p tcp --dport 8017 -j ACCEPT # TED
$iptables -A INPUT -p tcp --dport 443 -j ACCEPT
$iptables -A INPUT -p tcp --destination-port 53 -j ACCEPT # >>> DNS Transferencia de zona
$iptables -A INPUT -p udp --destination-port 53 -j ACCEPT # >>> DNS Consultas
$iptables -A INPUT -p TCP --dport 53 -i $IF_WAN -j ACCEPT
$iptables -A INPUT -p UDP --dport 53 -i $IF_WAN -j ACCEPT
$iptables -A INPUT -p tcp --dport 22 -i $IF_WAN -j ACCEPT
$iptables -A INPUT -p tcp --dport 3128 -i $IF_LAN -j ACCEPT
$iptables -A INPUT -p tcp --dport 80 -i $IF_LAN -j ACCEPT
$iptables -A INPUT -p tcp --dport 8080 -i $IF_LAN -j ACCEPT

# CONEXAO DE SAIDA ( Acesso da rede interna direto para Internet )
#---------------------------------------------------------------------
$iptables -A FORWARD -p tcp -i $IF_LAN -s 13.229.203/22 --dport 110 -j ACCEPT
$iptables -A FORWARD -p tcp -i $IF_LAN -s 13.229.200/22 -m multiport --dport 80,443 -j ACCEPT

# Proxy transparente
# -------------------------------------------------------
$iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

Depois e da um restart e su firewall e pronto


isso sill vc tem que botar o IP de conexao da speedy na sua eth, para que possa ser distribuida sua internet,


8. Re: Correção do Squid + Iptables [RESOLVIDO]

Alcimar
arc

(usa Slackware)

Enviado em 12/03/2009 - 22:39h

sill estou angustiado com seu problema desde seu outro post. adiciona meu msn ******* que ai vamos tentar fazer remotamente com VNC ai vc vai vendo como tem que fazer ok????


9. Re: Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 13/03/2009 - 09:56h

Pessoal a internet aqui ta cruel....as vezes funciona as vezes não =/

Verdinho, lá em conexão de saída eu altero pro meu ip da eth0 (speedy)?

Arc, agradeço sua disposição mas nao posso liberar acesso remoto, se tiver outra maneira agradeço ;0)

Obrigada


10. Re: Correção do Squid + Iptables [RESOLVIDO]

Alcimar
arc

(usa Slackware)

Enviado em 13/03/2009 - 12:11h

Sill pode deixar a eth0 com dhcp mesmo, pois o modem do speedy passa o ip automaticamente. Qto a outra maneira de ti ajudar acho vc primeiro deve compartilhar a internet com NAT sem usar o squid por enquanto, ai depois que as estações estiverem navegando vc coloca o squid no ar!!!

# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Sill editei a resposta no seu caso é

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

e não

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





11. Re: Correção do Squid + Iptables [RESOLVIDO]

Silvia
sill

(usa Debian)

Enviado em 13/03/2009 - 13:36h

ok, vou tentar :0)


12. Re: Correção do Squid + Iptables [RESOLVIDO]

Davi lima
Verdinho

(usa Debian)

Enviado em 14/03/2009 - 09:46h

Sill, isso mesmo vc tem que alterar para o IP de conexao da speedy e gateway tambem, geralmente a empresa fornece isso pra vc, no caso embratel, temos um bloco de IPs que vai de 200.208.xxx.1 a 200.208.xxx.59, ou seja, eu posso usar qualquer IP entre 1 e 59 na minha eth0,1,2, para distribuir internet, pois quem fornece esses ips e a propria embratel, no seu caso acho que vc deve ter algum ip que foi fornecido pela speedy,

depois que vc botar o ip na eth sua internet vai ser distribuida na sua rede, ai e so inseri regras de seguranca no seu firewall



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts