tenentblueberry
(usa Fedora)
Enviado em 28/05/2014 - 18:05h
Pessoal, tenho tido repetidos problemas na rede do meu trabalho com alguns sites, como p/ autenticar no eBay (HTTPS), o Hotmail (HTTPS) e o sistema de perícia médica q o DP tem q acessar. No caso do eBay, ele fica tentando... Até q volta à tela de login. No sistema de perícia, erro 104 do Squid (Read Error - Connection reset by peer). No Hotmail, eu n sei mesmo, mas ouço reclamações o tempo todo.
Vamos ao meu ambiente: Servidor Linux, firewall feito em iptables c/ Squid 3.3.4. Segue o meu firewall embaixo:
#!/bin/bash
# Script de firewall - ETE Republica - versao 0.4 Ricardo J. Pinheiro
# 10/10/2012 Baseado em
http://www.zago.eti.br/firewall/fireaula.sh
##### Variaveis
SERVICO=$(which iptables)
MODULO=$(which modprobe)
WGET=$(which wget)
REDE_DE_DENTRO="10.0.0.0/16"
PLACA_ADSL=eth0
PLACA_FAETEC=eth1
PLACA_DE_DENTRO=eth2
PLACA_DE_FORA=eth+
ROTEADOR_ADSL="192.168.1.254"
PROXY_FAETEC="10.0.0.2"
INETSERV="10.0.0.5"
WEBSERV="10.0.0.4"
PORTAS_ABERTAS_REDIRECIONADAS="80 443 563 4410 5228 7001 8889 31416"
#
#echo "Rota da placa de dentro, e definicao da rota padrao (ADSL)"
#ip route add $REDE_DE_DENTRO via $INETSERV
#ip route add default via $ROTEADOR_ADSL
#route add -host $PROXY_FAETEC dev $PLACA_FAETEC
#route del -host 10.0.0.2 dev eth1
echo "Descendo modulos e zerando regras"
/sbin/depmod -a
$SERVICO -P INPUT ACCEPT
$SERVICO -P OUTPUT ACCEPT
$SERVICO -P FORWARD ACCEPT
$SERVICO -F
$SERVICO -X
#
echo "Subindo modulos"
$MODULO ip_tables
$MODULO iptable_filter
$MODULO ipt_LOG
$MODULO ipt_REJECT
$MODULO ipt_MASQUERADE
$MODULO x_tables
$MODULO xt_limit
$MODULO xt_state
$MODULO xt_multiport
$MODULO nf_nat
$MODULO nf_nat_ftp
$MODULO nf_conntrack
$MODULO nf_conntrack_ftp
$MODULO nf_conntrack_ipv4
#
echo "Recolocando as tabelas"
$SERVICO -t nat -F
$SERVICO -t nat -X
$SERVICO -t mangle -F
$SERVICO -t mangle -X
#
echo "Pacotes establizados passam s/ problemas."
$SERVICO -A INPUT -m state --state INVALID -j DROP
$SERVICO -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#
echo "Libera o loopback."
$SERVICO -A INPUT -i lo -j ACCEPT
#
echo "Libera o acesso interno."
$SERVICO -A INPUT -i $PLACA_DE_DENTRO -s $REDE_DE_DENTRO -j ACCEPT
$SERVICO -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#
echo "Limita o numero de conexoes por maquina a 50 na porta 80"
$SERVICO -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset
#
echo "Bloqueio ao Ultrasurf."
$SERVICO -A FORWARD -d 65.49.14.0/24 -j LOG --log-prefix "=UltraSurf= "
#
echo "Aceita conexoes apenas a partir do usuario proxy (ou seja, do Squid)."
$SERVICO -t filter -A OUTPUT -p tcp -s $REDE_DE_DENTRO -m multiport --dport http,https -m owner ! --uid-owner proxy -j REJECT --reject-with tcp-reset
#
echo "Bloqueio ao traceroute."
$SERVICO -A INPUT -p udp -i $PLACA_DE_FORA --dport 33435:33525 -j DROP
#
echo "Libera acesso interno e externo para SSH e servidor Web."
$SERVICO -A INPUT -p tcp -m multiport -i $PLACA_ADSL --dport 22,53,80,443,3128 --tcp-flags SYN,RST,ACK SYN -j ACCEPT
$SERVICO -A INPUT -p tcp -m multiport -i $PLACA_DE_DENTRO --dport 22,53,80,443,3128 --tcp-flags SYN,RST,ACK SYN -j ACCEPT
$SERVICO -A INPUT -p udp -m multiport -i $PLACA_DE_DENTRO --dport 53 -j ACCEPT
#
echo "Redireciona porta 80 pela placa externa p/ o servidor Web."
$SERVICO -t nat -A PREROUTING -i $PLACA_ADSL -p tcp --dport 80 -j DNAT --to-dest $WEBSERV
$SERVICO -A FORWARD -p tcp -i $PLACA_ADSL --dport 80 -d $WEBSERV -j ACCEPT
#
echo "Mascarando tudo de dentro pela placa de dentro da rede, p/ 3129"
GID=$(id -g proxy)
for PORTAS in $PORTAS_ABERTAS_REDIRECIONADAS
do
$SERVICO -t nat -A OUTPUT -p tcp --dport $PORTAS -m owner --gid-owner $GID -j ACCEPT
$SERVICO -t nat -A OUTPUT -p tcp --dport $PORTAS -j DNAT --to-destination $INETSERV:3129
done
#
echo "NAT para os demais servicos"
$SERVICO -A POSTROUTING -t nat -o $PLACA_ADSL -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
#
echo "Protecao contra o ping-of-death"
$SERVICO -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#
echo "Protecao contra syn-floods"
$SERVICO -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
#
echo "Protecao contra port-scanners avancados"
$SERVICO -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#
echo "DROP nos pacotes TCP indesejaveis"
$SERVICO -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW sem syn: "
$SERVICO -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
#
echo "DROP e LOG de port-scanners"
$SERVICO -N SCANNER
$SERVICO -A SCANNER -m limit --limit 15/m -j LOG --log-level 6 --log-prefix "DIVERSOS: port scanner: "
$SERVICO -A SCANNER -j DROP
$SERVICO -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags ALL NONE -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags ALL ALL -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $PLACA_ADSL -j SCANNER
$SERVICO -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $PLACA_ADSL -j SCANNER
#
echo "Log de acesso por porta"
$SERVICO -A INPUT -p tcp --dport 21 -i $PLACA_ADSL -j LOG --log-level 6 --log-prefix "FIREWALL: ftp: "
$SERVICO -A INPUT -p tcp --dport 80 -i $PLACA_ADSL -j LOG --log-level 6 --log-prefix "FIREWALL: http: "
$SERVICO -A INPUT -p tcp --dport 3128 -i $PLACA_ADSL -j LOG --log-level 6 --log-prefix "FIREWALL: squid: "
#
echo "DROP no samba"
$SERVICO -A INPUT -p tcp -i $PLACA_ADSL --syn --dport 139 -j DROP
$SERVICO -A INPUT -p tcp -i $PLACA_ADSL --syn --dport 138 -j DROP
$SERVICO -A INPUT -p tcp -i $PLACA_ADSL --syn --dport 137 -j DROP
#
echo "DROP no NFS (portmap)"
$SERVICO -A INPUT -p tcp -i $PLACA_ADSL --syn --dport 111 -j DROP
#
echo "Reinicia o fail2ban"
/etc/init.d/fail2ban restart 2>&1 > /dev/null
#
echo "DROP no resto"
$SERVICO -A FORWARD -p tcp --syn -j DROP
#
echo "Pronto"
# MSX r0x a lot
Vamos ao meu Squid.conf - cortei alguns pedaços, pq n são relevantes, eu tenho ACLs p/ cada setor daqui, e http_access allow ou deny, dependendo do horário - esse squid.conf é reescrito p/ liberar ou bloquear o acesso a esses setores:
# Porta 3128 pro Squid
#
http_port 10.0.0.254:3128
http_port 10.0.0.254:3129 intercept
#
icp_port 0
#
# Define 1024 Mb pro Squid usar
#
cache_mem 1024 MB
cache_swap_low 90
cache_swap_high 95
#
# Mais de 100 Mb, o Squid descarta do cache.
#
maximum_object_size_in_memory 64 KB
maximum_object_size 100 MB
minimum_object_size 0 KB
#
# Politica de atualizacao de cache
#
cache_replacement_policy heap GDSF
memory_replacement_policy heap LFUDA
#
# Define 52 Gb de espaco pro squid, e onde estarao os logs.
#
cache_dir aufs /var/spool/squid/ 52224 4 16
cache_access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
#
client_netmask 255.255.255.255
log_mime_hdrs off
pid_filename /var/run/squid.pid
request_header_max_size 128 KB
#
# Mensagens de erro
#
error_default_language pt-br
error_log_languages on
#
# Como o Squid lida com FTP anonimo.
#
ftp_user Squid@
ftp_passive on
ftp_sanitycheck on
#
dns_retransmit_interval 10 seconds
dns_timeout 5 minutes
dns_nameservers 127.0.0.1 10.0.0.5 10.0.0.254 208.67.222.222 208.67.220.220 8.8.8.8 8.8.4.4
#
hosts_file /etc/hosts
#
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
#
quick_abort_min 128 KB
quick_abort_max 1024 KB
quick_abort_pct 95
fqdncache_size 1024
#
negative_ttl 5 minutes
positive_dns_ttl 5 minutes
forward_timeout 5 minutes
negative_dns_ttl 5 minutes
connect_timeout 120 seconds
peer_connect_timeout 90 seconds
read_timeout 10 minutes
request_timeout 5 minutes
persistent_request_timeout 5 minutes
client_lifetime 5 minutes
half_closed_clients off
pconn_timeout 60 seconds
shutdown_lifetime 60 seconds
#
# As regras de acesso
#
acl todos src all
acl ftp proto FTP
acl SSL_ports port 22 443
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 407 2082 2083 8663 7001 7777 8080 8081 9091
acl PURGE method PURGE
acl CONNECT method CONNECT
acl POST method POST
acl NOCACHE url_regex 10.0.0.0/16 \?
#
# Listas de controle de acesso
#
acl escola src 10.0.0.0/16
acl salarede src 10.0.0.0/24
(...)
acl wifi_funcionarios src 10.0.43.0/24
#
# ACLs de filtragem de acesso
#
# ACL para garantir acesso direto
#
acl passareto dstdom_regex "/etc/squid/blocked/acessodireto.txt"
#
# ACLs para filtragem por palavra (proibidos e liberados)
#
acl palavras_proibidas url_regex "/etc/squid/blocked/proibidos.txt"
acl palavras_liberadas url_regex "/etc/squid/blocked/liberados.txt"
#
# ACLs para filtragem
#
acl downloads_proibidos urlpath_regex "/etc/squid/blocked/downloads_proibidos.txt"
acl downloads_liberados urlpath_regex "/etc/squid/blocked/downloads_liberados.txt"
#
# ACL para filtragem do MSN, bloqueio de navegacao por IP e p/ o TeamViewer
#
acl msn url_regex -i /gateway/gateway.dll
acl Block_IP_Navegacao dstdom_regex ^(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)|(\[([0-9af]+)?:([0-9af:]+)?:([0-9af]+)?\]))
acl teamviewer browser -i .DynGate.*
#
# cgi-bins nao ficam armazenados.
#
acl extensoesdinamicas urlpath_regex cgi-bin \? scripts \.php$ \.asp$ \.action$ \.css$ \.dll$ \.do$ \.exe$ \.ftl$ \.js$ \.jsp$ \.lzx$ \.vm$\.aspx$
no_cache deny extensoesdinamicas
#
# Bloqueio aos sites relacionados ao TOR.
#
acl tor dst "/etc/squid/blocked/tor.txt"
http_access deny tor
#
# Teste: Bloqueio ao Skype
#
acl Skype_UA browser ^skype
http_access deny Block_IP_Navegacao todos
http_access deny Skype_UA
#
acl validUserAgent browser \S+
http_access deny !validUserAgent
#
# Regras de bloqueio de acesso
#
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow ftp todos
http_access allow palavras_liberadas todos
http_access deny palavras_proibidas todos
http_access allow downloads_proibidos salarede
http_access allow downloads_liberados todos
http_access deny downloads_proibidos todos
http_access deny msn todos
http_access deny teamviewer todos
#
# Requisicoes que facam uso de CONNECT e locais, sao sempre diretas.
#
via off
forwarded_for delete
always_direct allow CONNECT
always_direct allow POST
always_direct allow all
#
# Nao faz cache dos enderecos locais
#
no_cache deny NOCACHE
#
# Redirecionamento para o squidGuard
#
url_rewrite_program /usr/local/bin/squidGuard -c /etc/squid/squidGuard.conf
url_rewrite_children 10
url_rewrite_access deny localhost
#
http_access allow biblioteca
(...)
http_access deny outsiders
#
# ACLs p/ os Delay Pools.
#
acl download url_regex -i ftp \.png \.vpx \.webm \.exe \.mp3 \.mp4 \.tar.gz \.gz \.tar.bz2 \.bz2 \.rpm \.zip \.rar \.7z \.avi \.mpg \.mpeg \.rm \.iso \.ra \.wav \.mov \.dat \.mpe \.mid \.mp4 \.midi \.rmi \.wma \.wmv \.ogg \.ogm \.m1v \.mp2 \.mpa \.wax \.m3u \.asx \.wpl \.wmx \.dvr-ms \.snd \.au \.aif \.asf \.m2v \.m2p \.ts \.tp \.trp \.div \.divx \.mod \.vob \.aob \.dts \.ac3 \.cda \.vro \.deb \.rpm
acl streaming url_regex -i \.fbcdn.net \.youtube\.com\/videoplayback \.youtube\.com/videodownload \.youtube\.com\/get_video \.youtube\.com\/watch \.cache[a-z0-9]?[a-z0-9]?[a-z0-9]?\.googlevideo\.com\/videoplayback \.cache[a-z0-9]?[a-z0-9]?[a-z0-9]?\.googlevideo\.com\/get_video http:\/\/[a-z][a-z]\.youtube\.com proxy\-[0-9][0-9]\.dailymotion\.com\/ [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?\.xtube\.com\/(.*)flv bitcast\.vimeo\.com\/vimeo\/videos\/ va\.wrzuta\.pl\/wa[0-9][0-9][0-9][0-9]?
#
acl gulosos src "/etc/squid/blocked/ip.pesado.txt"
acl regime src "/etc/squid/blocked/ip.leve.txt"
#
# 4 Delay Pools
#
delay_pools 4
#
# delay classes - Classe 3
#
delay_class 1 3
delay_class 2 3
delay_class 3 3
delay_class 4 3
#
# delay parameters - classe 3
#
delay_parameters 1 640000/640000 640000/640000 640000/640000
delay_parameters 2 640000/640000 640000/640000 640000/640000
delay_parameters 3 -1/-1 -1/-1 -1/-1
delay_parameters 4 -1/-1 -1/-1 -1/-1
#
# delay access - Redirecionando acesso
#
delay_access 1 allow gulosos download
delay_access 2 allow gulosos streaming
delay_access 3 allow regime download
delay_access 4 allow regime streaming
#
# Refresh Pattern
# 1 ano = 525600 minutos, 1 mês = 43200 minutos, 1 day = 1440 minutos
#
# Diversos
#
refresh_pattern \.(ico|video-stats) 43200 100% 43200
refresh_pattern ^.*(utm\.gif|ads\?|rmxads\.com|ad\.z5x\.net|bh\.contextweb\.com|bstats\.adbrite\.com|a1\.interclick\.com|ad\.trafficmp\.com|ads\.cubics\.com|ad\.xtendmedia\.com|\.googlesyndication\.com|advertising\.com|yieldmanager|game-advertising\.com|pixel\.quantserve\.com|adperium\.com|doubleclick\.net|adserving\.cpxinteractive\.com|syndication\.com|media.fastclick.net).* 43200 20% 43200
refresh_pattern ^.*safebrowsing.*google 43200 100% 43200
refresh_pattern ^http://((cbk|mt|khm|mlt)[0-9]?)\.google\.co(m|\.uk) 43200 100% 43200
refresh_pattern ytimg\.com.*\.jpg 43200 100% 43200
refresh_pattern photobucket.*\.(jp(e?g|e|2)|tiff?|bmp|gif|png) 43200 100% 43200
refresh_pattern vid\.akm\.dailymotion\.com.*\.on2\? 43200 100% 43200
refresh_pattern mediafire.com\/images.*\.(jp(e?g|e|2)|tiff?|bmp|gif|png) 43200 100% 43200
refresh_pattern ^http:\/\/images|pics|thumbs[0-9]\. 43200 100% 43200
#
# Antivirus, Adobe.com e Windows Update
#
refresh_pattern avast.com/.*\.(vpu|vpaa|cab|stamp|exe) 43200 100% 43200
refresh_pattern adobe.com/.*\.(msp) 43200 100% 43200
refresh_pattern au.download.windowsupdate.com/.*.(cab|exe|msi) 43200 100% 43200
refresh_pattern download.microsoft.com/.*.(cab|exe|msi) 43200 100% 43200
refresh_pattern msgruser.dlservice.microsoft.com/.*.(cab|exe|msi) 43200 100% 43200
refresh_pattern windowsupdate.com/.*.(cab|exe|msi) 43200 100% 43200
refresh_pattern
www.microsoft.com/.*.(cab|exe|msi) 43200 100% 43200
#
#Facebook - imagens
#
refresh_pattern -i \.facebook.com.*\.(jpg|png|gif) 43200 100% 43200
refresh_pattern -i \.fbcdn.net.*\.(jpg|gif|png|swf|mp3) 43200 100% 43200
refresh_pattern static\.ak\.fbcdn\.net*\.(jpg|gif|png) 43200 100% 43200
refresh_pattern ^http:\/\/profile\.ak\.fbcdn.net*\.(jpg|gif|png) 43200 100% 43200
#
# Todos os arquivos
#
refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt) 43200 99% 43200
refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar) 43200 99% 43200
refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll) 43200 99% 43200
refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob) 43200 99% 43200
refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv) 43200 99% 43200
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
#
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320
#
# Nao caiu numa das regras de cima, corta o acesso.
#
tcp_outgoing_address 10.10.10.130 DINFO
tcp_outgoing_address 192.168.1.64 ADSL1
tcp_outgoing_address 192.168.1.64 ADSL2
tcp_outgoing_address 192.168.1.64 ADSL3
#
# Acesso cortado para quem escapar da regra anterior.
#
http_access deny todos
icp_access allow todos
#
http_reply_access allow todos
miss_access allow todos
#
cache_mgr Squid's_BAFH
cache_effective_user proxy
cache_effective_group proxy
visible_hostname firewall
#
logfile_rotate 7
#
icon_directory /usr/share/squid3/icons
coredump_dir /tmp
client_persistent_connections on
server_persistent_connections on
pipeline_prefetch off
store_dir_select_algorithm least-load
ie_refresh on
htcp_access deny todos
htcp_clr_access deny todos
ident_lookup_access deny todos
snmp_access deny todos
#
#MSX r0x a lot
Já tentei de tudo, inclusive fazer a conexão direto, s/ proxy e só fazendo o MASQUERADE do iptables. S/ sucesso. Alguma ideia?