Liberar navegação HTTPS

1. Liberar navegação HTTPS

Fernando Cesar Vaini
vaini

(usa Debian)

Enviado em 11/09/2012 - 14:48h

Fala galera. Estou com um problemão, que sozinho não consegui resolver.
Preciso liberar o acesso a sites https. Não sei o porque esta sendo bloqueado.
É tudo muito simples, navegação completa com apenas alguns sites bloqueados.

Preciso disso com certa urgencia, mas não dei conta não. Agradeço a ajuda da comunidade.
Segue abaixo meu firewall, bem como squid.

#!/bin/sh
IPTABLES="/sbin/iptables"
WAN=ppp0
LAN=eth1
REDE="192.168.0.0/24"

#Carregando modulos do iptables
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter

#limpando tudo
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

#politica padrao
$IPTABLES -t filter -P INPUT DROP
$IPTABLES -t filter -P OUTPUT ACCEPT
$IPTABLES -t filter -P FORWARD DROP

#ativando roteamento de pacote
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to 3128

#evita problemas de conexao quando o ip externo for dinamico (programa diald)
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#bloqueio a syn-flood, ip spoofing, port scanner e icmp falsos
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#permite que conexoes ja criadas pela LAN retornem sem criar novas regras
$IPTABLES -t filter -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -t filter -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

#bloqueando synfloods e port scanners
$IPTABLES -t filter -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPTABLES -t filter -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP

#liberando acesso ao servidor
$IPTABLES -t filter -A INPUT -i lo -j ACCEPT
$IPTABLES -t filter -A OUTPUT -o lo -j ACCEPT

#liberando passagem de pacotes entre interfaces
$IPTABLES -t filter -A FORWARD -i $LAN -o $WAN -j ACCEPT

#aceitando e protegendo ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPTABLES -t filter -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -t filter -A INPUT -p icmp -m state --state INVALID -j DROP
$IPTABLES -t filter -A OUTPUT -p icmp -m state --state INVALID -j DROP
$IPTABLES -t filter -A FORWARD -p icmp -m state --state INVALID -j DROP

#liberandos portas para acesso interno
$IPTABLES -t filter -A INPUT -i $LAN -p tcp -m multiport --dports 80,3128,10000 -j ACCEPT
$IPTABLES -t filter -A INPUT -i $LAN -p udp -m multiport --dports 80,3128,10000 -j ACCEPT

#liberando samba para a rede interna
$IPTABLES -t filter -A INPUT -i $LAN -s $REDE -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -t filter -A INPUT -i $LAN -s $REDE -p udp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -t filter -A OUTPUT -o $LAN -s $REDE -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -t filter -A OUTPUT -o $LAN -s $REDE -p udp -m multiport --dports 137,138,139,445 -j ACCEPT

#liberando acesso externo ao webmin
$IPTABLES -t filter -A INPUT -i $WAN -p tcp --dport 10000 -j ACCEPT

#liberando DNS
$IPTABLES -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPTABLES -t filter -A FORWARD -i $LAN -p udp --dport 53 -j ACCEPT

#liberando HTTPS
$IPTABLES -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -t filter -A FORWARD -i $LAN -p tcp --dport 443 -j ACCEPT

#liberando SMTP/POP para a LAN
$IPTABLES -t filter -A FORWARD -i $LAN -p tcp --dport 25 -j ACCEPT
$IPTABLES -t filter -A FORWARD -i $LAN -p tcp --dport 110 -j ACCEPT

#liberando entrada/retorno do SSH
$IPTABLES -t filter -A INPUT -p tcp --dport 1226 -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp --dport 1226 -j ACCEPT

#liberando TS
$IPTABLES -t filter -A INPUT -p tcp --dport 3389 -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp --dport 3389 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3389

#liberando servidor das cameras
$IPTABLES -t filter -A INPUT -p tcp --dport 2550 -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp --dport 2550 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 2550 -j DNAT --to 192.168.0.3:2550

#liberando acesso remoto via radmin
$IPTABLES -t filter -A INPUT -p tcp --dport 60020 -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp --dport 60020 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 60020 -j DNAT --to 192.168.0.20:61145

#setando alta prioridade para a porta 1433
$IPTABLES -t mangle -A INPUT -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A OUTPUT -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A FORWARD -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A PREROUTING -p tcp --dport 1433 -j TOS --set-tos 16

#fim das regras


SQUID.CONF
http_port 3128 transparent
visible_hostname LINUX
hierarchy_stoplist cgi-bin?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 1024 MB
maximum_object_size_in_memory 100 KB
maximum_object_size 15360 KB
minimum_object_size 0 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
cache_replacement_policy lru
memory_replacement_policy lru
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
access_log /var/log/squid/access.log squid
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 3000 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_swap_log /var/spool/squid/swap.log
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
dns_nameservers 200.204.0.10 200.204.0.138

