Squid 3.4.8 + SSL + Firewall + DNS + DHCP no Debian Jessie (v.8)

Este artigo é resultado de semanas em testes e o servidor está em perfeito funcionamento, gerenciando uma estrutura de Ti bastante exigente, que precisa de flexibilidade nas regras de acesso à internet e alta segurança. Ficou longo, porém, tentamos explicar detalhadamente todos os passos para que não haja erro. Foi usado Debian 8 (Jessie), mas funciona em qualquer distribuição derivada do Debian, testamos em máquinas reais com Ubuntu e Mint. Simples: LEIA!

[ Hits: 67.355 ]

Por: Riccelli Reis de Oliveira em 07/03/2016


Rede e Firewall



Passo 36) Abaixo, configurações ideais para o arquivo hosts. É ele que identifica seu servidor na rede e é usado também por alguns processos internos quando precisam identificar o servidor. Lembre-se que estamos usando como exemplo uma rede com ips 192.168.0....

# vim /etc/hosts

127.0.0.1   localhost.servidor.com       localhost

192.168.0.1   servidor.servidor.com      servidor
192.168.0.1   ns1.servidor.com           ns1

127.0.1.1   servidor.servidor.com        servidor
127.0.1.1   ns1.servidor.com             ns1

# The following lines are desirable for IPv6 capable hosts

::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Passo 37) Configurar as interfaces de rede. Para quem veio do "mundo das janelas" seria o equivalente a clicar naquele computadorzinho ao lado do relógio e mudar o ip... No nosso exemplo, recebemos ip da internet por DHCP na interface eth0 e definimos para a eth1 o ip 192.168.0.1. O servidor tem duas placas de rede, uma onboard (eth0) e outra offboard (eth1). Identificamos isso com o comando ifconfig -a.

# vim /etc/network/interfaces

iface lo inet loopback

#Interface Internet
iface eth0 inet dhcp

#Interface Rede Local
iface eth1 inet static
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.255.255
network 192.168.0.0

allow-hotplug eth0

allow-hotplug eth1

auto lo

auto eth0

auto eth1

Passo 38) Configurar os servidores DNS que atenderão nosso servidor. Mais a frente indicamos uma configuração para ele mesmo ser um servidor DNS, o que deve melhorar bastante o desempenho da sua rede.

# vim /etc/resolv.conf

search servidor.com
nameserver 192.168.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

Passo 39) Reinicia a rede. Em alguns casos a máquina não reconhece as configurações de rede só reiniciando o serviço, então faça um reboot.

# systemctl restart networking

Passo 40) Criar um script de firewall. Copie todo o texto abaixo, desde a linha #!/bin/bash até a linha exit0 e cole no seu arquivo. Lembre-se que para começar a inserir texto no VIM, digite a letra i. Pra colar vai depender de como estiver acessando. Geralmente por SSH, clicar com o botão auxiliar (direito) do mouse vai colar.

# vim /etc/init.d/firewall

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Firewall at boot time
# Description:       Enable service provided by Firewall Daemon.
### END INIT INFO

export TX="echo -e"

default(){
$TX ""
$TX ">>>>>>>>>>>>>>>>>> Iniciando Script de Firewall <<<<<<<<<<<<<<<<<< \n"

$TX "Exportar Variaveis................................................"
export IFNET=eth0
export IFLOC=eth1
export MP=/sbin/modprobe
export RMM="$(which rmmod)"
export IPT=/sbin/iptables
export SVC=/etc/init.d
export IP4=/proc/sys/net/ipv4
export IP4C=/proc/sys/net/ipv4/conf
export NETW=192.168.0.0/24
$TX ".................................................................. OK \n"
}

start() {
echo "Definir politicas padrao........................................."
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desbloquear RP_Filter............................................."
if [ -e $IP4C/all/rp_filter ]; then
 for f in $IP4C/*/rp_filter; do
$TX "0" > $f
done
fi
$TX ".................................................................. OK \n"

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

$TX "Direcionar para Proxy-Cache......................................."
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 80 -j REDIRECT --to-port 3180
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 443 -j REDIRECT --to-port 31443
$TX ".................................................................. OK \n"

$TX "Compartilhar conexao.............................................."
$IPT -t nat -A POSTROUTING -o $IFNET -j MASQUERADE
if [ -e $IP4/ip_forward ]; then
$TX "1" > $IP4/ip_forward
else
$TX "Erro ao habilitar Forward!! Falha Grave no sistema................"
fi
$IPT -A FORWARD -s $NETW -j ACCEPT
$IPT -A FORWARD -d $NETW -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -s $NETW -j ACCEPT
$IPT -P OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

$TX " "
$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Iniciado!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

stop(){
$TX "Limpar todas as  regras de firewall..............................."
export IPT=/sbin/iptables
export SVC=/etc/init.d
$IPT -X
$IPT -F
# Zerar contadores
$IPT -Z
# Definir politicas padrao
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desfazer Compartilhamento........................................."
# Desativar trafego entre as placas de rede
$TX 0 > $IP4/ip_forward
# Ativar rp_filter
if [ -e $IP4C/all/rp_filter ]; then
 for f in $IP4C/*/rp_filter; do
$TX "1" > $f
done
# Reiniciar servico de rede
$SVC/networking restart
fi
$TX ".................................................................. OK \n"

$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Parado!!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

case "$1" in

	inicio) while true; do
		default
		break
		done
;;

	start) while true; do
		default
		start
		break
		done
;;

        stop) while true; do
		stop
		break
		done
;;

	restart) while true; do
		stop
		default
		start
		break
		done
;;

esac

exit 0

Passo 41) Fazer com que o script de firewall seja executável e inicie junto com o sistema.

# chmod +x /etc/init.d/firewall
# update-rc.d firewall defaults


Passo 42) Iniciar o firewall.

# /etc/init.d/firewall start

Passo 43) Verificar se as regras foram aplicadas. Observe que no segundo comando está aparecendo os redirecionamentos de portas. Apagamos as nossas regras, mas você vai perceber em cada sessão, abaixo das palavras target, prot, opt, source e destination, informação do que o firewall está fazendo. É fácil entender, no exemplo abaixo, o alvo (target) é um redirecionamento (REDIRECT), usando protocolo (prot) TCP, nenhuma opção adicional (opt: --), onde a origem (source) é todos (anywhere), então o destino (destination) será todos (anywhere), protocolo TCP, porta HTTP (80) e HTTPS (443), redirecionando para as portas 3180 e 31443, respectivamente.

# iptables -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination


# iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere       tcp dpt:http redir ports 3180
REDIRECT   tcp  --  anywhere             anywhere       tcp dpt:https redir ports 31443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Página anterior     Próxima página

Páginas do artigo
   1. Orientações iniciais
   2. Instalações
   3. Configuração do Squid - Parte 1
   4. Configuração do Squid - Parte 2
   5. Rede e Firewall
   6. DNS e DHCP
   7. Conclusão e links
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Controlando acesso às páginas do Apache na rede interna

Instalação do Squid 3.2.0.14 no Slackware com execução em ambiente chroot

Gerenciando relatórios do SARG

Squid autenticado no Active Directory com Winbind

Controle de acesso à internet com Squid

  
Comentários
[1] Comentário enviado por fabio em 07/03/2016 - 06:06h

Excelente trabalho! Favoritado. O guia me será bem util.

[2] Comentário enviado por r2oweb em 07/03/2016 - 11:59h


[1] Comentário enviado por fabio em 07/03/2016 - 06:06h

Excelente trabalho! Favoritado. O guia me será bem util.


Disponha Fabio. Espero que ajude mesmo. Qualquer coisa, comente... Abraço.

[3] Comentário enviado por r2oweb em 07/03/2016 - 12:09h

Pequenas correções:

Na página 02 - Instalações, passo 09, o texto abaixo deveria estar todo junto. A última linha ficou fora da caixa, mas deve ficar junto:
squid3 (3.4.8) jessie; urgency=high
[ Seu Nome <seuemail> ]
* debian/rules
- Added --enable-ssl --enable-ssl-crtd (Closes: #800000)
-- Seu Nome <seuemail> Wed, 22 Jul 2015 18:36:08 +0200 <<< Mudar para a data e hora atual, mas não deixe este texto explicativo no seu arquivo.

Página 04 - Configuração do Squid - Parte 2. Passo 26. Falta uma palavra: "pcfree". O comando ficaria assim:
# touch sitessl sitehttp sitebloq palavras pcfree


Página 05 - Rede e Firewall. Passo 37. Coloquei o Broadcast errado. Está 192.168.255.255, mas deveria ser 192.168.0.255.
Pouca diferença que pode causar problemas. No penúltimo octeto coloquei 255 e deveria ser zero. Abaixo o correto:
#Interface Rede Local
iface eth1 inet static
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.0.255
network 192.168.0.0


Página 06 - DNS e DHCP. No passo 46 o alinhamento das identações deixou o texto confuso. Não causará problemas, porém, se você tem TOC ou prefere deixar suas coisas bem organizadas, abrir um arquivo e fazer força pra entender seu conteúdo não é agradável.


Abraço.

[4] Comentário enviado por wagnerfs em 07/03/2016 - 21:21h

Parabéns pelo artigo e por compartilhar o conhecimento. Esse material é de grande ajuda. Só achei muito serviço para um servidor tendo em vista que se ele parar, toda a empresa fica off.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

[5] Comentário enviado por riccelli_reis em 07/03/2016 - 22:22h


[4] Comentário enviado por K666 em 07/03/2016 - 21:21h

Parabéns pelo artigo e por compartilhar o conhecimento. Esse material é de grande ajuda. Só achei muito serviço para um servidor tendo em vista que se ele parar, toda a empresa fica off.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782



Excelente observação Wagner! Muito obrigado. Esqueci de esclarecer isso no Artigo. Se a rede for grande, deve-se colocar um servidor para cada serviço e/ou ter redundância de serviços críticos. Não é possível ficar de vigília 24X7. Caso algo pare, no mínimo, precisamos de algum tempo para resolver, as vezes tempo até para chegar no local.
Neste caso a rede é pequena, cerca de 50 máquinas, alguns celulares e notebooks particulares. Também só uma vez por semana tudo é ligado. Temos 03 servidores na sala e, apesar de gerenciar tantos serviços, raramente usamos metade do processamento. Concordo plenamente, fiquemos atentos para não sobrecarregar as máquinas e sejamos exigentes quanto ao ambiente (elétrica, refrigeração, limpeza, etc).
Abraço.

[6] Comentário enviado por morbid em 08/03/2016 - 17:27h

olá. fiz os passos e funcionou sem muitos problemas. porém não consegui que o whatsapp funcionasse. Sabe como poderia contornar este problema? Outra questão são os celulares que acessam sites em https: Baixo o certificado, porém mesmo assim dá erros nos sites em Https. Obrigado.

[7] Comentário enviado por riccelli_reis em 08/03/2016 - 19:14h


[6] Comentário enviado por morbid em 08/03/2016 - 17:27h

olá. fiz os passos e funcionou sem muitos problemas. porém não consegui que o whatsapp funcionasse. Sabe como poderia contornar este problema? Outra questão são os celulares que acessam sites em https: Baixo o certificado, porém mesmo assim dá erros nos sites em Https. Obrigado.


Amigo, coloque o dominio do WhatsApp na lista SiteSeguroLiberado. Com um pouco de pesquisa descobri o seguinte sobre o WhatsApp:

Porta 3478 UDP - Necessária para efetuar ligações
Porta 5222 TCP - Necessária para conexão e envio/recebimento de texto
Porta 5223 TCP - Necessária para conexão e envio/recebimento de texto
Porta 443 - Necessária para envio/recebimento de imagens/vídeos

Nesta URL acredito que tenha todos os ips que que o WhatsApp usa, então coloque-os numa lista de liberação. Mais abaixo explico:
https://www.whatsapp.com/cidr.txt

Crie um arquivo simples em /etc/squid3/list e coloque todos os ips do WhatsApp (do arquivo cidr.txt que passei acima) nesse arquivo simples (seguindo nosso padrão ficaria /etc/squid3/list/whatsapp). Agora adicione uma ACL, pode ser logo abaixo da PCLiberado, assim:

acl PCLiberado src "/etc/squid3/list/pcfree"
acl WhatsApp dst "/etc/squid3/whatsapp"

Agora crie a regra para liberação, mantendo a ordem:
http_access allow PCLiberado
http_access allow WhatsApp

Quanto a celulares com HTTPS, acredito que seja o browser. Testei só com Chrome e Safari, funcionou perfeitamente. Na dúvida, coloque o ip do celular na lista PCLiberado e veja se dá erro. Se mesmo assim não funcionar buscaremos uma solução juntos.
Abraço.

[8] Comentário enviado por vendramel em 11/03/2016 - 09:29h

Parabéns, e obrigado por compartilhar !
A comunidade vive e prospera com o compartilhamento de experiencias como essa.

[9] Comentário enviado por llJllNllRll em 14/03/2016 - 17:10h

Grande Ricceli_Reis, parabéns pelo artigo, tanto pela metodologia aplicada quanto pelo cuidado de explicar as menores nuances da implementação. Por motivo de tempo poucas vezes loguei aqui pra parabenizar um artigo (e olha que aqui nesse site temos os melhores da internet), mas o seu se fez necessário, muito bom, parabéns mesmo!!

Com tudo pra mim um erro está sendo apresentado, imagino ter feito todo o procedimento corretamente, mesmo sem utilizar as partes de DCHP e DNS, por um motivo que ainda não sei o por que o seguinte erro me é apresentado quando eu subo o squid:


&#9492;&#9472;&#9472;> # /etc/init.d/squid3 status
&#9679; squid3.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid3)
Active: active (exited) since Seg 2016-03-14 17:05:40 BRT; 3s ago
Process: 1570 ExecStop=/etc/init.d/squid3 stop (code=exited, status=0/SUCCESS)
Process: 1577 ExecStart=/etc/init.d/squid3 start (code=exited, status=0/SUCCESS)

Mar 14 17:05:40 Gateway squid3[1577]: CPU Usage: 0.008 seconds = 0.004 user + 0.004 sys
Mar 14 17:05:40 Gateway squid3[1577]: Maximum Resident Size: 46720 KB
Mar 14 17:05:40 Gateway squid3[1577]: Page faults with physical i/o: 0
Mar 14 17:05:40 Gateway squid3[1610]: No valid signing SSL certificate configured for https_port [::]:31443
Mar 14 17:05:40 Gateway squid3[1577]: FATAL: No valid signing SSL certificate configured for https_port [::]:31443
Mar 14 17:05:40 Gateway squid3[1577]: Squid Cache (Version 3.4.8): Terminated abnormally.
Mar 14 17:05:40 Gateway squid3[1577]: CPU Usage: 0.012 seconds = 0.004 user + 0.008 sys
Mar 14 17:05:40 Gateway squid3[1577]: Maximum Resident Size: 47008 KB
Mar 14 17:05:40 Gateway squid3[1577]: Page faults with physical i/o: 0
Mar 14 17:05:40 Gateway squid3[1577]: failed!



Evidente que seja algo relacionado aos certificados SSL, já revisei o artigo e não achei nada diferente para fazer, alguma dica?

[10] Comentário enviado por riccelli_reis em 14/03/2016 - 18:29h


[9] Comentário enviado por llJllNllRll em 14/03/2016 - 17:10h

Grande Ricceli_Reis, parabéns pelo artigo, tanto pela metodologia aplicada quanto pelo cuidado de explicar as menores nuances da implementação. Por motivo de tempo poucas vezes loguei aqui pra parabenizar um artigo (e olha que aqui nesse site temos os melhores da internet), mas o seu se fez necessário, muito bom, parabéns mesmo!!

Com tudo pra mim um erro está sendo apresentado, imagino ter feito todo o procedimento corretamente, mesmo sem utilizar as partes de DCHP e DNS, por um motivo que ainda não sei o por que o seguinte erro me é apresentado quando eu subo o squid:


&amp;#9492;&amp;#9472;&amp;#9472;&gt; # /etc/init.d/squid3 status
&amp;#9679; squid3.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid3)
Active: active (exited) since Seg 2016-03-14 17:05:40 BRT; 3s ago
Process: 1570 ExecStop=/etc/init.d/squid3 stop (code=exited, status=0/SUCCESS)
Process: 1577 ExecStart=/etc/init.d/squid3 start (code=exited, status=0/SUCCESS)

Mar 14 17:05:40 Gateway squid3[1577]: CPU Usage: 0.008 seconds = 0.004 user + 0.004 sys
Mar 14 17:05:40 Gateway squid3[1577]: Maximum Resident Size: 46720 KB
Mar 14 17:05:40 Gateway squid3[1577]: Page faults with physical i/o: 0
Mar 14 17:05:40 Gateway squid3[1610]: No valid signing SSL certificate configured for https_port [::]:31443
Mar 14 17:05:40 Gateway squid3[1577]: FATAL: No valid signing SSL certificate configured for https_port [::]:31443
Mar 14 17:05:40 Gateway squid3[1577]: Squid Cache (Version 3.4.8): Terminated abnormally.
Mar 14 17:05:40 Gateway squid3[1577]: CPU Usage: 0.012 seconds = 0.004 user + 0.008 sys
Mar 14 17:05:40 Gateway squid3[1577]: Maximum Resident Size: 47008 KB
Mar 14 17:05:40 Gateway squid3[1577]: Page faults with physical i/o: 0
Mar 14 17:05:40 Gateway squid3[1577]: failed!

Evidente que seja algo relacionado aos certificados SSL, já revisei o artigo e não achei nada diferente para fazer, alguma dica?



Prezado, muito obrigado pelo elogio, faz o trabalho valer a pena.

Este erro ocorre por três motivos:
- Algum erro no squid.conf (as vezes é uma letra que quase nem vemos...)
- Alguma falha na geração ou assinatura do certificado (o próprio openssl as vezes faz isso...)
- Alguma falha na cache de certificados. Primeiro esta possibilidade, mais fácil de resolver, seguem comandos:

# systemctl stop squid3
# rm -Rf /var/lib/ssl_db/
# /usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db/
# chown -R proxy /var/lib/ssl_db/
# squid3 -z
# systemctl start squid3


Aconselho regerar e reassinar o certificado, repetindo os passos de 16 até 24.


Copie também seu squid.conf só para confirmarmos. As partes que preferir não divulgar publicamente substitua por "X".
Abraço.

[11] Comentário enviado por cleomar soeiro em 14/03/2016 - 19:53h

Bom amigo não sei se você pode me ajudar, porque gostaria de saber como habilitar enable-arp-acl no squid 3.4.8 para debian 8.3, já que este modulo não é nativo nesta versão do squid 3.4.8.

[12] Comentário enviado por riccelli_reis em 14/03/2016 - 20:32h


[11] Comentário enviado por cleomar soeiro em 14/03/2016 - 19:53h

Bom amigo não sei se você pode me ajudar, porque gostaria de saber como habilitar enable-arp-acl no squid 3.4.8 para debian 8.3, já que este modulo não é nativo nesta versão do squid 3.4.8.


Caro cleomar soeiro, pode seguir o tutorial. Na página 2 - Instalações, passo 08, o seu deve ficar assim:
--with-default-user=proxy \
--enable-ssl \
--enable-ssl-crtd \
--with-openssl \
--enable-arp-acl

Assim você vai poder criar ACLs fazendo controle pelo MAC do cliente.

Mais informações nesta página:
http://wiki.squid-cache.org/SquidFaq/SquidAcl

Abraço

[13] Comentário enviado por matheus21 em 18/03/2016 - 19:31h

tô com um probleminha aqui :
##> Logs
access_log daemon:/var/log/squid3/access.log proxy
logfile_daemon /usr/lib/squid3/log_file_daemon
cache_log /var/log/squid3/cache.log

O ERRO É ESSE :
root@ubuntu-mat:/etc/squid3# squid3 -z
2016/03/18 19:15:30| Log format 'proxy' is not defined
FATAL: Bungled /etc/squid3/squid.conf line 24: access_log daemon:/var/log/squid3/access.log proxy
Squid Cache (Version 3.3.8): Terminated abnormlly.
CPU Usage: 0.008 seconds = 0.004 user + 0.004 sys
Maximum Resident Size: 43424 KB
Page faults with physical i/p: 0
root@ubuntu-mat:/etc/squid3#

[14] Comentário enviado por wdetoni em 18/03/2016 - 21:00h

Boa noite! Parabéns pelo artigo! Gostaria de saber como faço para bloquear as pesquisas de imagens no google com proxy autenticado?? Estou pesquisando... mas não encontrei... ssl_bump peguei vários exemplos e testei... mas nda! :(

[15] Comentário enviado por riccelli_reis em 19/03/2016 - 01:14h


[13] Comentário enviado por matheus21 em 18/03/2016 - 19:31h

tô com um probleminha aqui :
##&gt; Logs
access_log daemon:/var/log/squid3/access.log proxy
logfile_daemon /usr/lib/squid3/log_file_daemon
cache_log /var/log/squid3/cache.log

O ERRO É ESSE :
root@ubuntu-mat:/etc/squid3# squid3 -z
2016/03/18 19:15:30| Log format 'proxy' is not defined
FATAL: Bungled /etc/squid3/squid.conf line 24: access_log daemon:/var/log/squid3/access.log proxy
Squid Cache (Version 3.3.8): Terminated abnormlly.
CPU Usage: 0.008 seconds = 0.004 user + 0.004 sys
Maximum Resident Size: 43424 KB
Page faults with physical i/p: 0
root@ubuntu-mat:/etc/squid3#



Prezado matheus21, na linha 24 tente assim:
access_log daemon:/var/log/squid3/access.log squid

Se não funcionar, deixe assim:
access_log /var/log/squid3/access.log

Peço desculpas pois não observei que essa linha, do jeito que coloquei no tutorial e nos meus servidores, causa erro em alguns outros sistemas. Estou sem tempo de testar o por que, sendo que testei antes no Ubuntu Server e no Linux Mint, ambos funcionando 100%.

Grande abraço

[16] Comentário enviado por riccelli_reis em 19/03/2016 - 01:18h


[14] Comentário enviado por wdetoni em 18/03/2016 - 21:00h

Boa noite! Parabéns pelo artigo! Gostaria de saber como faço para bloquear as pesquisas de imagens no google com proxy autenticado?? Estou pesquisando... mas não encontrei... ssl_bump peguei vários exemplos e testei... mas nda! :(


Obrigado wdetoni. Para imagens o Google usa o domínio gstatic.com. Tire-o do arquivo sitessl, pois este arquivo "alimenta" a ACL SiteSeguroLiberado, que está liberando acesso para sites seguros que você quer deixar liberados. Só isso acredito que resolva a sua questão. Dê o retorno, funcionando ou não, estamos a disposição para ajudar no que for preciso.
Abraço.

[17] Comentário enviado por duiliogois em 21/03/2016 - 16:11h

Boa tarde!

Não está salvando o que é digitado em resolv.conf. Toda vez que reinicio a rede volta a como estava antes. Como proceder?

[18] Comentário enviado por riccelli_reis em 21/03/2016 - 16:54h


[17] Comentário enviado por duiliogois em 21/03/2016 - 16:11h

Boa tarde!

Não está salvando o que é digitado em resolv.conf. Toda vez que reinicio a rede volta a como estava antes. Como proceder?


Amigo, qual editor você está usando? No VIM, após digitar o que precisa, digite ESC, depois :wq! (dois pontos, w, q, exclamação, enter). Usando o nano, digite Ctrl + O para salvar, depois Ctrl + X para sair.

Caso sua rede esteja recebendo configurações via DHCP, sempre vai acontecer isso. Se puder, coloque ip fixo em ambas as interfaces que resolve. Se não puder colocar ip fixo, verifique "quem" está servindo o DHCP e, se possível, reconfigure para atender seu servidor. O mais viável é definir o servidor DHCP para sempre servir as mesmas configurações para seu servidor Linux. De qualquer forma, segue exemplo do arquivo /etc/network/interfaces:

iface lo inet loopback

iface eth0 inet static
address 172.20.0.2
netmask 255.255.255.0
broadcast 172.20.0.255
network 172.20.0.0
gateway 172.20.0.1

iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0

auto lo

auto eth0

auto eth1


Agora o resolv.conf:

domain servidor.com
search servidor.com
nameserver 192.168.0.1
nameserver 8.8.8.8


Lembrando que o nome "servidor.com" você vai colocar o seu grupo de trabalho ou domínio. O ip que coloquei 172.20... foi só pra exemplificar, então mude de acordo com a sua conexão de internet. O ip da eth1 também foi só como exemplo, coloque de acordo com a sua realidade. Faça o possível para mudar de classe, ou seja, se receber na eth0 com classe B, use na eth1 ip de classe C, por exemplo. Isso evita alguns problemas que podem ou não acontecer.
Continue dando retorno se conseguiu resolver ou não.

Abraço

[19] Comentário enviado por duiliogois em 22/03/2016 - 15:31h


[18] Comentário enviado por riccelli_reis em 21/03/2016 - 16:54h


[17] Comentário enviado por duiliogois em 21/03/2016 - 16:11h

Boa tarde!

Não está salvando o que é digitado em resolv.conf. Toda vez que reinicio a rede volta a como estava antes. Como proceder?


Amigo, qual editor você está usando? No VIM, após digitar o que precisa, digite ESC, depois :wq! (dois pontos, w, q, exclamação, enter). Usando o nano, digite Ctrl + O para salvar, depois Ctrl + X para sair.

Caso sua rede esteja recebendo configurações via DHCP, sempre vai acontecer isso. Se puder, coloque ip fixo em ambas as interfaces que resolve. Se não puder colocar ip fixo, verifique "quem" está servindo o DHCP e, se possível, reconfigure para atender seu servidor. O mais viável é definir o servidor DHCP para sempre servir as mesmas configurações para seu servidor Linux. De qualquer forma, segue exemplo do arquivo /etc/network/interfaces:

iface lo inet loopback

iface eth0 inet static
address 172.20.0.2
netmask 255.255.255.0
broadcast 172.20.0.255
network 172.20.0.0
gateway 172.20.0.1

iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0

auto lo

auto eth0

auto eth1


Agora o resolv.conf:

domain servidor.com
search servidor.com
nameserver 192.168.0.1
nameserver 8.8.8.8


Lembrando que o nome "servidor.com" você vai colocar o seu grupo de trabalho ou domínio. O ip que coloquei 172.20... foi só pra exemplificar, então mude de acordo com a sua conexão de internet. O ip da eth1 também foi só como exemplo, coloque de acordo com a sua realidade. Faça o possível para mudar de classe, ou seja, se receber na eth0 com classe B, use na eth1 ip de classe C, por exemplo. Isso evita alguns problemas que podem ou não acontecer.
Continue dando retorno se conseguiu resolver ou não.

Abraço



Obrigado, problema resolvido, mas estou com outro problema... nenhum computador consegue se conectar na rede e quando verifico o status do DHCP dá a seguinte mensagem: "DHCPDISCOVER from XX:XX:XX:XX:XX:XX via eth1: unknown client". Inclusive, nem a máquina que está instalado o servidor com o Squid está acessando a internet.

Outro problema que está acontecendo é que não consigo fazer os testes de host (host 192.168.0.1), está dando timeout.

[20] Comentário enviado por riccelli_reis em 22/03/2016 - 18:51h


[19] Comentário enviado por duiliogois em 22/03/2016 - 15:31h


[18] Comentário enviado por riccelli_reis em 21/03/2016 - 16:54h


[17] Comentário enviado por duiliogois em 21/03/2016 - 16:11h

Boa tarde!

Não está salvando o que é digitado em resolv.conf. Toda vez que reinicio a rede volta a como estava antes. Como proceder?


Amigo, qual editor você está usando? No VIM, após digitar o que precisa, digite ESC, depois :wq! (dois pontos, w, q, exclamação, enter). Usando o nano, digite Ctrl + O para salvar, depois Ctrl + X para sair.

Caso sua rede esteja recebendo configurações via DHCP, sempre vai acontecer isso. Se puder, coloque ip fixo em ambas as interfaces que resolve. Se não puder colocar ip fixo, verifique "quem" está servindo o DHCP e, se possível, reconfigure para atender seu servidor. O mais viável é definir o servidor DHCP para sempre servir as mesmas configurações para seu servidor Linux. De qualquer forma, segue exemplo do arquivo /etc/network/interfaces:

iface lo inet loopback

iface eth0 inet static
address 172.20.0.2
netmask 255.255.255.0
broadcast 172.20.0.255
network 172.20.0.0
gateway 172.20.0.1

iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0

auto lo

auto eth0

auto eth1


Agora o resolv.conf:

domain servidor.com
search servidor.com
nameserver 192.168.0.1
nameserver 8.8.8.8


Lembrando que o nome "servidor.com" você vai colocar o seu grupo de trabalho ou domínio. O ip que coloquei 172.20... foi só pra exemplificar, então mude de acordo com a sua conexão de internet. O ip da eth1 também foi só como exemplo, coloque de acordo com a sua realidade. Faça o possível para mudar de classe, ou seja, se receber na eth0 com classe B, use na eth1 ip de classe C, por exemplo. Isso evita alguns problemas que podem ou não acontecer.
Continue dando retorno se conseguiu resolver ou não.

Abraço



Obrigado, problema resolvido, mas estou com outro problema... nenhum computador consegue se conectar na rede e quando verifico o status do DHCP dá a seguinte mensagem: "DHCPDISCOVER from XX:XX:XX:XX:XX:XX via eth1: unknown client". Inclusive, nem a máquina que está instalado o servidor com o Squid está acessando a internet.

Outro problema que está acontecendo é que não consigo fazer os testes de host (host 192.168.0.1), está dando timeout.


Prezado duiliogois, envie seu dhcpd.conf por e-mail que analiso e lhe digo como resolver: riccelli@infotudo.net

[21] Comentário enviado por christianccm em 25/03/2016 - 21:41h

Olá !
Ótimo artigo ! Parabéns !

amigo, sou completamente autoditada,
tenho um servidor, proxy, firewall(iptables),DHCP, na empresa em que trabalho,
configurei certinho, funciona... porém tenho algumas dificuldades justamente com os certificados, meu squid nao tem suporte ao ssl instalado... quero seguir teu artigo para reinstalar meu serv..

minhas duvidas..

eu nao tenho um dominio, entao no momento da instalação nos passos 19,20,21 como eu faria ?
como disse sou autodidata, tenho certa carencia de conhecimento em muitas coisas ainda !

outra duvida, se faz necessário o uso do bind se eu quiser apenas um proxy com suporte ssl.. tenho que ter o serviço dns também nesse servidor ?

desde já, agradeço muito sua resposta !

[22] Comentário enviado por riccelli_reis em 25/03/2016 - 23:26h


[21] Comentário enviado por christianccm em 25/03/2016 - 21:41h

Olá !
Ótimo artigo ! Parabéns !

amigo, sou completamente autoditada,
tenho um servidor, proxy, firewall(iptables),DHCP, na empresa em que trabalho,
configurei certinho, funciona... porém tenho algumas dificuldades justamente com os certificados, meu squid nao tem suporte ao ssl instalado... quero seguir teu artigo para reinstalar meu serv..

minhas duvidas..

eu nao tenho um dominio, entao no momento da instalação nos passos 19,20,21 como eu faria ?
como disse sou autodidata, tenho certa carencia de conhecimento em muitas coisas ainda !

outra duvida, se faz necessário o uso do bind se eu quiser apenas um proxy com suporte ssl.. tenho que ter o serviço dns também nesse servidor ?

desde já, agradeço muito sua resposta !


Olá christianccm. Obrigado pelo elogio e parabéns também. Ser autodidata e fazer as coisas certas são características de um vencedor.
Você pode usar um domínio fictício ou apenas um nome para "grupo de trabalho". Na página 5, configuração do arquivo hosts, usei assim:
192.168.0.1 servidor.servidor.com servidor
Perceba que é necessário ligar o ip do servidor ao nome de host, que no exemplo é "servidor", e também ao domínio ou grupo de trabalho, que no exemplo é servidor.com. Se for usar só o nome do grupo de trabalho pode ficar assim:
192.168.0.1 servidor.grupo servidor
Na hora de criar o certificado, passos 20 e 21, pode usar: openssl genrsa -out grupo.key 2048 e openssl req -new -key grupo.key -out grupo.csr

A maioria do provedores não disponibiliza um DNS confiável. Já tive problemas com um provedor muito grande, que atua no país todo, tem milhões de clientes, mas os sites de bancos por exemplo nunca abriam. Descobri por conta própria que os DNS deles estavam infectados e direcionavam o tráfego por servidores que capturavam dados. Tive que orientar todos, um a um, na matriz e 5 filiais, para mudar suas senhas, além de ajudar alguns que tiveram claramente suas contas hackeadas.
Infelizmente muitos administradores usam na rede toda (as vezes muitas máquinas) os servidores DNS públicos do Google (8.8.8.8 e 8.8.4.4), que estão nos Estados Unidos, visivelmente sobrecarregados, no mundo todo eles são usados...

Garanto que o desempenho da rede e a segurança melhoram muito com a resolução de nomes sob seu controle, mas realmente não é necessário.

Espero ter ajudado e continuo a disposição.

Abraço.



[23] Comentário enviado por riccelli_reis em 31/03/2016 - 12:51h

Com a última atualização do Google Chrome, alguns sites não abrem, incluindo Gmail. Dá um erro de certificado: NET::ERR_CERT_COMMON_NAME_INVALID.
No momento estou orientando os usuários para abrir pelo Firefox e tentando descobrir como contornar a situação.

[24] Comentário enviado por riccelli_reis em 05/05/2016 - 12:51h

Atualizando. Para resolver o problema com o certificado no Google Chrome, alguns sites, bancos e outras situações aleatórias.

Parar o Squid, apagar a cache de certificados, regerar o seu certificado e alterar o squid.conf. Só iniciar novamente o Squid no final de tudo.

# systemctl stop squid3

# rm -Rf /var/lib/ssl_db/

# /usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db/

# chown -R proxy:proxy /var/lib/ssl_db/

# cd /etc/squid3/cert (ir para o diretório do certificado)

# openssl genrsa -des3 -out servidor.sec.key 2048 (aqui ele pede para colocar uma senha)

# openssl rsa -in servidor.sec.key -out servidor.key (retirando a senha)

# openssl req -sha256 -new -key servidor.key -out servidor.csr (gerando a requisição)

# openssl x509 -req -days 3650 -in servidor.csr -signkey servidor.key -out servidor.crt (assinando)

# cat servidor.key servidor.crt > servidor.pem (gerando o arquivo para o squid)

# cp servidor.crt /var/www/html/cert (copiando o certificado que será importado pelos clientes, considerando que você criou o servidor web, com certeza é o jeito mais tranquilo de importar o certificado para todos os navegadores em todos os clientes da rede)


Squid.conf:

https_port 31443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/cert/servidor.pem


##> Diretivas para SSL
sslcrtd_program /lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 32 startup=5 idle=1
sslcrtvalidator_children 32 startup=5 idle=1 concurrency=1
sslproxy_options NO_SSLv2,NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE ###<<< Caso apresente algum erro, deixe assim: sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
dead_peer_timeout 10 seconds
forward_max_tries 100


# systemctl start squid3

[25] Comentário enviado por krytico em 01/06/2016 - 14:02h

Olá! Parabéns pelo trabalho e obrigado por ter compartilhado!

Estou começando a me aventurar com linux, trabalho há um certo tempo com informática e resolvi aprendera configurar servidores linux.

Fiz tudo conforme os passos, cuidando os ips etc, porém, quando chego na parte do firewall, depois q inicio ele, não consigo acessar mais o servidor pela rede(nem pingar no ip do servidor consigo) e acessando pelo servidor, também não consigo pingar para lugar algum. Saberia me dizer o quê estou fazendo de errado? Ja refiz, sem mentiras, 15x! Sempre formatando e começando do zero.

Desde já agradeço.

[26] Comentário enviado por riccelli_reis em 02/06/2016 - 14:10h


[25] Comentário enviado por krytico em 01/06/2016 - 14:02h

Olá! Parabéns pelo trabalho e obrigado por ter compartilhado!

Estou começando a me aventurar com linux, trabalho há um certo tempo com informática e resolvi aprendera configurar servidores linux.

Fiz tudo conforme os passos, cuidando os ips etc, porém, quando chego na parte do firewall, depois q inicio ele, não consigo acessar mais o servidor pela rede(nem pingar no ip do servidor consigo) e acessando pelo servidor, também não consigo pingar para lugar algum. Saberia me dizer o quê estou fazendo de errado? Ja refiz, sem mentiras, 15x! Sempre formatando e começando do zero.

Desde já agradeço.


Opa! Obrigado pelo elogio, desculpa pela demora e vamos lá! Algumas pessoas fizeram contato relatando o mesmo problema. Antes de resolver, por favor, envie os resultados dos seguintes comandos:
# ifconfig
# route -n
# cat /etc/network/interfaces
# cat /etc/resolv.conf
# cat /etc/hosts
# cat /etc/init.d/firewall
# cat /etc/dhcp/dhcpd.conf

No aguardo...

Abraço.

[27] Comentário enviado por krytico em 03/06/2016 - 14:10h


[26] Comentário enviado por riccelli_reis em 02/06/2016 - 14:10h


[25] Comentário enviado por krytico em 01/06/2016 - 14:02h

Olá! Parabéns pelo trabalho e obrigado por ter compartilhado!

Estou começando a me aventurar com linux, trabalho há um certo tempo com informática e resolvi aprendera configurar servidores linux.

Fiz tudo conforme os passos, cuidando os ips etc, porém, quando chego na parte do firewall, depois q inicio ele, não consigo acessar mais o servidor pela rede(nem pingar no ip do servidor consigo) e acessando pelo servidor, também não consigo pingar para lugar algum. Saberia me dizer o quê estou fazendo de errado? Ja refiz, sem mentiras, 15x! Sempre formatando e começando do zero.

Desde já agradeço.


Opa! Obrigado pelo elogio, desculpa pela demora e vamos lá! Algumas pessoas fizeram contato relatando o mesmo problema. Antes de resolver, por favor, envie os resultados dos seguintes comandos:
# ifconfig
# route -n
# cat /etc/network/interfaces
# cat /etc/resolv.conf
# cat /etc/hosts
# cat /etc/init.d/firewall
# cat /etc/dhcp/dhcpd.conf

No aguardo...

Abraço.


Opa, desculpe a demora pra responder. Segue as configurações solicitadas


root@server:/etc/squid3# ifconfig
eth0 Link encap:Ethernet Endereço de HW 00:05:00:a0:32:ba
inet end.: 192.168.1.73 Bcast:192.168.1.255 Masc:255.255.255.0
endereço inet6: fe80::205:ff:fea0:32ba/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:209977 errors:0 dropped:0 overruns:0 frame:0
TX packets:126038 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:296591756 (282.8 MiB) TX bytes:11278443 (10.7 MiB)

eth1 Link encap:Ethernet Endereço de HW 00:1a:3f:7d:16:15
inet end.: 192.168.0.1 Bcast:192.168.255.255 Masc:255.255.0.0
UP BROADCASTMULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACKRUNNING MTU:65536 Métrica:1
RX packets:123 errors:0 dropped:0 overruns:0 frame:0
TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:26502 (25.8 KiB) TX bytes:26502 (25.8 KiB)

root@server:/etc/squid3# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

cat /etc/network/interfaces
root@server:/etc/squid3# cat /etc/network/interfaces
iface lo inet loopback

#Interface Internet
iface eth0 inet dhcp

#Interface Rede Local
iface eth1 inet static
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.255.255
network 192.168.0.0

allow-hotplug eth0

allow-hotplug eth1

auto lo

auto eth0

auto eth1

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

#source /etc/network/interfaces.d/*

# The loopback network interface
#auto lo
#iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

cat /etc/resolv.conf

nameserver 192.168.1.1

# cat /etc/hosts

::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# cat /etc/init.d/firewall


#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Firewall at boot time
# Description: Enable service provided by Firewall Daemon.
### END INIT INFO

export TX="echo -e"

default(){
$TX ""
$TX ">>>>>>>>>>>>>>>>>> Iniciando Script de Firewall <<<<<<<<<<<<<<<<<< \n"

$TX "Exportar Variaveis................................................"
export IFNET=eth0
export IFLOC=eth1
export MP=/sbin/modprobe
export RMM="$(which rmmod)"
export IPT=/sbin/iptables
export SVC=/etc/init.d
export IP4=/proc/sys/net/ipv4
export IP4C=/proc/sys/net/ipv4/conf
export NETW=192.168.0.0/24
$TX ".................................................................. OK \n"
}

start() {
echo "Definir politicas padrao........................................."
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desbloquear RP_Filter............................................."
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "0" > $f
done
fi
$TX ".................................................................. OK \n"

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

$TX "Direcionar para Proxy-Cache......................................."
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 80 -j REDIRECT --to-port 3180
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 443 -j REDIRECT --to-port 31443
$TX ".................................................................. OK \n"

$TX "Compartilhar conexao.............................................."
$IPT -t nat -A POSTROUTING -o $IFNET -j MASQUERADE
if [ -e $IP4/ip_forward ]; then
$TX "1" > $IP4/ip_forward
else
$TX "Erro ao habilitar Forward!! Falha Grave no sistema................"
fi
$IPT -A FORWARD -s $NETW -j ACCEPT
$IPT -A FORWARD -d $NETW -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -s $NETW -j ACCEPT
$IPT -P OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

$TX " "
$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Iniciado!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

stop(){
$TX "Limpar todas as regras de firewall..............................."
export IPT=/sbin/iptables
export SVC=/etc/init.d
$IPT -X
$IPT -F
# Zerar contadores
$IPT -Z
# Definir politicas padrao
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desfazer Compartilhamento........................................."
# Desativar trafego entre as placas de rede
$TX 0 > $IP4/ip_forward
# Ativar rp_filter
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "1" > $f
done
# Reiniciar servico de rede
$SVC/networking restart
fi
$TX ".................................................................. OK \n"

$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Parado!!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

case "$1" in

inicio) while true; do
default
break
done
;;

start) while true; do
default
start
break
done
;;

stop) while true; do
stop
break
done
;;

restart) while true; do
stop
default
start
break
done
;;

esac

exit 0

# cat /etc/dhcp/dhcpd.conf

#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
# range 10.254.239.10 10.254.239.20;
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;
# option broadcast-address 10.254.239.31;
# option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
# hardware ethernet 08:00:07:26:c0:a5;
# fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
# subnet 10.17.224.0 netmask 255.255.255.0 {
# option routers rtr-224.example.org;
# }
# subnet 10.0.29.0 netmask 255.255.255.0 {
# option routers rtr-29.example.org;
# }
# pool {
# allow members of "foo";
# range 10.17.224.10 10.17.224.250;
# }
# pool {
# deny members of "foo";
# range 10.0.29.10 10.0.29.230;
# }
#}



[28] Comentário enviado por riccelli_reis em 03/06/2016 - 18:00h


[27] Comentário enviado por krytico em 03/06/2016 - 14:10h


[26] Comentário enviado por riccelli_reis em 02/06/2016 - 14:10h


[25] Comentário enviado por krytico em 01/06/2016 - 14:02h

Olá! Parabéns pelo trabalho e obrigado por ter compartilhado!

Estou começando a me aventurar com linux, trabalho há um certo tempo com informática e resolvi aprendera configurar servidores linux.

Fiz tudo conforme os passos, cuidando os ips etc, porém, quando chego na parte do firewall, depois q inicio ele, não consigo acessar mais o servidor pela rede(nem pingar no ip do servidor consigo) e acessando pelo servidor, também não consigo pingar para lugar algum. Saberia me dizer o quê estou fazendo de errado? Ja refiz, sem mentiras, 15x! Sempre formatando e começando do zero.

Desde já agradeço.


Opa! Obrigado pelo elogio, desculpa pela demora e vamos lá! Algumas pessoas fizeram contato relatando o mesmo problema. Antes de resolver, por favor, envie os resultados dos seguintes comandos:
# ifconfig
# route -n
# cat /etc/network/interfaces
# cat /etc/resolv.conf
# cat /etc/hosts
# cat /etc/init.d/firewall
# cat /etc/dhcp/dhcpd.conf

No aguardo...

Abraço.


Opa, desculpe a demora pra responder. Segue as configurações solicitadas


root@server:/etc/squid3# ifconfig
eth0 Link encap:Ethernet Endereço de HW 00:05:00:a0:32:ba
inet end.: 192.168.1.73 Bcast:192.168.1.255 Masc:255.255.255.0
endereço inet6: fe80::205:ff:fea0:32ba/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:209977 errors:0 dropped:0 overruns:0 frame:0
TX packets:126038 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:296591756 (282.8 MiB) TX bytes:11278443 (10.7 MiB)

eth1 Link encap:Ethernet Endereço de HW 00:1a:3f:7d:16:15
inet end.: 192.168.0.1 Bcast:192.168.255.255 Masc:255.255.0.0
UP BROADCASTMULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACKRUNNING MTU:65536 Métrica:1
RX packets:123 errors:0 dropped:0 overruns:0 frame:0
TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:26502 (25.8 KiB) TX bytes:26502 (25.8 KiB)

root@server:/etc/squid3# route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

cat /etc/network/interfaces
root@server:/etc/squid3# cat /etc/network/interfaces
iface lo inet loopback

#Interface Internet
iface eth0 inet dhcp

#Interface Rede Local
iface eth1 inet static
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.255.255
network 192.168.0.0

allow-hotplug eth0

allow-hotplug eth1

auto lo

auto eth0

auto eth1

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

#source /etc/network/interfaces.d/*

# The loopback network interface
#auto lo
#iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

cat /etc/resolv.conf

nameserver 192.168.1.1

# cat /etc/hosts

::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# cat /etc/init.d/firewall


#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Firewall at boot time
# Description: Enable service provided by Firewall Daemon.
### END INIT INFO

export TX="echo -e"

default(){
$TX ""
$TX "&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Iniciando Script de Firewall &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; \n"

$TX "Exportar Variaveis................................................"
export IFNET=eth0
export IFLOC=eth1
export MP=/sbin/modprobe
export RMM="$(which rmmod)"
export IPT=/sbin/iptables
export SVC=/etc/init.d
export IP4=/proc/sys/net/ipv4
export IP4C=/proc/sys/net/ipv4/conf
export NETW=192.168.0.0/24
$TX ".................................................................. OK \n"
}

start() {
echo "Definir politicas padrao........................................."
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desbloquear RP_Filter............................................."
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "0" &gt; $f
done
fi
$TX ".................................................................. OK \n"

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

$TX "Direcionar para Proxy-Cache......................................."
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 80 -j REDIRECT --to-port 3180
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 443 -j REDIRECT --to-port 31443
$TX ".................................................................. OK \n"

$TX "Compartilhar conexao.............................................."
$IPT -t nat -A POSTROUTING -o $IFNET -j MASQUERADE
if [ -e $IP4/ip_forward ]; then
$TX "1" &gt; $IP4/ip_forward
else
$TX "Erro ao habilitar Forward!! Falha Grave no sistema................"
fi
$IPT -A FORWARD -s $NETW -j ACCEPT
$IPT -A FORWARD -d $NETW -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -s $NETW -j ACCEPT
$IPT -P OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

$TX " "
$TX "&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Firewall Iniciado!! &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; \n"
}

stop(){
$TX "Limpar todas as regras de firewall..............................."
export IPT=/sbin/iptables
export SVC=/etc/init.d
$IPT -X
$IPT -F
# Zerar contadores
$IPT -Z
# Definir politicas padrao
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desfazer Compartilhamento........................................."
# Desativar trafego entre as placas de rede
$TX 0 &gt; $IP4/ip_forward
# Ativar rp_filter
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "1" &gt; $f
done
# Reiniciar servico de rede
$SVC/networking restart
fi
$TX ".................................................................. OK \n"

$TX "&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Firewall Parado!!! &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; \n"
}

case "$1" in

inicio) while true; do
default
break
done
;;

start) while true; do
default
start
break
done
;;

stop) while true; do
stop
break
done
;;

restart) while true; do
stop
default
start
break
done
;;

esac

exit 0

# cat /etc/dhcp/dhcpd.conf

#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
# range 10.254.239.10 10.254.239.20;
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;
# option broadcast-address 10.254.239.31;
# option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
# hardware ethernet 08:00:07:26:c0:a5;
# fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
# subnet 10.17.224.0 netmask 255.255.255.0 {
# option routers rtr-224.example.org;
# }
# subnet 10.0.29.0 netmask 255.255.255.0 {
# option routers rtr-29.example.org;
# }
# pool {
# allow members of "foo";
# range 10.17.224.10 10.17.224.250;
# }
# pool {
# deny members of "foo";
# range 10.0.29.10 10.0.29.230;
# }
#}





Amigo, só precisa corrigir alguns detalhes:

1 - Inserir a identificação do seu servidor no arquivos hosts. Digamos que durante a instalação você nomeou a máquina como "Servidor" (sem aspas) e um Grupo de Trabalho como o nome "Empresa". No /etc/hosts, você pode deixar assim:
127.0.0.1 localhost.Empresa localhost
192.168.0.1 Servidor.Empresa Servidor
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

2 - Se estiver usando seu servidor como DNS também (o que aconselho fazer), altere o /etc/resolv.conf:
search Empresa
nameserver 192.168.0.1

3 - No firewall, procure os seguintes trechos e deixe assim:
$TX "Bloquear tudo que for desnecessário............................"
#$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.2.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -P INPUT -j ACCEPT
$IPT -P OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

As linhas acima deixam o firewall bastante "permissivo", mas fará sua rede funcionar. Depois você melhora as regras. Não se preocupe tanto com segurança no momento. Amadureça seus conhecimentos em redes, roteamento, portas, protocolos, serviços, etc... daí faça alguns testes seguindo a regra geral: bloquear tudo, depois ir liberando apenas o que for necessário.


4 - Se não estiver usando seu servidor para DHCP, desative-o e reinicie o sistema:
# update-rc.d isc-dhcp-server remove
# reboot


5 - Se quiser servir os ips da rede com DHCP, indico que deixe o /etc/dhcp/dhcpd.conf assim:
deny client-updates;
deny unknown-clients;
ddns-update-style none;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

ddns-updates off;
one-lease-per-client false;
deny bootp;
option dhcp-server-identifier Servidor;
option domain-name "Empresa";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.1, 8.8.4.4, 8.8.8.8;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;}


Com essas alterações acredito que funcione. Se tiver mais alguma dificuldade pode mandar aí!

Abraço

[29] Comentário enviado por ajserafini em 11/08/2016 - 10:03h

Bom dia,

Nossa, excelente tutorial amigo.

Gostaria de uma ajuda, acabei de fazer a etapa 24. Para fazer o procedimento do certificado na máquina local, teria que compartilhar a conexão de rede correto?
Tentei compartilhar a conexão mas não estou conseguindo acessar, na máquina cliente. :(


Minha estrutura é a seguinte, um ADSL na NET conecta na eth0 e tenho um notebook conectado diretamente na eth1.

Ambas as placas, precisam ter IP fixo, então, desabilitei o DHCP no meu roteador que possui o IP 192.168.0.11 e configurei minha eth0 para ser 192.168.0.1, estou com duvida agora sobre o que colocar na eth1 lá em /etc/network/interfaces.

Poderia me auxiliar por favor?

Muito obrigado.
Abraço.

[30] Comentário enviado por riccelli_reis em 23/09/2016 - 11:59h


[29] Comentário enviado por ajserafini em 11/08/2016 - 10:03h

Bom dia,

Nossa, excelente tutorial amigo.

Gostaria de uma ajuda, acabei de fazer a etapa 24. Para fazer o procedimento do certificado na máquina local, teria que compartilhar a conexão de rede correto?
Tentei compartilhar a conexão mas não estou conseguindo acessar, na máquina cliente. :(


Minha estrutura é a seguinte, um ADSL na NET conecta na eth0 e tenho um notebook conectado diretamente na eth1.

Ambas as placas, precisam ter IP fixo, então, desabilitei o DHCP no meu roteador que possui o IP 192.168.0.11 e configurei minha eth0 para ser 192.168.0.1, estou com duvida agora sobre o que colocar na eth1 lá em /etc/network/interfaces.

Poderia me auxiliar por favor?

Muito obrigado.
Abraço.


Desculpa pela demora. Você pode colocar na eth1 o ip 192.168.1.1

Abraço

[31] Comentário enviado por riccelli_reis em 23/09/2016 - 12:10h

Atualizando:

# systemctl stop squid3

# rm -Rf /var/lib/ssl_db/

# /usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db/

# chown -R proxy:proxy /var/lib/ssl_db/

# cd /etc/squid3/cert (ir para o diretório do certificado)

# openssl genrsa -des3 -out ServidorCA.key 4096 (aqui ele pede para colocar uma senha)

# openssl rsa -in ServidorCA.key -out ServidorCA.np.key (retirando a senha)

#openssl req -nodes -newkey rsa:4096 -sha256 -x509 -days 3650 -key ServidorCA.np.key -out ServidorCA.crt

# cat ServidorCA.np.key ServidorCA.crt > ServidorCA.pem

No Squid.conf:

https_port 31443 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/cert/ServidorCA.pem

sslproxy_version 6

# cp ServidorCA.crt /var/www/html/cert (copiando o certificado que será importado pelos clientes, considerando que você criou o servidor web, com certeza é o jeito mais tranquilo de importar o certificado para todos os navegadores em todos os clientes da rede).

Lembrando que essas configurações foram feitas em dois servidores que estão rodando perfeitamente!

Repetindo: fica mais fácil se você instalar o apache (apt-get install apache2), assim, crie a pasta para o certificado (mkdir /var/www/html/cert), abra o navegador na máquina cliente, digite ip_do_servidor/cert (pelo amor de Deus, não digite as palavras 'ip_do_servidor', coloque os números, o endereço ip!) e importe o certificado para o navegador, como Autoridade Raiz Confiável. Dá trabalho fazer isso em todas as máquinas na rede, porém, basta fazer uma vez.

Abraço.

[32] Comentário enviado por gmj em 14/10/2016 - 11:20h

Bom dia,

Primeiramente agradecer o excelente material, muito bom,

Tenho uma duvida, estou implementando essa solução aqui na empresa e estamos em fase de testes, o squid esta rodando, porem tenho
notado que as paginas https bloqueadas não esta exibindo a tela de bloqueio do squid.
Por exemplo se acessar www.facebook.com.br - exibe a pagina de acesso negado.
Ao acesar https://www.facebook.com.br - não exibe a pagina de erro, mas no navegador aparece a mensagem ERR_TUNNEL_CONNECTION_FAILED
Nos log do squid aparece o bloqueio TCP_DENIED www.facebook.com.br:443

Bom se vc tiver uma ideia do que posso ser esse problema sera muito bem vinda.

Obrigado
Att

[33] Comentário enviado por riccelli_reis em 14/10/2016 - 12:06h


[32] Comentário enviado por gmj em 14/10/2016 - 11:20h

Bom dia,

Primeiramente agradecer o excelente material, muito bom,

Tenho uma duvida, estou implementando essa solução aqui na empresa e estamos em fase de testes, o squid esta rodando, porem tenho
notado que as paginas https bloqueadas não esta exibindo a tela de bloqueio do squid.
Por exemplo se acessar www.facebook.com.br - exibe a pagina de acesso negado.
Ao acesar https://www.facebook.com.br - não exibe a pagina de erro, mas no navegador aparece a mensagem ERR_TUNNEL_CONNECTION_FAILED
Nos log do squid aparece o bloqueio TCP_DENIED www.facebook.com.br:443

Bom se vc tiver uma ideia do que posso ser esse problema sera muito bem vinda.

Obrigado
Att


Bom dia amigo. Faça um teste colocando '.facebook.com.br' na lista de sites bloqueados, adicionando o ponto no começo, sem aspas. Coloque também este endereço na lista de palavras bloqueadas. Eu precisaria analisar melhor para lhe responder exatamente, mas no momento há várias "missões impossíveis" pendentes... Espero já ter ajudado. Se tiver mais dúvidas, comente...

Abraço

[34] Comentário enviado por Cheddarba em 15/10/2016 - 19:55h

Parabéns Riccelli, o artigo é ótimo e vai me ajudar muito, logo, seguirei com vários pedidos de socorro.

Estou na duvida quanto ao DHCP, pois tenho duas faixas de IP na rede uma 10.0.0.x e outra 192.168.1.x e preciso manter IP fixo na faixa 10.0.0.x pois, se trata de uma aplicação especifica em outro servidor para algumas estações. Gostaria de dicas quanto as modificações em seu artigo para manter o IP fixo nas duas faixas. Grato.

[35] Comentário enviado por Cheddarba em 17/10/2016 - 15:31h

Prezado Riccelli,..
Estou no momento do squid3 -z e estou como a msg
"ACL not found: proxy"
Fatal Bungled /etc/squid3/squid.conf line 25: access_log daemon:/var/log/squid3/access.log proxy

O usuario foi reconhecido no comando chown - R proxy /vat/lib/ssl_db/.... não entendi o que houve, pode ajudar? Grato.

RESOLVIDO!!!

[36] Comentário enviado por luisteixeira25 em 27/10/2016 - 12:35h

Prezado Riccelli,
Primeiramente parabenizo pelo excelente tutorial.
Gostaria de solucionar um problema que ainda não consegui resolver, segui todo o passo a passo, mas eu gostaria de bloquear alguns site ssl, facebook,com, youtube.com mesmo para os pcs com acesso liberado, é possível?
até mais

[37] Comentário enviado por jotlourenco em 03/11/2016 - 17:00h

Boa tarde.
Fiz todo procedimento, mas estou tendo o seguinte erro:
O SSL recebeu um registro que excedia o comprimento máximo permitido.
(Código do erro: ssl_error_rx_record_too_long)

[38] Comentário enviado por riccelli_reis em 24/11/2016 - 13:50h


[34] Comentário enviado por Cheddarba em 15/10/2016 - 19:55h

Parabéns Riccelli, o artigo é ótimo e vai me ajudar muito, logo, seguirei com vários pedidos de socorro.

Estou na duvida quanto ao DHCP, pois tenho duas faixas de IP na rede uma 10.0.0.x e outra 192.168.1.x e preciso manter IP fixo na faixa 10.0.0.x pois, se trata de uma aplicação especifica em outro servidor para algumas estações. Gostaria de dicas quanto as modificações em seu artigo para manter o IP fixo nas duas faixas. Grato.


Perdão pela demora. É possível sim. Você só precisa:
1 - Ter as duas redes configuradas no /etc/network/interfaces:
2 - Adicionar as duas redes no /etc/dhcp/dhcpd.conf
3 - Fazer os direcionamentos necessários no firewall/iptables

Solução 1 (como exemplo, digamos que a rede local é atendida pela interface eth1:
auto eth1:1
iface eth1:1 inet static
address 10.0.0.1
netmask 255.0.0.0
broadcast 10.255.255.255
network 10.0.0.0

auto eth1:2
iface eth1:2 inet static
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0


Solução 2:

deny client-updates;
deny unknown-clients;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
ddns-updates off;
one-lease-per-client false;
deny bootp;
option dhcp-server-identifier servidor.com;
option domain-name "servidor.com";

subnet 10.0.0.0 netmask 255.0.0.0 {
option routers 10.0.0.1;
option broadcast-address 10.255.255.255;
option domain-name-servers 10.0.0.1, 8.8.4.4, 8.8.8.8;

group fixos10 {
host fixo101 {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 10.0.0.101;}

host fixo102 {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 10.0.0.102;}
}
}

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option broadcast-address 10.255.255.255;
option domain-name-servers 192.168.1.1, 8.8.4.4, 8.8.8.8;

group fixos192 {
host fixo1921 {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 192.168.1.101;}

host fixo1922 {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 192.168.1.102;}
}
}

Solução 3:
Geralmente um PREROUTING resolve. Exemplo:
iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to 192.168.1.101:1111
Esta regra define que:
qualquer coisa destinada à porta 1111 será direcionada para o ip 192.168.1.101, porta 1111, independente se vindo da internet, da rede 10.0.0.X, ou qualquer outra coisa. Se você quiser especificar, por exemplo, que somente os computadores da rede 10.0.0.0 terão acesso ao servidor 192.168.0.101, bloqueando todo o restante de tráfego para esta porta, ficaria assim:
iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp --dport 1111 -j DNAT --to 192.168.1.101:1111
iptables -A INPUT -p tcp --dport 1111 -j DROP


Espero que ainda ajude. Abraço.

[39] Comentário enviado por riccelli_reis em 24/11/2016 - 13:54h


[37] Comentário enviado por jotlourenco em 03/11/2016 - 17:00h

Boa tarde.
Fiz todo procedimento, mas estou tendo o seguinte erro:
O SSL recebeu um registro que excedia o comprimento máximo permitido.
(Código do erro: ssl_error_rx_record_too_long)


Amigo, comece refazendo o certificado e verificando o seu squid.conf. Isso é considerado um erro de gerenciamento de certificado por parte do seu servidor. Mais abaixo, vou colocar uma atualização do artigo, quanto à recriação do certificado e utilização no squid.conf.
Abraço.

[40] Comentário enviado por riccelli_reis em 24/11/2016 - 14:06h


[35] Comentário enviado por Cheddarba em 17/10/2016 - 15:31h

Prezado Riccelli,..
Estou no momento do squid3 -z e estou como a msg
"ACL not found: proxy"
Fatal Bungled /etc/squid3/squid.conf line 25: access_log daemon:/var/log/squid3/access.log proxy

O usuario foi reconhecido no comando chown - R proxy /vat/lib/ssl_db/.... não entendi o que houve, pode ajudar? Grato.

RESOLVIDO!!!


Perdão pelo "vácuo"! Acredito que bastou tirar o proxy no final da linha e o daemon no começo...
Abraço

[41] Comentário enviado por riccelli_reis em 24/11/2016 - 14:13h


[36] Comentário enviado por luisteixeira25 em 27/10/2016 - 12:35h

Prezado Riccelli,
Primeiramente parabenizo pelo excelente tutorial.
Gostaria de solucionar um problema que ainda não consegui resolver, segui todo o passo a passo, mas eu gostaria de bloquear alguns site ssl, facebook,com, youtube.com mesmo para os pcs com acesso liberado, é possível?
até mais


Perdão pela demora. Tente só reposicionar as regras. Coloque os "deny" acima das ACLs que definem os clientes. Exemplo:

acl Clientes src 192.168.0.1-192.168.0.100
acl SiteBloqueado dstdomain "/etc/squid3/list/sitebloq"
acl PalavraBloqueada url_regex -i "/etc/squid3/list/palavras"

http_access deny SiteBloqueado
http_access deny PalavraBloqueada
http_access allow Clientes

Lembre de criar os dois arquivos (/etc/squid3/sitebloq e palavras), colocar no sitebloq os domínio com um ponto no começo (.facebook.com), colocar no arquivo "palavras" apenas as palavras que deseja bloquear, independente de ser url, conteúdo, título, etc. Depois refazer a cache e reiniciar o squid

Abraço.

[42] Comentário enviado por riccelli_reis em 24/11/2016 - 15:01h

Atualização importante para criação e uso do certificado.

-Entrar no diretório onde os certificados ficarão salvos (no seu pode ser diferente, isto é apenas um exemplo):
cd /etc/squid3/cert

-Criar a chave privada para que o servidor se torne Autoridade Certificadora (CA) :
openssl genrsa -des3 -out servidor.ca.key 4096

-Tirar a senha da chave de CA
openssl rsa -in servidor.ca.key -out servidor.ca.np.key

-Gerar a chave pública da CA
openssl req -nodes -newkey rsa:4096 -sha256 -x509 -days 3650 -key servidor.ca.np.key -out servidor.ca.crt

-Juntar a chave pública e a privada para que o Squid possa usar:
cat servidor.ca.np.key servidor.ca.crt > servidor.ca.pem

-Disponibilizar a chave pública da CA para os clientes. O mais fácil é ativar o servidor web e usar o navegador nos clientes para baixar o certificado:
-apt-get install apache2
-mkdir /var/www/html/cert
-cp servidor.ca.crt /var/www/html/cert

-Gerar chave privada de Servidor, para assegurar comunicação com clientes da rede:
openssl genrsa -des3 -out servidor.key 4096

-Tirar a senha da chave
openssl rsa -in servidor.key -out servidor.np.key

-Gerar requisição para assinatura do certificado
openssl req nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr

-Usar o seu certificado de CA para assinar o certificado do servidor:
openssl x509 -req -days 3650 -in servidor.csr -CA servidor.ca.crt -CAkey servidor.ca.np.key -set_serial 24112016 -out servidor.crt

-Juntar as chaves:
cat servidor.np.key servidor.crt > servidor.pem

-Copiar seus certificados para disponibilizar ao openssl
cp servidor.ca.key servidor.ca.np.key servidor.key servidor.np.key /etc/ssl/private
cp servidor.ca.crt servidor.crt /etc/ssl/certs

-Parar o Squid
/etc/init.d/squid3 stop

-Abrir o Squid.conf e deixar assim (observe que onde tem XXXX, você deve colocar a porta do seu Squid para SSL):
https_port XXXX intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/cert/servidor.ca.pem

-Remover o diretório de certificados antigo
rm -Rf /var/lib/ssl_db

-Recriar a cache de certificados
/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db

-Garantindo permissões da cache de certificados:
chown -R proxy:proxy /var/lib/ssl_db

-Recriando a cache de sites do Squid
squid3 -z

-Finalizando as coisas e reiniciando
squid3 -k parse
/etc/init.d/squid3 start (ou systemctl start squid3.service)

-Verificando se está tudo certo
systemctl status squid3.service

Se aparecer isso, tudo certo:
Active: active (running)

Se estiver algo diferente, refaça desde o início.


Abraço.

[43] Comentário enviado por christianssouza em 10/01/2017 - 16:21h

Olá
Primeiramente Parabéns pelo Tutorial.
Estou passando por uma dificuldade, até o passo Passo 40) estava indo bem porém quando eu executo o comando:
Passo 42) Iniciar o firewall.
/etc/init.d/firewall start
>>>>>>>>>>>>>>>>>>>>> Iniciando Script de Firewall <<<<<<<<<<<<<<<<<<<<<<
Bloquear tudo que for desnecessário.......................................................................
iptables v1.4.21: no command specified
Try 'iptables -h' or 'iptables --help' for more information
E também na parte
Permitir Trafegos de entrada e Saida.......................................................................
iptables v1.4.21: -P requires a chain and a policy
Try 'iptables -h' or 'iptables --help' for more information

Oque posso fazer para arrumar ?
pois após isso cai o ssh e só via console direto que consigo conectar o servidor


[44] Comentário enviado por riccelli_reis em 10/01/2017 - 17:27h


[43] Comentário enviado por christianssouza em 10/01/2017 - 16:21h

Olá
Primeiramente Parabéns pelo Tutorial.
Estou passando por uma dificuldade, até o passo Passo 40) estava indo bem porém quando eu executo o comando:
Passo 42) Iniciar o firewall.
/etc/init.d/firewall start

Bloquear tudo que for desnecessário.......................................................................
iptables v1.4.21: no command specified
Try 'iptables -h' or 'iptables --help' for more information
E também na parte
Permitir Trafegos de entrada e Saida.......................................................................
iptables v1.4.21: -P requires a chain and a policy
Try 'iptables -h' or 'iptables --help' for more information

Oque posso fazer para arrumar ?
pois após isso cai o ssh e só via console direto que consigo conectar o servidor




Boa tarde. No primeiro erro, acredito que seja algo simples, um traço, um espaço, algo assim.
Já no segundo, tente mudar um pouco o script, deixando assim:
$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -o $IFLOC -d $NETW -j ACCEPT
$IPT -A OUTPUT -o $IFNET -j ACCEPT
$TX ".................................................................. OK \n"

[45] Comentário enviado por christianssouza em 10/01/2017 - 18:38h


[44] Comentário enviado por riccelli_reis em 10/01/2017 - 17:27h


[43] Comentário enviado por christianssouza em 10/01/2017 - 16:21h

Olá
Primeiramente Parabéns pelo Tutorial.
Estou passando por uma dificuldade, até o passo Passo 40) estava indo bem porém quando eu executo o comando:
Passo 42) Iniciar o firewall.
/etc/init.d/firewall start

Bloquear tudo que for desnecessário.......................................................................
iptables v1.4.21: no command specified
Try 'iptables -h' or 'iptables --help' for more information
E também na parte
Permitir Trafegos de entrada e Saida.......................................................................
iptables v1.4.21: -P requires a chain and a policy
Try 'iptables -h' or 'iptables --help' for more information

Oque posso fazer para arrumar ?
pois após isso cai o ssh e só via console direto que consigo conectar o servidor




Boa tarde. No primeiro erro, acredito que seja algo simples, um traço, um espaço, algo assim.
Já no segundo, tente mudar um pouco o script, deixando assim:
$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -o $IFLOC -d $NETW -j ACCEPT
$IPT -A OUTPUT -o $IFNET -j ACCEPT
$TX ".................................................................. OK \n"


O primeiro erro consegui acertar mais o segundo mesmo com a linhas que me pediu para colocar está dando um erro :
unknown option INPUT

[46] Comentário enviado por riccelli_reis em 10/01/2017 - 18:47h


Boa tarde. No primeiro erro, acredito que seja algo simples, um traço, um espaço, algo assim.
Já no segundo, tente mudar um pouco o script, deixando assim:
$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -o $IFLOC -d $NETW -j ACCEPT
$IPT -A OUTPUT -o $IFNET -j ACCEPT
$TX ".................................................................. OK \n"


O primeiro erro consegui acertar mais o segundo mesmo com a linhas que me pediu para colocar está dando um erro :
unknown option INPUT


Perdão, a primeira regra deve ser assim:

$IPT -A INPUT -i lo -j ACCEPT

Faltou o '-i'

[47] Comentário enviado por christianssouza em 11/01/2017 - 11:45h


[46] Comentário enviado por riccelli_reis em 10/01/2017 - 18:47h


Boa tarde. No primeiro erro, acredito que seja algo simples, um traço, um espaço, algo assim.
Já no segundo, tente mudar um pouco o script, deixando assim:
$TX "Permitir Trafegos de entrada e Saida......................................"
$IPT -A INPUT -lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -o $IFLOC -d $NETW -j ACCEPT
$IPT -A OUTPUT -o $IFNET -j ACCEPT
$TX ".................................................................. OK \n"


O primeiro erro consegui acertar mais o segundo mesmo com a linhas que me pediu para colocar está dando um erro :
unknown option INPUT


Perdão, a primeira regra deve ser assim:

$IPT -A INPUT -i lo -j ACCEPT

Faltou o '-i'


Obrigado agora deu certo.

Não estou conseguindo rodar o bind, mudei somente as informações do nome do dominio e do servidor.
vim /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "masterlona" {
type master;
file "/etc/bind/db.masterlona";
};

zone "192.168.in-addr.arpa"{
type master;
file "/etc/bind/db.192.168";
};

vim /etc/bind/db.servidor.com
$TTL 604800
@ IN SOA servermlnet2.masterlona. root.masterlona. (
2013120400 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
NS masterlona.
masterlona. A 192.168.0.1
servermlnet2.masterlona. A 192.168.0.1
servermlnet2.masterlona. A 192.168.0.1

www CNAME masterlona.

vim /etc/bind/db.192.168
$TTL 604800
@ IN SOA servermlnet2.masterlona. root.masterlona.(
2013120400 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
NS masterlona.
1.0 PTR masterlona.
1.0 PTR servermlnet2.masterlona.
1.0 PTR servermlnet2.masterlona.

&#9679; bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/bind9.service; enabled)
Drop-In: /run/systemd/generator/bind9.service.d
&#9492;&#9472;50-insserv.conf-$named.conf
Active: active (running) since Qua 2017-01-11 11:39:00 BRST; 10s ago
Docs: man:named(8)
Process: 2104 ExecStop=/usr/sbin/rndc stop (code=exited, status=1/FAILURE)
Main PID: 2152 (named)
CGroup: /system.slice/bind9.service
&#9492;&#9472;2152 /usr/sbin/named -f -u bind

Jan 11 11:39:00 servermlnet2 named[2152]: zone 0.in-addr.arpa/IN: loaded ser...1
Jan 11 11:39:00 servermlnet2 named[2152]: zone 192.168.in-addr.arpa/IN: load...0
Jan 11 11:39:00 servermlnet2 named[2152]: zone 127.in-addr.arpa/IN: loaded s...1
Jan 11 11:39:00 servermlnet2 named[2152]: zone localhost/IN: loaded serial 2
Jan 11 11:39:00 servermlnet2 named[2152]: zone masterlona/IN: loaded serial ...0
Jan 11 11:39:00 servermlnet2 named[2152]: zone 255.in-addr.arpa/IN: loaded s...1
Jan 11 11:39:00 servermlnet2 named[2152]: all zones loaded
Jan 11 11:39:00 servermlnet2 named[2152]: running
Jan 11 11:39:00 servermlnet2 named[2152]: zone 192.168.in-addr.arpa/IN: send...)
Jan 11 11:39:00 servermlnet2 named[2152]: zone masterlona/IN: sending notifi...)
Hint: Some lines were ellipsized, use -l to show in full.

[48] Comentário enviado por riccelli_reis em 11/01/2017 - 12:19h

Primeiro, atribua o nome do seu servidor ao loopback, deve ficar assim no arquivo /etc/hosts:

127.0.0.1 localhost
127.0.0.1 servidor.masterlona servidor
192.168.0.1 servidor.masterlona servidor


Agora tente deixar a configuração assim:
## cd /etc/bind
## vim named.conf.local

//
// Do any local configuration here
//
zone "masterlona" {
type master;
file "/etc/bind/db.masterlona";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.0.168.192";
};
// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";


## vim db.masterlona
;
; BIND zone file for masterlona
;
$TTL 3D
@ IN SOA servidor.masterlona. root.masterlona. (
1 ; serial
8H ; refresh
2H ; retry
4W ; expire
1D ) ; minimum
;
NS servidor.mmasterlona. ; Inet address of name server
NS masterlona.

masterlona. A 192.168.0.1
servidor A 192.168.0.1

masterlona CNAME servidor
www CNAME servidor



## vim db.0.168.192
;
; BIND zone file for 192.168.0.xxx
;
$TTL 3D
@ IN SOA servidor.masterlona. root.masterlona. (
2 ; serial
8H ; refresh
2H ; retry
4W ; expire
1D ) ; minimum
;
NS servidor.masterlona. ; Nameserver address
1 PTR masterlona.
1 PTR servidor.masterlona.


[49] Comentário enviado por christianssouza em 12/01/2017 - 17:53h


[42] Comentário enviado por riccelli_reis em 24/11/2016 - 15:01h

Atualização importante para criação e uso do certificado.

-Entrar no diretório onde os certificados ficarão salvos (no seu pode ser diferente, isto é apenas um exemplo):
cd /etc/squid3/cert

-Criar a chave privada para que o servidor se torne Autoridade Certificadora (CA) :
openssl genrsa -des3 -out servidor.ca.key 4096

-Tirar a senha da chave de CA
openssl rsa -in servidor.ca.key -out servidor.ca.np.key

-Gerar a chave pública da CA
openssl req -nodes -newkey rsa:4096 -sha256 -x509 -days 3650 -key servidor.ca.np.key -out servidor.ca.crt

-Juntar a chave pública e a privada para que o Squid possa usar:
cat servidor.ca.np.key servidor.ca.crt &gt; servidor.ca.pem

-Disponibilizar a chave pública da CA para os clientes. O mais fácil é ativar o servidor web e usar o navegador nos clientes para baixar o certificado:
-apt-get install apache2
-mkdir /var/www/html/cert
-cp servidor.ca.crt /var/www/html/cert

-Gerar chave privada de Servidor, para assegurar comunicação com clientes da rede:
openssl genrsa -des3 -out servidor.key 4096

-Tirar a senha da chave
openssl rsa -in servidor.key -out servidor.np.key

-Gerar requisição para assinatura do certificado
openssl req nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr

-Usar o seu certificado de CA para assinar o certificado do servidor:
openssl x509 -req -days 3650 -in servidor.csr -CA servidor.ca.crt -CAkey servidor.ca.np.key -set_serial 24112016 -out servidor.crt

-Juntar as chaves:
cat servidor.np.key servidor.crt &gt; servidor.pem

-Copiar seus certificados para disponibilizar ao openssl
cp servidor.ca.key servidor.ca.np.key servidor.key servidor.np.key /etc/ssl/private
cp servidor.ca.crt servidor.crt /etc/ssl/certs

-Parar o Squid
/etc/init.d/squid3 stop

-Abrir o Squid.conf e deixar assim (observe que onde tem XXXX, você deve colocar a porta do seu Squid para SSL):
https_port XXXX intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/cert/servidor.ca.pem

-Remover o diretório de certificados antigo
rm -Rf /var/lib/ssl_db

-Recriar a cache de certificados
/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db

-Garantindo permissões da cache de certificados:
chown -R proxy:proxy /var/lib/ssl_db

-Recriando a cache de sites do Squid
squid3 -z

-Finalizando as coisas e reiniciando
squid3 -k parse
/etc/init.d/squid3 start (ou systemctl start squid3.service)

-Verificando se está tudo certo
systemctl status squid3.service

Se aparecer isso, tudo certo:
Active: active (running)

Se estiver algo diferente, refaça desde o início.


Abraço.


Na linha
-Gerar requisição para assinatura do certificado
openssl req nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr
deixar assim
openssl req -nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr

Na Linha
-Recriar a cache de certificados
/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db
deixar assim
/usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db

[50] Comentário enviado por riccelli_reis em 13/01/2017 - 14:34h


[49] Comentário enviado por christianssouza em 12/01/2017 - 17:53h


Na linha
-Gerar requisição para assinatura do certificado
openssl req nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr
deixar assim
openssl req -nodes -newkey rsa:4096 -sha256 -key servidor.np.key -out servidor.csr

Na Linha
-Recriar a cache de certificados
/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db
deixar assim
/usr/lib/squid3/ssl_crtd -c -s /var/lib/ssl_db



Muito Obrigado cristiansouza! Enquanto eu digitava os comandos, copiava do terminal e colava num arquivo texto pra depois publicar aqui. Acho que alguns caracteres sumiram nesse processo.

Abraço

[51] Comentário enviado por riccelli_reis em 30/03/2017 - 16:39h

Prezados leitores, hoje recebi uma ligação de Rondônia para tirar dúvida sobre o Skype não funcionar com o Squid+SSL! Pra mim, uma grata surpresa! Grande abraço Jair!
Seguindo a lógica do artigo, estou testando soluções, já que uso Skype para treinamentos e outras comunicações. Faz duas semanas que parou de passar pelo Squid, ou seja, o Skype usa a porta 443 TAMBÉM e quando a conexão dele chega no certificado que criamos para o Squid, "coisas estranhas" acontecem... Assim que conseguir fazer essa "bagaça" funcionar sem nenhum problema, compartilho aqui a experiência...

[52] Comentário enviado por gregharvey em 31/03/2017 - 10:52h

Olá, estou seguindo os passo e não consigo fazer funcionar, está enroscando no passo 11. A saída do terminal é a seguinte:

parsechangelog/debian: warning: debian/changelog(l7): found start of entry where expected more change data or trailer
LINE: squid3 (3.4.8-6+deb8u4) jessie-security; urgency=high
parsechangelog/debian: warning: debian/changelog(l7): found eof where expected more change data or trailer
dpkg-buildpackage -rfakeroot -D -us -uc -b
dpkg-buildpackage: warning: using a gain-root-command while being root
parsechangelog/debian: warning: debian/changelog(l7): found start of entry where expected more change data or trailer
LINE: squid3 (3.4.8-6+deb8u4) jessie-security; urgency=high
parsechangelog/debian: warning: debian/changelog(l7): found eof where expected more change data or trailer
dpkg-buildpackage: error: unable to determine source changed by
dpkg-buildpackage: source package squid3
dpkg-buildpackage: source version 3.4.8
dpkg-buildpackage: source distribution jessie
debuild: fatal error at line 1376:
dpkg-buildpackage -rfakeroot -D -us -uc -b failed

já dei uma revirada na internet mas não encontrei uma solução, a instalação é 0Km usando a iso debian-8.7.1-i386-netinst.iso (limpa)
a única coisa que instalei a mais foi o openssh_server

Sou novo no linux, então ficarei grato se puderem me ajudar, desde já obrigado.

[53] Comentário enviado por riccelli_reis em 31/03/2017 - 12:24h

Amigo, só confirme se você está no diretório correto (provavelmente /usr/src/squid3.4.8) e os comandos que você digitou foram esses:
# ./configure
# debuild -us -uc -b

Se foi, tente assim:
# ./configure
# make && make install

Se ainda não funcionar, releia os primeiros passos, refaça as instalações iniciais, etc. Como sua versão é netinstall, é possível que esteja faltando alguma coisa. Se quiser testar outra coisa, veja se consegue baixar a ISO do DVD de instalação e instale sem o modo gráfico.

Continuamos a disposição para lhe apoiar.

Abraço



[52] Comentário enviado por gregharvey em 31/03/2017 - 10:52h

Olá, estou seguindo os passo e não consigo fazer funcionar, está enroscando no passo 11. A saída do terminal é a seguinte:

parsechangelog/debian: warning: debian/changelog(l7): found start of entry where expected more change data or trailer
LINE: squid3 (3.4.8-6+deb8u4) jessie-security; urgency=high
parsechangelog/debian: warning: debian/changelog(l7): found eof where expected more change data or trailer
dpkg-buildpackage -rfakeroot -D -us -uc -b
dpkg-buildpackage: warning: using a gain-root-command while being root
parsechangelog/debian: warning: debian/changelog(l7): found start of entry where expected more change data or trailer
LINE: squid3 (3.4.8-6+deb8u4) jessie-security; urgency=high
parsechangelog/debian: warning: debian/changelog(l7): found eof where expected more change data or trailer
dpkg-buildpackage: error: unable to determine source changed by
dpkg-buildpackage: source package squid3
dpkg-buildpackage: source version 3.4.8
dpkg-buildpackage: source distribution jessie
debuild: fatal error at line 1376:
dpkg-buildpackage -rfakeroot -D -us -uc -b failed

já dei uma revirada na internet mas não encontrei uma solução, a instalação é 0Km usando a iso debian-8.7.1-i386-netinst.iso (limpa)
a única coisa que instalei a mais foi o openssh_server

Sou novo no linux, então ficarei grato se puderem me ajudar, desde já obrigado.



[54] Comentário enviado por gregharvey em 01/04/2017 - 19:05h

Primeiramente, obrigado riccelli_reis pela resposta, apesar de não ter funcionado a tua sugestão, devo ter feito algo errado. Então reinstalei tudo do zero inclusive o Debian, segui os passo novamente e funcionou, parcialmente na verdade.

Agora me surge mais uma dúvida, pois seguindo as etapas, apenas trocando as informações de domínio, a partir da eth1 não consigo navegar, nem mesmo acessar o servidor (192.168.0.1) pelo navegador, retorna erro (acesso negado) para todas e quaisquer endereços acessados, mesmo os liberados no arquivo sitehttp, porém, conectando através do modem que fornece sinal para eth0, consigo acessar o apache pelo ip da eth0 normalmente.

Dando uma analisada e fazendo uns testes consegui fazer funcionar a navegação na rede interna (eth1), mas para isso tive que comentar as 4 linhas a partir de $TX "Direcionar para Proxy-Cache.... no arquivo firewall em /etc/init.d/. Outra coisa é que ao comentar estas linhas, dar um restart no firewall e/ou no networking não é o suficiente para a navegação funcionar, só funciona fazendo um reboot no servidor, e ai a navegação funciona, mas sem passar por bloqueio nenhum nem nos endereço do arquivo sitebloq.

A questão de ter que dar um reboot no servidor para as configurações funcionarem, imagino que deva ser algo que não é limpo durante o restart do firewall e/ou networking (falo isso apenas para o pessoal que é mais familiarizado com linux tentar solucionar, se possível), já o fato de ter que comentar as 4 linhas, não consegui resolver de outra forma. Então agradeceria imensamente se alguém puder me acender uma luz sobre isso. Talvez possa ser algo ridículo, mas diante da minha pouca familiaridade com linux (ainda) não tive sucesso, a não ser comentando as linhas.

Espero ter sido claro nas colocações, e desculpe em caso de algum erro.

Obrigado.

[55] Comentário enviado por blaiser em 06/04/2017 - 21:15h

Antes de qualquer coisa, um perfeito trabalho
Sou novato no linux. estou fazendo uma vm.
Até então estava tendo acesso normal. depois que subi o firewall perdir acesso a ela.
Uso porta 22, como faço para deixar ela liberada tanto pra rede interna e a externa?
Grato por ajudar.

[56] Comentário enviado por riccelli_reis em 06/04/2017 - 23:41h


[54] Comentário enviado por gregharvey em 01/04/2017 - 19:05h

Primeiramente, obrigado riccelli_reis pela resposta, apesar de não ter funcionado a tua sugestão, devo ter feito algo errado. Então reinstalei tudo do zero inclusive o Debian, segui os passo novamente e funcionou, parcialmente na verdade.

Agora me surge mais uma dúvida, pois seguindo as etapas, apenas trocando as informações de domínio, a partir da eth1 não consigo navegar, nem mesmo acessar o servidor (192.168.0.1) pelo navegador, retorna erro (acesso negado) para todas e quaisquer endereços acessados, mesmo os liberados no arquivo sitehttp, porém, conectando através do modem que fornece sinal para eth0, consigo acessar o apache pelo ip da eth0 normalmente.

Dando uma analisada e fazendo uns testes consegui fazer funcionar a navegação na rede interna (eth1), mas para isso tive que comentar as 4 linhas a partir de $TX "Direcionar para Proxy-Cache.... no arquivo firewall em /etc/init.d/. Outra coisa é que ao comentar estas linhas, dar um restart no firewall e/ou no networking não é o suficiente para a navegação funcionar, só funciona fazendo um reboot no servidor, e ai a navegação funciona, mas sem passar por bloqueio nenhum nem nos endereço do arquivo sitebloq.

A questão de ter que dar um reboot no servidor para as configurações funcionarem, imagino que deva ser algo que não é limpo durante o restart do firewall e/ou networking (falo isso apenas para o pessoal que é mais familiarizado com linux tentar solucionar, se possível), já o fato de ter que comentar as 4 linhas, não consegui resolver de outra forma. Então agradeceria imensamente se alguém puder me acender uma luz sobre isso. Talvez possa ser algo ridículo, mas diante da minha pouca familiaridade com linux (ainda) não tive sucesso, a não ser comentando as linhas.

Espero ter sido claro nas colocações, e desculpe em caso de algum erro.

Obrigado.


Mais abaixo, novo Script de Firewall que corrige os problemas.

[57] Comentário enviado por riccelli_reis em 06/04/2017 - 23:41h


[55] Comentário enviado por blaiser em 06/04/2017 - 21:15h

Antes de qualquer coisa, um perfeito trabalho
Sou novato no linux. estou fazendo uma vm.
Até então estava tendo acesso normal. depois que subi o firewall perdir acesso a ela.
Uso porta 22, como faço para deixar ela liberada tanto pra rede interna e a externa?
Grato por ajudar.


Mais abaixo, novo Script de Firewall que corrige os problemas.

[58] Comentário enviado por riccelli_reis em 06/04/2017 - 23:44h

Peço desculpas a todos, pois percebi que o script de firewall original tinha erros que causavam bloqueios, falhas, etc... Segue script atualizado e testado, funcionando bem:

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Firewall at boot time
# Description: Enable service provided by Firewall Daemon.
### END INIT INFO

export TX="echo -e"

default(){
$TX ""
$TX ">>>>>>>>>>>>>>>>>> Iniciando Script de Firewall <<<<<<<<<<<<<<<<<< \n"

$TX "Exportar Variaveis................................................"
export IFNET=eth0
export IFLOC=eth1
export IPT=/sbin/iptables
export IP4=/proc/sys/net/ipv4
export IP4C=/proc/sys/net/ipv4/conf
export NETW=192.168.0.0/24
$TX ".................................................................. OK \n"
}

start() {
echo "Definir politicas padrao........................................."
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desbloquear RP_Filter............................................."
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "0" > $f
done
fi
$TX ".................................................................. OK \n"

$TX "Liberar Portas necessarias............................................"
$IPT -p tcp --dport 22 -j ACCEPT
$IPT -p tcp --dport 25 -j ACCEPT
$IPT -p tcp --dport 587 -j ACCEPT
$IPT -p tcp --dport 110 -j ACCEPT
$IPT -p tcp --dport 995 -j ACCEPT
$IPT -p tcp --dport 993 -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

$TX "Direcionar para Proxy-Cache......................................."
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 80 -j REDIRECT --to-port 3180
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 443 -j REDIRECT --to-port 31443
$TX ".................................................................. OK \n"

$TX "Compartilhar conexao.............................................."
$IPT -t nat -A POSTROUTING -o $IFNET -j MASQUERADE
if [ -e $IP4/ip_forward ]; then
$TX "1" > $IP4/ip_forward
else
$TX "Erro ao habilitar Forward!! Falha Grave no sistema................"
fi
$IPT -A FORWARD -s $NETW -j ACCEPT
$IPT -A FORWARD -d $NETW -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de Entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

$TX " "
$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Iniciado!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

stop(){
$TX "Limpar todas as regras de firewall..............................."
export IPT=/sbin/iptables
$IPT -X
$IPT -F
# Zerar contadores
$IPT -Z
# Definir politicas padrao
$IPT -P INPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$TX ".................................................................. OK \n"

$TX "Desfazer Compartilhamento........................................."
# Desativar trafego entre as placas de rede
$TX 0 > $IP4/ip_forward
# Ativar rp_filter
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "1" > $f
done
# Reiniciar servico de rede
Ifdown eth0 && ifdown eth1 && ifup eth0 && ifup eth1
fi
$TX ".................................................................. OK \n"

$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Parado!!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

case "$1" in

inicio) while true; do
default
break
done
;;

start) while true; do
default
start
break
done
;;

stop) while true; do
stop
break
done
;;

restart) while true; do
stop
default
start
break
done
;;

esac

exit 0

[59] Comentário enviado por PenMaster em 10/04/2017 - 15:29h

Bem, primeiramente, excelente o seu artigo, me foi muito útil.

Fiz todos os passos, inclusive as 3 atualizações descritas nos comentários.

O squid funciona muito bem, exceto o fato de não perceber o status "HIT" ou "HIT_MEM" no log de acesso. Ele não está guardando nenhum arquivo (fiz a conferência dentro do diretório do cache).

Isso é normal ?? Pergunto pois se tratando de uma conexão SSL, imaginei que seria a explicação para todos os arquivos derem "MISS" no log.

[60] Comentário enviado por PenMaster em 10/04/2017 - 17:44h

2 pequenas correções no seu scrip do firewall do dia 06/04/2017 - 23h44m

1-) Linha 46 e seguintes:

$TX "Liberar Portas necessarias............................................"
$IPT -p tcp --dport 22 -j ACCEPT
$IPT -p tcp --dport 25 -j ACCEPT
$IPT -p tcp --dport 587 -j ACCEPT
$IPT -p tcp --dport 110 -j ACCEPT
$IPT -p tcp --dport 995 -j ACCEPT
$IPT -p tcp --dport 993 -j ACCEPT
$TX ".................................................................. OK \n"

Creio que poderia ser:

$TX "Liberar Portas necessarias........................................"
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 587 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p tcp --dport 995 -j ACCEPT
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT
$TX ".................................................................. OK \n"

2-) Linha 55 e seguintes:

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

Creio que poderia ser:

$TX "Bloquear tudo que for desnecessário..............................."
$IPT -A INPUT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 10.10.10.1-10.10.255.254 -j DROP
$TX "..........................................

(mas as comentei porque não está funcionando o SSH nem o Apache para o servidor.)

[61] Comentário enviado por riccelli_reis em 12/04/2017 - 10:41h


[59] Comentário enviado por PenMaster em 10/04/2017 - 15:29h

Bem, primeiramente, excelente o seu artigo, me foi muito útil.

Fiz todos os passos, inclusive as 3 atualizações descritas nos comentários.

O squid funciona muito bem, exceto o fato de não perceber o status "HIT" ou "HIT_MEM" no log de acesso. Ele não está guardando nenhum arquivo (fiz a conferência dentro do diretório do cache).

Isso é normal ?? Pergunto pois se tratando de uma conexão SSL, imaginei que seria a explicação para todos os arquivos derem "MISS" no log.


Questão interessante PenMaster. Teoricamente, deveria fazer cache até das páginas que passam pelo ssl_bump. Vou fazer testes no meu aqui e retorno em alguns dias. Se você puder copiar aqui o seu squid.conf, podemos analisar, comparar e achar uma solução. É interessante também criar seu servidor DNS local e forçar as estações de sua rede a passar por ele, pode até ser com uma regra no iptables. Obrigado.

[62] Comentário enviado por riccelli_reis em 12/04/2017 - 11:35h


[60] Comentário enviado por PenMaster em 10/04/2017 - 17:44h

2 pequenas correções no seu scrip do firewall do dia 06/04/2017 - 23h44m

1-) Linha 46 e seguintes:

$TX "Liberar Portas necessarias............................................"
$IPT -p tcp --dport 22 -j ACCEPT
$IPT -p tcp --dport 25 -j ACCEPT
$IPT -p tcp --dport 587 -j ACCEPT
$IPT -p tcp --dport 110 -j ACCEPT
$IPT -p tcp --dport 995 -j ACCEPT
$IPT -p tcp --dport 993 -j ACCEPT
$TX ".................................................................. OK \n"

Creio que poderia ser:

$TX "Liberar Portas necessarias........................................"
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 587 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p tcp --dport 995 -j ACCEPT
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT
$TX ".................................................................. OK \n"

2-) Linha 55 e seguintes:

$TX "Bloquear tudo que for desnecessário............................"
$IPT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 192.168.1.1-192.168.255.254 -j DROP
$TX ".................................................................. OK \n"

Creio que poderia ser:

$TX "Bloquear tudo que for desnecessário..............................."
$IPT -A INPUT -p tcp --dport 3128 -j DROP
$IPT -A INPUT -m iprange --src-range 10.10.10.1-10.10.255.254 -j DROP
$TX "..........................................

(mas as comentei porque não está funcionando o SSH nem o Apache para o servidor.)


Prezado PenMaster, muito obrigado! Tentei corrigir o erro e acabei cometendo outro... Como acesso o servidor por SSH, as vezes, ao copiar o script, alguns caracteres acabam se perdendo.

Por padrão, o SSH trabalha na porta 22 e há uma linha no script liberando. Se você mudar a porta do ssh nas configurações dele, deve mudar no firewall para liberar. Não sei se é o caso, mas espero ajudar.

Lembrando que este script de firewall prevê que o servidor usa ip 192.168.0.1 na interface da rede local, que seria a ETH1, enquanto recebe internet na ETH0, configuradas no /etc/network/interfaces. No início do script, na sessão "Exportar Variáveis", você pode alterar para suas configurações específicas. Basta mudar ali que o script faz o resto.

No caso do Apache, é estranho, creio que uma pequena alteração no firewall resolva, portanto, segue um script atualizado que coloquei ontem num servidor, até agora sem problemas:

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Firewall at boot time
# Description: Enable service provided by Firewall Daemon.
### END INIT INFO

export TX="echo -e"

default(){
$TX ""
$TX ">>>>>>>>>>>>>>>>>> Iniciando Script de Firewall <<<<<<<<<<<<<<<<<< \n"

$TX "Exportar Variaveis................................................"
export IFNET=eth0
export IFLOC=eth1
export IPLOC=192.168.0.1
export IPT=/sbin/iptables
export IP4=/proc/sys/net/ipv4
export IP4C=/proc/sys/net/ipv4/conf
export NETW=192.168.0.0/24
export CNP=192.168.1.1-192.168.255.254
export BNP=172.16.0.1-172.31.255.254
export ANP=10.0.0.1-10.255.255.254
$TX ".................................................................. OK \n"
}

