LSSilva
(usa Outra)
Enviado em 24/02/2019 - 00:11h
Boa Noite,
*Servidor Fisico Cent os7 c/ 2 placas de redes físicas
--> Beleza, então, pelo que vi a eth1 é a placa que dedicou à rede interna. Certo?
*com Autenticação Local -> somente computadores -> Usuários acessarão somente Sites
--> Cenário interessante.
*Tem Selinux/firewalld ativados?
--> Desativei no inicio da instalação
Show (não é legal do ponto de vista da segurança, mais vamos lá...)
*Poste sua configuração de Proxy (igual está na máquina). Como disse segui o tutorial que mencionei acima...
## DEFINE A PORTA DE CONEXAO DO SQUID
http_port 3128
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ##
maximum_object_size 4096 KB
## DEFINE O TAMANHO MINIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ##
minimum_object_size 0 KB
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE DE MEMORIA ##
maximum_object_size_in_memory 64 KB
## DEFINE A QUANTIDADE DE MEMORIA RAM A SER ALOCADA PARA CACHE ##
cache_mem 512 MB
## AJUSTA A PERFORMANCE EM CONEXOES PIPELINE ##
pipeline_prefetch on
## CACHE DE FQDN ##
fqdncache_size 1024
## OPCOES DE REFRESH PATTERN ##
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
## DEFINE A PORCENTAGEM DO USO DO CACHE ##
cache_swap_low 90
cache_swap_high 95
## ARQUIVO DE LOGS DO SQUID ##
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
## DEFINE O LOCAL DO CACHE ##
cache_dir ufs /var/spool/squid 1600 16 256
## CONTROLE DE ROTACAO DOS ARQUIVOS DE LOGS ##
logfile_rotate 10
## ARQUIVO ONDE CONTEM OS ENDERECOS LOCAIS DA REDE ##
hosts_file /etc/hosts
## ACLS - PORTAS PADROES LIBERADAS ##
acl SSL_ports port 80 #HTTP
acl SSL_ports port 443 #HTTPS
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 CONNECT method CONNECT
### DEFININDO MODO DE AUTENTICACAO
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/usuarios
auth_param basic children 5
auth_param basic realm "DIGITE SEU USUARIO E SENHA PARA ACESSO A INTERNET:"
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
### ACL PARA GARANTIR A AUTENTICACAO DO USUARIO NOS SITES ###
acl autenticados proxy_auth REQUIRED
## BLOQUEIA O ACESSO UNSAFE PORTS ##
http_access deny !Safe_ports
## Deny CONNECT to other than secure SSL port ##
http_access deny CONNECT !SSL_ports
## SITES BLOQUEADOS PARA ACESSO ##
acl sites-bloqueados url_regex -i "/etc/squid/regras/sites_bloqueados"
## SITES LIBERADOS PARA ACESSO ##
acl sites-liberados url_regex -i "/etc/squid/regras/sites_liberados"
## DEFININDO A ORDEM DAS REGRAS - ACLS ##
http_access deny sites-bloqueados
http_access allow sites-liberados
http_access allow autenticados
http_access deny all
http_reply_access allow all
icp_access allow all
miss_access allow all
## NOME QUE IRA APARECER NA TELA DE ERRO OU BLOQUEIO DO SQUID ##
visible_hostname proxy.tidahora.com.br
## DIRETORIO DAS PAGINAS DE ERROS ##
error_directory /usr/share/squid/errors/pt-br
## OUTRAS OPCOES DE CACHE ##
cache_effective_user squid
coredump_dir /var/spool/squid
*Poste sua configuração de firewall.
-->o básico ->> iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Beleza então!
Se eu entendi corretamente, eth1 é sua placa de rede local e eth0, de internet.
O que encontrei em desacordo é a regra de direcionamento de pacotes entrantes na porta 80 para porta 3128, quando não se está utilizando proxy transparente, que seria: "http_port 3128 intercept".
Nesse caso seu, ao configurar proxy autenticado, deve-se esquecer proxy transparente. Então um firewall básico para seu server teria, se eu estiver correto, a seguinte sintaxe:
#!/bin/bash
#variaveis
iflocalnet="eth1"
#ALTERAR DE ACORDO COM SUA REDE LOCAL ABAIXO
localnet="192.168.0.0/24"
ifwan="eth0"
start (){
#Política de firewall
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Limpar regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
##############
#Filter(INPUT)
##############
#Drop em pacotes inválidos
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Input "
iptables -A INPUT -m state --state INVALID -j DROP
###############
#Filter(OUTPUT)
###############
iptables -A OUTPUT -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Output "
iptables -A OUTPUT -m state --state INVALID -j DROP
################
#Filter(FORWARD)
################
#Dropa pacotes inválidos
iptables -A FORWARD -m state --state INVALID -j LOG --log-prefix "Firewall: Invalid Forward "
iptables -A FORWARD -m state --state INVALID -j DROP
#Regra de anti-spoof
iptables -A FORWARD -i $iflocalnet ! -s $localnet -j LOG --log-prefix "Firewall: Spoofed Packet "
iptables -A FORWARD -i $iflocalnet ! -s $localnet -j DROP
#Serviços bloqueados (Squid irá gerenciar conexão através da porta 3128)
iptables -A FORWARD -p tcp -i $iflocalnet --dport 80 -s $localnet -j REJECT
iptables -A FORWARD -p tcp -i $iflocalnet --dport 443 -s $localnet -j REJECT
##################
#Nat - PostRouting
##################
iptables -t nat -A POSTROUTING -o $ifwan -j MASQUERADE
}
stop (){
#Set permissive defaults
#Policy
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#Clean
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#Masquerading
iptables -t nat -A POSTROUTING -j MASQUERADE
}
case $1 in
start) start;;
stop) stop;;
restart) stop;start;;
*) echo "Use";;
esac
Este firewall faz de importante é fazer drop das portas 80 e 443 na chain FORWARD, pra que os micros não consigam acessar a internet diretamente (Estou fazendo MASQUERADE).
Configuração de squid que eu utilizaria (apesar de nunca ter usado algumas configurações apresentadas):
## DEFINE A PORTA DE CONEXAO DO SQUID
http_port 3128
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ##
maximum_object_size 4096 KB
## DEFINE O TAMANHO MINIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE (Alterado) ##
#Tamanho mínimo de objeto maior para que ele não fique armazenando objetos muito pequenos.
minimum_object_size 20 KB
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE DE MEMORIA (Alterado) ##
#Aumentado range do cache na ram
maximum_object_size_in_memory 1024 KB
## DEFINE A QUANTIDADE DE MEMORIA RAM A SER ALOCADA PARA CACHE (Alterado)##
#Aumentado range de cache na ram
cache_mem 1024 MB
## AJUSTA A PERFORMANCE EM CONEXOES PIPELINE ##
pipeline_prefetch on
## CACHE DE FQDN ##
fqdncache_size 1024
## OPCOES DE REFRESH PATTERN ##
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
## DEFINE A PORCENTAGEM DO USO DO CACHE ##
cache_swap_low 90
cache_swap_high 95
## ARQUIVO DE LOGS DO SQUID ##
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
## DEFINE O LOCAL DO CACHE (Alterado) ##
#Assincrono, teoricamente mais efetivo que o sincrono (UFS)
cache_dir aufs /var/spool/squid 1600 16 256
## CONTROLE DE ROTACAO DOS ARQUIVOS DE LOGS ##
logfile_rotate 10
## ARQUIVO ONDE CONTEM OS ENDERECOS LOCAIS DA REDE ##
hosts_file /etc/hosts
## ACLS - PORTAS PADROES LIBERADAS (Alterado) ##
#Ajustado configuração de portas
acl SSL_ports port 443 #HTTPS
acl SSL_ports port 563 #HTTPS
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 CONNECT method CONNECT
### DEFININDO MODO DE AUTENTICACAO
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/usuarios
auth_param basic children 5
auth_param basic realm "DIGITE SEU USUARIO E SENHA PARA ACESSO A INTERNET:"
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
### ACL PARA GARANTIR A AUTENTICACAO DO USUARIO NOS SITES ###
acl autenticados proxy_auth REQUIRED
## BLOQUEIA O ACESSO UNSAFE PORTS ##
http_access deny !Safe_ports
## Deny CONNECT to other than secure SSL port ##
http_access deny CONNECT !SSL_ports
## SITES BLOQUEADOS PARA ACESSO ##
acl sites-bloqueados url_regex -i "/etc/squid/regras/sites_bloqueados"
## SITES LIBERADOS PARA ACESSO ##
acl sites-liberados url_regex -i "/etc/squid/regras/sites_liberados"
## DEFININDO A ORDEM DAS REGRAS - ACLS ##
http_access deny sites-bloqueados
http_access allow sites-liberados
http_access allow autenticados
http_access deny all
http_reply_access allow all
icp_access allow all
miss_access allow all
## NOME QUE IRA APARECER NA TELA DE ERRO OU BLOQUEIO DO SQUID ##
visible_hostname proxy.tidahora.com.br
## DIRETORIO DAS PAGINAS DE ERROS ##
error_directory /usr/share/squid/errors/pt-br
## OUTRAS OPCOES DE CACHE ##
cache_effective_user squid
coredump_dir /var/spool/squid
Não testei as configurações (não tive como, hoje, criar lab e testar), então antes de aplicar, faça backup das suas.
Terá que configurar o proxy nos computadores da rede (em cada aplicativo/navegador). Pelo que entendi, você não tem problemas com isso.