# >> ACLs <<
acl all src 0.0.0.0/0.0.0.0
acl rede src 192.168.0.0/24
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 407
acl Safe_ports port 25
acl Safe_ports port 110
acl purge method PURGE
acl CONNECT method CONNECT

acl SitesBloqueados url_regex -i "/etc/squid/sites.deny"
acl SemCache url_regex -i "/etc/squid/sites.nocache"

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny to_localhost

no_cache deny SemCache
http_access deny SitesBloqueados
http_access allow rede
http_access deny all



  


2. Re: Liberar navegação HTTPS

Fernando Cesar Vaini
vaini

(usa Debian)

Enviado em 11/09/2012 - 21:43h

up


3. Re: Liberar navegação HTTPS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 11/09/2012 - 21:51h

Verifique se não é o squid que est bloqueando, como falou que é apenas alguns sites é bem provvel que seja ele.


## Se for squid
tail -f /var/log/squid/access.log
## se for squid3
tail -f /var/log/squid3/access.log


como esta usando o "url_regex" qualquer site que contenha um palavra que esta dentro do seu sites_deny sera bloqueado. se quer bloquear um dominio pode usar o "dstdomain" ex:

acl sites_deny dstdomain "/etc/squid/sites_deny"

Dentro do arquivo coloque um dominio por linha:
.facebook.com
.orkut.com
.hotmail.com
.live.com
etc....


4. Re: Liberar navegação HTTPS

Fernando Cesar Vaini
vaini

(usa Debian)

Enviado em 12/09/2012 - 14:37h

andrecanhadas, obrigado pela ajuda, mas não é problema no squid.
Os sites que foram bloqueados são sites pornograficos.

aguardando nova ajuda.


5. Re: Liberar navegação HTTPS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/09/2012 - 20:50h

Bom você estava especificando tabela filter em todas as suas regras o que não é necessário pois se não especificar outra sera usado ela pois é tabela filter é a default.

Fiz umas alterações na limpeza das regras faz um teste com esse firewall apenas mudei a parte que limpa as regras e removi os -t filter.

De resto não vi nada de errado em nenhuma regra.

Mas explique melhor a pagina não abre dando um erro no tunel ou da acesso negado?
Outra coisa não deixe a porta padrão do TS aberta abra uma outra porta alta e redirecione para o ip:3389 podendo ter acesso TS a mais de um maquina Ex:

#liberando TS
$IPTABLES -A INPUT -p tcp --dport 33899 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 33899 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 33899 -j DNAT --to 192.168.0.2:3389


Segue o script:


#!/bin/sh
IPTABLES="$IPTABLES"
WAN=ppp0
LAN=eth1
REDE="192.168.0.0/24"

#Carregando modulos do iptables
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter

#limpando tudo
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -F
$IPTABLES -t raw -F
$IPTABLES -X
$IPTABLES -Z


#politica padrao
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

#ativando roteamento de pacote
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to 3128

#evita problemas de conexao quando o ip externo for dinamico (programa diald)
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#bloqueio a syn-flood, ip spoofing, port scanner e icmp falsos
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#permite que conexoes ja criadas pela LAN retornem sem criar novas regras
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

#bloqueando synfloods e port scanners
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 1/s -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

#liberando acesso ao servidor
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#liberando passagem de pacotes entre interfaces
$IPTABLES -A FORWARD -i $LAN -o $WAN -j ACCEPT

#aceitando e protegendo ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -p icmp -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -p icmp -m state --state INVALID -j DROP

#liberandos portas para acesso interno
$IPTABLES -A INPUT -i $LAN -p tcp -m multiport --dports 80,3128,10000 -j ACCEPT
$IPTABLES -A INPUT -i $LAN -p udp -m multiport --dports 80,3128,10000 -j ACCEPT

#liberando samba para a rede interna
$IPTABLES -A INPUT -i $LAN -s $REDE -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -A INPUT -i $LAN -s $REDE -p udp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN -s $REDE -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN -s $REDE -p udp -m multiport --dports 137,138,139,445 -j ACCEPT

#liberando acesso externo ao webmin
$IPTABLES -A INPUT -i $WAN -p tcp --dport 10000 -j ACCEPT

#liberando DNS
$IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -i $LAN -p udp --dport 53 -j ACCEPT

#liberando HTTPS
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -A FORWARD -i $LAN -p tcp --dport 443 -j ACCEPT

#liberando SMTP/POP para a LAN
$IPTABLES -A FORWARD -i $LAN -p tcp --dport 25 -j ACCEPT
$IPTABLES -A FORWARD -i $LAN -p tcp --dport 110 -j ACCEPT

#liberando entrada/retorno do SSH
$IPTABLES -A INPUT -p tcp --dport 1226 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 1226 -j ACCEPT

#liberando TS
$IPTABLES -A INPUT -p tcp --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 3389 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 3389 -j DNAT --to 192.168.0.2:3389

#liberando servidor das cameras
$IPTABLES -A INPUT -p tcp --dport 2550 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 2550 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 2550 -j DNAT --to 192.168.0.3:2550

#liberando acesso remoto via radmin
$IPTABLES -A INPUT -p tcp --dport 60020 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport 60020 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 60020 -j DNAT --to 192.168.0.20:61145

#setando alta prioridade para a porta 1433
$IPTABLES -t mangle -A INPUT -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A OUTPUT -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A FORWARD -p tcp --dport 1433 -j TOS --set-tos 16
$IPTABLES -t mangle -A PREROUTING -p tcp --dport 1433 -j TOS --set-tos 16

#fim das regras



Se não funcionar mude a politica padrão do Forward para accept só para testar.


6. S O C O R R O ! ! !

Fernando Cesar Vaini
vaini

(usa Debian)

Enviado em 12/09/2012 - 22:42h

Fiz os testes e nao deu certo.

Nem as alterações no script, nem o FORWARD em ACCEPT.

Eu ja reli diversas vezes, e tb nao encontrei erro.
Com relação a erros, simplesmente nao carrega a pagina. Fica tentando carregar e nao carrega até que da a mensagem A pagina nao pode ser exibida.

No squid nem aparece o acesso, ou seja, ele nem liberou e nem bloqueou.




7. Re: Liberar navegação HTTPS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/09/2012 - 22:45h

Tem algum roteador por traz de seu firewall? se tiver entre ns configs dele e altere o MTU para algo entre 1400 e 1492 vá alterando de 10 em 10 para ver o que se encaixa melhor a sua conexão band larga.

Outra coisa veja se setando o dns pelo squid se carrega a pagina:

Adicione no seu squid.conf:

dns_nameservers 8.8.8.8 8.8.4.4



8. Re: Liberar navegação HTTPS

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 18/09/2012 - 18:11h

Olá Vaini, acho que é válida a tentativa de usar política ACCEPT em FORWARD.


9. Re: Liberar navegação HTTPS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 18/09/2012 - 20:17h

Não vi no seu firewall o roteamento de pacotes ativados nem o MASQUERADE


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

Se essa maquina não for o gateway só vai funcionar colocando o proxy no navegador


10. Re: Liberar navegação HTTPS

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 18/09/2012 - 22:38h

Notei no seu arquivo squid.conf que postou, esta utilizando proxy transparente né, então é por isso, proxy transparente apenas usa HTTP, e não HTTPS.
Faz um teste só pra confirmar mesmo, para o squid, deixa apenas o script firewall em execução, verifique se acessa normal sites de e-mails e outros que usam HTTPS.

Depois que fizer o teste acima, coloque no seu squid.conf

acl Safe_ports port 443 #https
http_access deny !Safe_ports


Nos mande o feedback!


11. Re: Liberar navegação HTTPS

Fernando Cesar Vaini
vaini

(usa Debian)

Enviado em 19/09/2012 - 07:32h

Bom dia galera.

Respondendo às perguntas de todos:

Não tenho nenhum roteador por traz do firewall.
Já alterei os dns no squid, mas também nao resolveu.

Já coloquei a politica do FORWARD em ACCEPT e também nao resolveu.

O roteamento foi fim ativado, na linha 25 e 26.
Essa máquina é o gateway.

Quanto ao funcionamento do HTTPS em proxy transparente, eu ja pesquisei bastante e vi que não funciona. Porém
nas linhas 76, 77 e 78 tem as regras libeando o HTTPS, e eu já cheguei a fazer uma regra para o HTTPS não ser
redirecionado para o squid. Tipo:
$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 443 -j ACCEPT

Em todo o caso ja deixei apenas o firewall em execução sem redirecionar para o squid, e também não funcionou.
Quanto às ACLs
acl Safe_ports port 443 #https
http_access deny !Safe_ports

ja existem.

Ja realizei todos os testes mencionados pelos amigos até agora, mas sem resultados positivos.

Já troquei as placas de rede para fazer testes, também sem resultados.

Estou pensando em ir por partes, tipo assim, vou escrever apenas um script simples, liberando a net, depois vou acrescentando
regra por regra até achar a que esta travando o https.

Será que pode ser a sequencia das regras??



12. Re: Liberar navegação HTTPS

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 19/09/2012 - 07:45h

Notei no seu script as variáveis referente as interfaces essas abaixo
WAN=ppp0
LAN=eth1

Então ppp0 porque a esta conectado diretamente no modem ADSL
e eth1, não seria eth0 ? Seria eth1 se no lugar de ppp0 fosse eth0, mas nesse como seu modem esta em bridge, então a interface é ppp0.

Poste a saída do comando abaixo:
#ifconfig -a

em ppp0 deverá aparecer o IP público fornecido pelo seu provedor de internet
e na outra interface o IP privado que definiu para a rede.



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts