Proxy Squid e Squidguard com integração full em Domain Controller

Publicado por Tiago Eduardo Zacarias em 22/06/2022

[ Hits: 2.603 ]

 


Proxy Squid e Squidguard com integração full em Domain Controller



Este tutorial tem o objetivo de integrar o Squid e Squidguard em grupos de Domain Controller possuindo ainda recursos de escaneamento de vírus de tráfego HTTP e HTTPS com o CLAMAV, entre outros recursos.
  • Sistema Operacional Validado: Debian 11
  • Domain Controller: Windows Server 2016
  • Versão do Squid: 4
  • Versão do Squidguard: 1.6
  • Blacklist: Shalla e outras
  • Componentes: Squid + Squidclamav + Clamav + Blacklist + C-ICAP + SSL Bump + Webmin + Samba + Winbind

Obs.: SSL BUMP possui o objetivo somente de permitir que o Squidguard enxergue o conteúdo dentro do túnel SSL e filtre se necessário.

Proxy Squid e Squidguard integrados com Domain Controller + Squidclamav + Clamav + Blacklist + C-ICAP + SSL Bump + Webmin + Samba + Winbind.

Tutorial - Debian 11 - Squid + Squidguard + Squidclamav + C-icap + Clamav, autenticado no AD - (Squid Utilizando o Samba e Winbind para Authenticação | Autenticação via Winbind para usuarios Unix via PAM) e SSL BUMP.

Incluir usuário para as configurações de sudo:

# apt -y install sudo
# visudo

# User privilege specification sudo
user    ALL=(ALL:ALL) ALL

Dependências iniciais ( Pacotes SSSD/relacionados e Kerberos são opcionais para este tutorial):

sudo apt -y install realmd sssd sssd-tools adcli krb5-user packagekit samba samba-common samba-common-bin samba-libs winbind ntpdate

Instalar pacote squid compilado com openssl (para SSL BUMP):

sudo apt -y install squid-openssl squid-cgi

Localtime e Sincronismo de relógio com o AD:

sudo rm -rf /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
sudo ntpdate 10.10.1.10

Crontab:

*/40 * * * * root ntpdate 10.10.1.10

Em /etc/resolv.conf configurar a procura pelo FQDN e IP do Domain Controller:

search example.local
nameserver 10.10.1.10

Ingressar no domínio:

sudo net ads join -U Administrator

Copiar o arquivo de autenticação de grupo para o path: /usr/lib64/squid/wbinfo_group.pl

Permissão:

sudo usermod -a -G winbindd_priv proxy
sudo chown -R root:winbindd_priv /var/lib/samba/winbindd_privileged/*
sudo chown proxy.proxy /usr/lib64/squid/wbinfo_group.pl

Restringir Logon via winbind no servidor Linux:

sudo cp /usr/share/doc/libpam-winbind/examples/pam_winbind/pam_winbind.conf /etc/security/

Nas configs indicar um SID, User ou Grupo:

require_membership_of = tiago_zaca@example.local,12365@example.local

Habilitar e iniciar serviço samba e winbind:

sudo systemctl enable smbd
sudo systemctl start smbd
sudo systemctl enable winbind
sudo systemctl start winbind

Instalar squidguard e instalar/compilar blacklist:

sudo apt -y install squidguard
sudo cp squidGuard.conf /etc/squidguard/
sudo cp BL /var/squidGuard/
sudo chown -R proxy.proxy /var/squidGuard/BL/*
sudo squidGuard -C ALL
sudo chown -R proxy.proxy /var/log/squidguard/*

Instalar c-icap:

sudo apt -y install c-icap libicapapi-dev
sudo cp c-icap.conf /etc/c-icap/
sudo systemctl start c-icap
sudo systemctl enable c-icap

Instalar clamav e squidclamav:

sudo apt -y install clamav clamav-daemon libssl-dev zlib1g-dev libbz2-dev

Incluir porta para daemon Clamd:

sudo vim /etc/clamav/clamd.conf

TCPSocket 3310
TCPAddr localhost

Habilitar e iniciar serviços clamav:

sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon

Download squidclamav:
sudo tar -zxvf squidclamav-7.1.tar.gz
sudo cd squidclamav-7.1 && ./configure --with-libarchive=/usr/lib/x86_64-linux-gnu/libarchive.so && make && make install

Instalar Webmin:

sudo wget https://prdownloads.sourceforge.net/webadmin/webmin-1.991-minimal.tar.gz
sudo tar -zxvf webmin-1.991-minimal.tar.gz && cd webmin-1.991-minimal && setup.sh

Instalar Sarg:

sudo apt -y install fonts-freefont-ttf && wget http://ftp.us.debian.org/debian/pool/main/s/sarg/sarg_2.4.0-1_amd64.deb && dpkg -i sarg_2.4.0-1_amd64.deb

Integrando o PAM com Winbind para autenticação de Unix:

sudo apt -y install libpam-winbind libnss-winbind

Ativar autenticação e criação de diretório HOME:

sudo pam-auth-update

Verificar dependências (opcional):

sudo realm discover example.local

Ingressar no domínio para authenticação (SSSD) (opcional):

sudo realm join example.local

Configurações Squid SSL Bump:

Bypass SSL Bump:

acl do_not_bump dstdomain "/etc/squid/donotbump"
ssl_bump splice do_not_bump

SSL Bump:

sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 1000MB
sslproxy_cert_error allow all
ssl_bump stare all
acl intermediate_fetching transaction_initiator certificate-fetching

Políticas SSL Bump:

http_access allow intermediate_fetching

Service SSL Bump e sem SSL Bump:

# (Com SSL Bump)
http_port 0.0.0.0:3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/certs/bump.crt tls-key=/etc/squid/certs/bump.key cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE tls-dh=prime256v1:/etc/squid/certs/bump_dhparam.pem

# (Sem SSL Bump)
http_port 0.0.0.0:8080

Criar Self-signed certificados e instalar:

sudo mkdir /etc/squid/certs/
sudo cd /etc/squid/certs/
sudo openssl dhparam -outform PEM -out /etc/squid/certs/bump_dhparam.pem 2048
sudo openssl req -new -newkey rsa:2048 -days <certificate validity period in days> -nodes -x509 -keyout bump.key -out bump.crt

Converter certificado em confiável no formato DER para que possa ser importado pelo browser:

sudo openssl x509 -in bump.crt -outform DER -out bump.der

Criar DB:

sudo /usr/lib/squid/ssl_crtd -c -s /var/lib/squid/ssl_db
sudo chown -R proxy:proxy /var/lib/squid

Importar certificado .crt no browser como CA Root confiável.

sudo nano /etc/sysctl.conf

# Custom
net.core.somaxconn = 20480
net.core.netdev_max_backlog = 2048
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_rfc1337 = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

Verificar limitações de abertura simultânea de arquivos do cache:

sudo ulimit -aH


Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Upgrade de Debian Lenny para Debian Squeeze

Instalando o GCompris no Kurumin 7

IPwatchD - Detectar conflitos de IP em GNU/Linux

Exercício Prático LPIC 07

Proxy Error: Plone ou Apache?

  

Comentários
[1] Comentário enviado por maurixnovatrento em 09/07/2022 - 13:42h


Muito bom.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts