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