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

Publicado por Tiago Eduardo Zacarias em 22/06/2022

[ Hits: 2.663 ]

 


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

Logando como root pelo modo gráfico

Compilar kernel Linux 2.6.36 no Debian Squeeze

Servidor FTP vsftpd com usuário admin

Uma introdução aos sistemas de inicialização: BSD x System V

OpenVPN autenticando no OpenLDAP via script

  

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