Não é fácil.
Por padrão, as conexões HTTPS são criptografadas e você não pode passá-las através de um proxy ... o que você pode fazer é filtrá-las pelo IP de destino, permitindo apenas alguns endereços e negando todo o resto usando o firewall; no entanto, alguns servidores usam hosts virtuais e hospedam sites diferentes sob o mesmo IP, portanto, se o mesmo servidor hospedar um site na lista de permissões e um na lista negra, você não poderá bloquear apenas um deles.
No entanto, uma solução é ter o consentimento do usuário para configurar o IP do servidor Squid para ser o proxy do navegador, caso em que o tráfego ainda é criptografado (ele será encapsulado usando CONNECT
solicitações através do proxy), mas o destino hostname estará em texto simples e você poderá aplicar ACLs a isso.
Portanto, uma solução possível seria redirecionar todo o tráfego HTTP para uma página explicando como definir o endereço do servidor proxy no dispositivo e bloquear o tráfego HTTPS direto. Depois que os usuários configurarem o proxy em seus dispositivos, eles poderão navegar na Web por suas regras.
Ah, e irrelevante para a sua pergunta, mas em vez de portais cativos desagradáveis, você considerou usar o EAP para autenticar seus usuários (e fornecer uma rede aberta apenas para novos usuários se registrarem e obterem suas credenciais EAP)?