Configurar SQUID com SSL_BUMP em modo explicito.

Preparação do Ambiente (SQUID Specific)

Desabilitar SELINUX e FIREWALLD

# yum clean all
# yum -y update
# yum -y install squid
# systemctl start squid
# systemctl enable squid
# cd /etc/squid/
# mkdir ssl_cert
# chown squid:squid ssl_cert/
# chmod 700 ssl_cert
# cd ssl_cert
# openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem
# openssl x509 -in myCA.pem -outform DER -out myCA.der (myCA.der – Ficheiro a instalar nos clientes)
# /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db
# chown squid:squid -R /var/lib/ssl_db

Configuração /etc/squid/squid.conf

  • Comentar a linha:

#http_port 3128

  • Adicionar as seguintes configurações:

http_port 0.0.0.0:3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=16MB cert=/etc/squid/ssl_cert/myCA.pem
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 10
sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
ssl_bump server-first
sslproxy_cert_error allow all

acl ssl_step1 at_step SslBump1
acl ssl_step2 at_step SslBump2
acl ssl_step3 at_step SslBump3
ssl_bump peek ssl_step1
ssl_bump splice all

Reiniciar o SQUID

# systemctl restart squid

Ficheiro de Log

/var/log/squid/access.log

WireShark Remoto

Recentemente deparei-me com a necessidade de analisar tráfego, em tempo real, de servidores remotos com recurso ao Wireshark. A solução encontrada para capturar pacotes remotamente foi a criação de um “named pipe”.

O “named pipe” foi criado com o seguinte comando:

mkfifo /tmp/remote_ppr

Uma vez criado o “named pipe” foi efetuado um tcpdump no servidor remoto fazendo o output para o “named pipe” utilizando o seguinte comando:

ssh root@myserver “tcpdump -s 0 -U -n -w – -i eth0 ‘not port 22 and (host 10.51.234.1 or host 10.51.234.2)'” > /tmp/remote

Por fim, foi iniciado o wireshark a efetuar a leitura dos pacotes recebidos pelo “named pipe”

wireshark -k -i /tmp/remote

Criar certificado auto-assinado para servidor Apache

De forma a criar um certificado auto-assinado para um virtualhost Apache deve optar-se pela utilização do OpenSSL. Uma vez que esteja assegurado que o OpenSSL está instalado deve correr-se o seguinte comando para gerar o certificado e chave privada:

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt

HTTP Strict Transport Security para o Apache, NGINX e Lighttpd

HTTP Strict Transport Security (abreviado HSTS) é uma funcionalidade de de segurança que permite a um website informar o browser que deve comunicar utilizando apenas HTTPS, em vez de utilizar HTTP

Configuração para Apache

Deve adicionar-se ao virtualhost configurado para responder por HTTPS o seguinte:

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

O Apache deve ser reiniciado depois de ser efetuada a alteração à configuração

Configuração para Lighttpd

Para configuração no Lighttpd deve adicionar-se ao ficheiro /etc/lighttpd/lighttpd.conf a seguinte configuração:

server.modules += ( "mod_setenv" )
$HTTP["scheme"] == "https" {
setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains; preload")
}

Deve reiniciar-se o Lighttpd para que as alterações sejam aplicadas.

Configuração para NGINX

A configuração para NGINX é ainda mais sucinta, deve ser adicionado ao bloco SERVER da configuração HTTPS a seguinte linha:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";