start() {
echo "Definir politicas padrao........................................."
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$TX ".................................................................. OK \n"

$TX "Desbloquear RP_Filter............................................."
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "0" > $f
done
fi
$TX ".................................................................. OK \n"

$TX "Liberar Portas necessarias............................................"
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT #SSH
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT #e-mail
$IPT -A INPUT -p tcp --dport 53 -j ACCEPT #DNS
$IPT -A INPUT -p udp --dport 53 -j ACCEPT #DNS
$IPT -A INPUT -p tcp --dport 587 -j ACCEPT #e-mail
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT #e-mail
$IPT -A INPUT -p tcp --dport 995 -j ACCEPT #e-mail
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT #e-mail
## Caso precise liberar mais alguma porta, copiar as linhas acima, mudando a porta para sua necessidade
$TX ".................................................................. OK \n"

$TX "Bloquear tudo que for desnecessário............................"
$IPT -A INPUT -p tcp --dport 3128 -j DROP #Porta mais comum usada em proxys externos
## Copirar a linha acima se quiser bloquear especificamente mais alguma porta
$IPT -A INPUT -m iprange --src-range $CNP -j DROP
$IPT -A INPUT -m iprange --src-range $BNP -j DROP
$IPT -A INPUT -m iprange --src-range $ANP -j DROP
$TX ".................................................................. OK \n"

$TX "Direcionar para Proxy-Cache......................................."
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 80 ! -d $IPLOC -j REDIRECT --to-port 3180
$IPT -t nat -A PREROUTING -i $IFLOC -s $NETW -p tcp --dport 443 ! -d $IPLOC -j REDIRECT --to-port 31443
$TX ".................................................................. OK \n"

$TX "Compartilhar conexao.............................................."
$IPT -t nat -A POSTROUTING -o $IFNET -j MASQUERADE
if [ -e $IP4/ip_forward ]; then
$TX "1" > $IP4/ip_forward
else
$TX "Erro ao habilitar Forward!! Falha Grave no sistema................"
fi
$IPT -A FORWARD -s $NETW -j ACCEPT
$IPT -A FORWARD -d $NETW -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Permitir Trafegos de Entrada e Saida......................................"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $IFLOC -s $NETW -j ACCEPT
$IPT -A INPUT -i $IFNET -j ACCEPT
$IPT -A OUTPUT -j ACCEPT
$TX ".................................................................. OK \n"

$TX "Bloquear o restante nao especificado ....................................."
$IPT -A INPUT -j DROP
$IPT -A OUTPUT -j DROP
$IPT -A FORWARD -j DROP
$IPT -A INPUT -p tcp --syn -j DROP
$IPT -A OUTPUT -p tcp --syn -j DROP
$IPT -A FORWARD -p tcp --syn -j DROP
$TX ".................................................................. OK \n"

$TX " "
$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Iniciado!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

stop(){
$TX "Limpar todas as regras de firewall..............................."
export IPT=/sbin/iptables
$IPT -X
$IPT -F
# Zerar contadores
$IPT -Z
# Definir politicas padrao
$IPT -P INPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$TX ".................................................................. OK \n"

$TX "Desfazer Compartilhamento........................................."
# Desativar trafego entre as placas de rede
$TX 0 > $IP4/ip_forward
# Ativar rp_filter
if [ -e $IP4C/all/rp_filter ]; then
for f in $IP4C/*/rp_filter; do
$TX "1" > $f
done
# Reiniciar servico de rede
ifdown $IFNET && ifdown $IFLOC && ifup $IFNET && ifup $IFLOC
fi
$TX ".................................................................. OK \n"

$TX "Remover Variaveis ................................................"
unset IFNET IFLOC IPLOC IPT IP4 IP4C NETW CNP BNP ANP
$TX ".................................................................. OK \n"

$TX ">>>>>>>>>>>>>>>>>>>>>> Firewall Parado!!! <<<<<<<<<<<<<<<<<<<<<< \n"
}

case "$1" in

inicio) while true; do
default
break
done
;;

start) while true; do
default
start
break
done
;;

stop) while true; do
stop
break
done
;;

restart) while true; do
stop
default
start
break
done
;;

esac

exit 0

[63] Comentário enviado por warsantos em 22/05/2017 - 23:41h

Primeiramente parabéns pelo empenho deste belo tuto, parabéns ao VOL sempre pela ajuda a nós linuxers, agradeço a todos. Meu mestre riccelli_reis, te peço ajuda no meu caso, montei o servidor com os minimos detalhes explicados, corrigi todos os erros, tanto de scripts, quanto de certificados tudo. mas eu não consigo navegar, a única coisa que funciona é o whatsapp. Creio que deve ser algo no squid. algo nas acls, mas mesmo assim eu não consegui navegar sempre recebo a seguinte mensagem, tando Pc ou celular:

Não é possível acessar esse site

A conexão com www.google.com.br foi recusada

tente:

Verificar a conexão

ERR_CONNECTION_REFUSED

Neste caso em exemplo de tentar acessar o google. E no log do squi aparece assim:

1495424093.188 0 10.0.0.3 TCP_DENIED/403 3814 GET http://www.squid-cache.org/Artwork/SN.png - HIER_NONE/- text/html
1495424095.442 0 10.0.0.3 TCP_DENIED/403 5981 GET http://globoesporte.globo.com/favicon.ico - HIER_NONE/- text/html
1495424197.64
Fica assim para todos os sites.....
Obrigado pela atenção e empenho, nesse belo tutorial!!!!

[64] Comentário enviado por riccelli_reis em 23/05/2017 - 01:32h


[63] Comentário enviado por warsantos em 22/05/2017 - 23:41h

Primeiramente parabéns pelo empenho deste belo tuto, parabéns ao VOL sempre pela ajuda a nós linuxers, agradeço a todos. Meu mestre riccelli_reis, te peço ajuda no meu caso, montei o servidor com os minimos detalhes explicados, corrigi todos os erros, tanto de scripts, quanto de certificados tudo. mas eu não consigo navegar, a única coisa que funciona é o whatsapp. Creio que deve ser algo no squid. algo nas acls, mas mesmo assim eu não consegui navegar sempre recebo a seguinte mensagem, tando Pc ou celular:

Não é possível acessar esse site

A conexão com www.google.com.br foi recusada

tente:

Verificar a conexão

ERR_CONNECTION_REFUSED

Neste caso em exemplo de tentar acessar o google. E no log do squi aparece assim:

1495424093.188 0 10.0.0.3 TCP_DENIED/403 3814 GET http://www.squid-cache.org/Artwork/SN.png - HIER_NONE/- text/html
1495424095.442 0 10.0.0.3 TCP_DENIED/403 5981 GET http://globoesporte.globo.com/favicon.ico - HIER_NONE/- text/html
1495424197.64
Fica assim para todos os sites.....
Obrigado pela atenção e empenho, nesse belo tutorial!!!!



Salve grande warsantos! Percebi que você usa ip de classe A (10.0.0.X). No artigo, usei exemplos com ip de classe C. Poderia ser algo relativo a isso? Mesmo com essa mudança tem como funcionar sem problemas. Confirme suas configurações de tcp/ip nos seguintes arquivos:
/etc/hosts
/etc/network/interfaces
/etc/resolv.conf
/etc/init.d/firewall
/etc/bind/named.conf.local
/etc/dhcp/dhcpd.conf
/etc/squid3/squid.conf

Se tudo estiver correto, por favor, me envie, pode ser por email (r2oweb@gmail.com), o resultado dos seguintes comandos:
# uname -ra
# route -n
# ifconfig -a
# cat /etc/hosts
# cat /etc/network/interfaces
# cat /etc/resolv.conf
# cat /etc/init.d/firewall
# cat /etc/squid3/squid.conf
# cat /var/lib/ssl_db/
# cat /etc/dhcp/dhcpd.conf
# ls /etc/squid3
# ls /etc/squid3/list
# ls /etc/bind
# squid3 -v
# systemctl status squid3
# systemctl status isc-dhcp-server
# systemctl status bind9
# iptables -L
# iptables -t nat -L

Vamos resolver isso!

Abraço

[65] Comentário enviado por jhonatanpalmer em 28/11/2017 - 09:11h

Bom dia, estou com um problema, na hora de roda o comando squid3 -z, ele fica como se estivesse travado, e nao passa desta parte.
ficando assim:

2017/11/28 09:05:09 kid1| Making directories in /var/spool/squid3/0F (esta á a ultima linha)
nesta parte aqui, ele deveria aparecer alguma coisa, ou tenho que encerrar o processo dele?

[66] Comentário enviado por gmj em 15/12/2017 - 14:08h

Bom dia, parabéns pelo artigo, seu estou implementando na empresa e fazendo alguns testes e preciso de uma ajuda,
Skype não conecta mais, após configurar o squid com intercepção SSL não conecta.
Ao acessar sites como gmail.com apresenta o erro - NET:ERR_CERT_COMMON_NAME_INVALID
Att

[67] Comentário enviado por petranski em 30/12/2017 - 00:48h

Nao consigo sair desse erro aff

Makefile:796: recipe for target 'PortCfg.lo' failed
make[4]: *** [PortCfg.lo] Error 1
make[4]: Leaving directory '/usr/src/squid3-3.5.23/src/anyp'
Makefile:7291: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/usr/src/squid3-3.5.23/src'
Makefile:6152: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/usr/src/squid3-3.5.23/src'
Makefile:581: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/usr/src/squid3-3.5.23'
/usr/share/cdbs/1/class/makefile.mk:77: recipe for target 'debian/stamp-makefile-build' failed
make: *** [debian/stamp-makefile-build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
debuild: fatal error at line 1116:
dpkg-buildpackage -rfakeroot -us -uc -b failed
root@servidor:/usr/src/squid3-3.5.23#

[68] Comentário enviado por GeanCarlosGFV em 26/04/2018 - 17:37h

PARABÉNS PELO ARTIGO CARA, ME AJUDOU BASTANTE!
Tenho uma duvida.. nos meus testes ta acontecendo o seguinte..
Na maquina cliente da erro nos sites HTTPS :

SUA CONEXAO NAO È PARTICULAR
NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM

[69] Comentário enviado por joaovol em 25/09/2018 - 17:04h

Cara, você é um deus!!!!!!!!!!!!! Tentei vários e o seu foi o único que foi HTTPS, mas ocorreu um problema. http://i.prntscr.com/OLrhgdyZTmOEbro303XNGg.png fica dando isso quando tento acessar uma página HTTPS. Se alguém me auxiliar agradeço. vlw

[70] Comentário enviado por riccelli_reis em 25/09/2018 - 17:17h


[69] Comentário enviado por joaovol em 25/09/2018 - 17:04h

Cara, você é um deus!!!!!!!!!!!!! Tentei vários e o seu foi o único que foi HTTPS, mas ocorreu um problema. http://i.prntscr.com/OLrhgdyZTmOEbro303XNGg.png fica dando isso quando tento acessar uma página HTTPS. Se alguém me auxiliar agradeço. vlw


Caro joaovol, acredito que basta adicionar a exceção no navegador que passa. Você importou o seu certificado para o navegador também?

[71] Comentário enviado por riccelli_reis em 25/09/2018 - 17:22h

Obrigado a todos que testaram. Para alguns funcionou, para outros não. É bem difícil saber exatamente o motivo de cada situação e resolver. Na maioria basta seguir o artigo à risca, com a mesma versão do sistema operacional e do squid. Testei com Debian, Ubuntu e Fedora, portanto, há pequenas variações. Estou preparando uma atualização deste artigo, do zero, com versões mais atuais de tudo. Claro, só posso publicar depois de testar em vários cenários por algumas semanas e tudo funcionar.

Abraço

[72] Comentário enviado por joaovol em 26/09/2018 - 13:42h


[70] Comentário enviado por riccelli_reis em 25/09/2018 - 17:17h


[69] Comentário enviado por joaovol em 25/09/2018 - 17:04h

Cara, você é um deus!!!!!!!!!!!!! Tentei vários e o seu foi o único que foi HTTPS, mas ocorreu um problema. http://i.prntscr.com/OLrhgdyZTmOEbro303XNGg.png fica dando isso quando tento acessar uma página HTTPS. Se alguém me auxiliar agradeço. vlw


Caro joaovol, acredito que basta adicionar a exceção no navegador que passa. Você importou o seu certificado para o navegador também?


Agradecido pela resposta rápida meu amigo. Testei no Ubuntu 14.04 LTS e squid 3.3.8. Então, como que eu faço essa exceção, amigo? E sim, eu importei.

[73] Comentário enviado por riccelli_reis em 26/09/2018 - 15:35h


Agradecido pela resposta rápida meu amigo. Testei no Ubuntu 14.04 LTS e squid 3.3.8. Então, como que eu faço essa exceção, amigo? E sim, eu importei.


Disponha. A exceção é assim: no firefox, quando tentar abrir algo, clique em Avançado, lá em baixo, deve aparecer o botão 'Adicionar Exceção'; clique no botão, vai aparecer uma janela com outro botão escrito 'Adicionar Exceção'. No Chrome o processo é parecido, vá em Avançado e confirme a exceção. Citei só Firefox e Chrome, mas nos outros browsers é bem parecido, fácil, basta ler um pouco as mensagens que aparecem pra ir no lugar certo.

[74] Comentário enviado por joaovol em 26/09/2018 - 16:55h

Putz, tive uma surpresa aqui. Agora não aparece erro de certificado, porém não bloqueia (trabalhando com blacklist). Fiz o redirecionamento da 80-3128 e 80-3129.

Vou te mostrar uma parte do meu squid.conf

http_port 192.168.xxx.xxx:3128 intercept
https_port 192.168.xxx.xxx:3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid3/cert/cert.pem
visible_hostname Proxy

sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 32 startup=5 idle=1
#sslcrtd_validator_children 32 startup=5 idle=1 concurrency=1 (tive de comentar pq dava erro qnd dava squid3 -k check)
dead_peer_timeout 10 seconds
forward_max_tries 10

acl SSL_ports port 443
acl Safe_ports port 21 80 111 210 389 443 488 591 777 873 901 1025-65535
acl CONNECT method CONNECT

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

acl eu src 192.168.xxx.xxx
acl blacklist url_regex -i "/etc/squid3/blacklist"
http_access allow eu !blacklist
http_access deny all

sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow !blacklist
always_direct allow !blacklist
ssl_bump none eu
ssl_bump server-first all



MUITÍSSIMO OBRIGADO POR AJUDAR!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts