segunda-feira, 29 de junho de 2015

Pacote do Squid para o CentOS 7


A situação do pacote do Squid no Fedora/CentOS não é das melhores pela falta de mantenedores ativos. Só olhando o arquivo spec já temos a noção que o pacote está mais ou menos abandonado. Eu cansei de reportar bugs que são ignorados, então resolvi criar um novo pacote, chamado squid-magro, para meu uso. Tem pouca coisa habilitada, diminuindo ao máximo o número de dependências e assim compilando menos lentamente nos meus cacarecos.

Amos Jeffries, mantenedor do Squid e participante ativo das discussões a respeito da padronização do protocolo HTTP no IETF, sempre aconselha usar a última versão estável. Correções para bugs graves são backportadas para os branches anteriores (3.3 para cima). No entanto, o melhor é manter-se o mais perto possível da última. A série 2.x está descartada pois é obsoleta, não mais mantida há vários anos e despreparada para lidar com HTTP/1.1, o mínimo necessário para um proxy hoje em dia. Sendo que em maio de 2015 foram publicadas as especificações que compõem o HTTP/2! Nota: mesmo em sua última versão, 4.0, o Squid é um proxy HTTP/1.1. Compatibilidade com HTTP/2 está prevista para o futuro.

Dentro do ciclo de vida das distribuições, costuma ser um parto saírem atualizações até de minor versions. Usando meu próprio pacote, fica simples ter a versão mais recente com poucos ajustes no spec.

Não vá remover o pacote oficial aí na sua instalação sem antes analisar se as minhas modificações causarão problemas. Lembrando: este pacote foi concebido unicamente levando em conta meu caso de uso. Mesmo não servindo, o SRPM pode ser útil a quem procura uma base mais organizada para personalizar.

Algumas características:

- Faxina geral no spec, que não estava em boa condição.
- pinger continua desativado (--enable-icmp ausente).
- Squid 4 funciona com Type=forking. Modo SMP pode ser usado.
- Visto que o systemd espera o daemon finalizar (log do cache não ficará sempre sujo como no pacote oficial), são 30 segundos se não for especificado. Se você quiser diminuir ou mesmo aumentar (cuide que o limite padrão do systemd é 90s), coloque shutdown_lifetime no arquivo de configuração com o tempo desejado, exemplo: shutdown_lifetime 5 seconds.
- logrotate é requerido, pois a configuração padrão usa logfile_rotate 0.
- Helpers habilitados: basic_ncsa_auth, basic_pam_auth, diskd, log_file_daemon, security_file_certgen, unlinkd. Alguns resquícios de scripts Perl removidos.
- basic_pam_auth instalado com SETUID e com permissão de leitura/execução, além do root, apenas para o grupo squid.
- Binários são PIE + Full RELRO e são compilados seguindo as demais configurações do toolchain do CentOS (-fstack-protector-strong, etc).
- A base de certificados SSL é criada automaticamente, se não existir, pelo script cache.sh, executado em ExecStartPre=, facilitando o uso de ssl-bump. Não é preciso configurar sslcrtd_program no arquivo de configuração se você quiser manter os padrões. No caso de corrompimento da base, ou se você mudar o certificado, pare o serviço, exclua o diretório /var/spool/squid/ssl_db e inicie-o novamente.
- cache.sh não redireciona nada para arquivo. Tudo é logado para stdout e stderr, que são capturados pelo systemd-journald e lançados no log do sistema.
- cache.sh executa squid -z para criar a estrutura do cache apenas uma vez, mesmo com múltiplas ocorrências de cache_dir no arquivo de configuração. Ao buscar cache_dir, corretamente considera eventuais espaços e tabulações antes do texto, formatação aceita pelo daemon.
- É distribuída a pasta /etc/squid/ssl, lugar onde coloco o certificado/chave (se ssl-bump for usado). É importante configurar como dono root:squid e retirar todas as permissões para outros usuários nos arquivos! Algo como install -m 640 -o root -g squid certificado.pem /etc/squid/ssl (usando install evita precisar rodar restorecon depois).
- Desativados: ESI, eCAP, ICAP, WCCP, HTCP. Uso-o estritamente como um forward proxy sem recursos corporativos.
- O pacote torna squid obsoleto e simultaneamente o provê.
- Ao ser instalado, começa do zero: apaga o conteúdo, caso exista, de /var/{log,spool}/squid, remanescentes de instalações anteriores. Em atualizações, mantém as pastas intactas.
- O fragmento de configuração do httpd usa como alias /squid/cgi-bin/cachemgr.cgi. Restrição de acesso ao localhost está adaptada às versões com e sem mod_authz_host.
- O SRPM serve para gerar o pacote em qualquer Fedora minimamente atual também. Aliás, talvez até o RPM rode nele, se existirem pacotes que provejam o SONAME das bibliotecas usadas. Não testei, contudo.
- A suíte de testes não é executada na compilação. Toma tempo demais.
- RPMs são comprimidos com XZ.

Dependências (informativo apenas, o YUM as instalará automaticamente):

bash
gawk
glibc
glibc-common
gnutls
libcap
libgcc
libnetfilter_conntrack
libstdc++
logrotate
nettle
openssl-libs
pam
policycoreutils
shadow-utils
systemd
util-linux

Download:
(este post será atualizado com novas versões à medida que saírem)

SRPM: squid-magro-4.0.21-1.src.rpm (2,31 MiB)
RPM: squid-magro-4.0.21-1.x86_64.rpm (2,34 MiB)

MD5:

dd70f994d69fc3d7f73d55d261888a3c  squid-magro-4.0.21-1.src.rpm
689c2b67c4d677835a7074326da3c374  squid-magro-4.0.21-1.x86_64.rpm

Changelog:

* Qui Jul 06 2017 XXX - 4.0.21-1
- Squid 4.0.21

* Sáb Jun 03 2017 XXX - 4.0.20-1
- Squid 4.0.20

* Seg Abr 03 2017 XXX - 4.0.19-1
- Squid 4.0.19
- Habilitada autenticação NCSA (basic_ncsa_auth)

* Seg Fev 06 2017 XXX - 4.0.18-1
- Squid 4.0.18

* Sáb Dez 17 2016 XXX - 4.0.17-1
- Squid 4.0.17

* Ter Dez 13 2016 XXX - 4.0.16-2
- Toda política do SELinux removida (fragmento do logrotate
  chama diretamente o daemon com -k rotate)
- Opção --without-pic removida
- Adicionada epoch na tag Provides, o firewalld depende dela
  a partir do CentOS 7.3

* Qua Nov 02 2016 XXX - 4.0.16-1
- Squid 4.0.16
- Atualizada chave usada para verificar o tarball
  http://lists.squid-cache.org/pipermail/squid-announce/2016-October/000064.html

* Seg Out 10 2016 XXX - 4.0.15-1
- Squid 4.0.15

* Sex Set 09 2016 XXX - 4.0.14-1
- Squid 4.0.14
- Fazer cache.sh ler opção umask de squid.conf

* Sáb Ago 06 2016 XXX - 4.0.13-1
- Squid 4.0.13
- Removido patch obsoleto

* Dom Jul 31 2016 XXX - 4.0.12-2
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4540

* Qui Jul 21 2016 XXX - 4.0.12-1
- Squid 4.0.12
- Política do SELinux movida para /usr/share/selinux/packages

* Qua Jun 22 2016 XXX - 4.0.11-1
- Squid 4.0.11

* Ter Mai 10 2016 XXX - 4.0.10-1
- Squid 4.0.10

* Qui Abr 21 2016 XXX - 4.0.9-1
- Squid 4.0.9
- Removido patch obsoleto
- Usar %make_build

* Sex Abr 08 2016 XXX - 4.0.8-3
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4481

* Ter Abr 05 2016 XXX - 4.0.8-2
- Remover completamente os diretórios /var/log/squid e
  /var/spool/squid em caso de instalação inicial do pacote

* Sáb Abr 02 2016 XXX - 4.0.8-1
- Squid 4.0.8
- Assinatura PGP do tarball é verificada
- Diretório ssl_db movido para /var/spool/squid
  (/var/lib/squid é removido em %posttrans)
- Removida integração com o systemd. A partir da versão 4, o Squid
  funciona bem com Type=forking
- Habilitados todos os módulos DiskIO, cache ufs funciona agora
- Habilitado cache do tipo rock
- Revertido patch que movia /var/run para /run, pois não faz
  diferença e permite simplificar a política do SELinux
- Removido arquivo QUICKSTART, pois precisaria ser quase totalmente
  reescrito para ser útil
- Fazer o pacote ser dono de /etc/squid, /etc/NetworkManager e
  /etc/NetworkManager/dispatcher.d
- errorpage.css e cachemgr.conf seguem as permissões de squid.conf
  (640,root,squid)
- Definir umask em cache.sh antes de rodar security_file_certgen

* Qui Mar 03 2016 XXX - 3.5.15-2
- Patches atualizados
- Pequenas melhorias no spec
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4447

* Sáb Fev 27 2016 XXX - 3.5.15-1
- Squid 3.5.15

* Ter Fev 16 2016 XXX - 3.5.14-1
- Squid 3.5.14
- Removido patch obsoleto
- Removido número de logs a manter do fragmento do logrotate, é
  usada a configuração global
- cache.sh aborta se diretório configurado em cache_dir não existir

* Sáb Fev 13 2016 XXX - 3.5.13-2
- Fazer código em C ser compilado com CFLAGS
  http://bugs.squid-cache.org/show_bug.cgi?id=4431
- --enable-cachemgr-hostname=yes

* Dom Jan 10 2016 XXX - 3.5.13-1
- Squid 3.5.13

* Qui Dez 17 2015 XXX - 3.5.12-3
- Requerer explicitamente systemd >= 209, melhor prevenir
  do que remediar

* Qua Dez 16 2015 XXX - 3.5.12-2
- KillMode=mixed, requer systemd 209 ou superior
  (CentOS 7.2.1511+)
- Descrever usuário squid

* Seg Nov 30 2015 XXX - 3.5.12-1
- Squid 3.5.12
- Removido patch obsoleto

* Seg Nov 02 2015 XXX - 3.5.11-1
- Squid 3.5.11
- Licença alterada para GPLv2+

* Sex Out 02 2015 XXX - 3.5.10-1
- Squid 3.5.10

* Sáb Set 19 2015 XXX - 3.5.9-1
- Squid 3.5.9
- Usar %autosetup

* Ter Set 08 2015 XXX - 3.5.8-1
- Squid 3.5.8

* Qua Ago 05 2015 XXX - 3.5.7-1
- Squid 3.5.7
- Tornar este pacote dono de /etc/httpd e /etc/httpd/conf.d

* Ter Jul 14 2015 XXX - 3.5.6-3
- Conflicts+Provides não fazia sentido, substituído por Obsoletes+Provides

* Sáb Jul 11 2015 XXX - 3.5.6-2
- %configure define [C|CXX|LD]FLAGS

* Ter Jul 07 2015 XXX - 3.5.6-1
- Squid 3.5.6
- Removido patch obsoleto

* Sex Jul 03 2015 XXX - 3.5.5-2
- SELinux: permitir systemctl kill no fragmento de configuração do logrotate
- PrivateTmp=yes

* Sex Jun 26 2015 XXX - 3.5.5-1
- Reempacotamento inicial

Viva aos HITs!

--2016-09-09 10:03:29--  http://popcrush.com/files/2015/05/Carly-Rae-Jepsen-Castle.jpg
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:3128... connected.
Proxy request sent, awaiting response...
  HTTP/1.1 200 OK
  Accept-Ranges: bytes
  Content-Type: image/jpeg
  Date: Fri, 09 Sep 2016 13:00:44 GMT
  ETag: "304777872706e9e967a7ce39d2c8a87f"
  Expires: Sun, 10 Nov 2019 22:47:24 GMT
  Last-Modified: Fri, 01 May 2015 14:22:07 GMT
  Server: ECS (atl/5D9F)
  X-Cache: HIT
  X-Device: desktop
  X-Varnish: 1738230327
  Content-Length: 129714
  Age: 330
  X-Cache: HIT from centos.localdomain
  X-Cache-Lookup: HIT from centos.localdomain:3128
  Via: 1.1 varnish, 1.1 centos.localdomain (squid/4.0.14)
  Connection: close
Length: 129714 (127K) [image/jpeg]
Saving to: 'Carly-Rae-Jepsen-Castle.jpg'

100%[====================================================================================================================>] 129,714     --.-K/s   in 0.001s

2016-09-09 10:03:29 (146 MB/s) - 'Carly-Rae-Jepsen-Castle.jpg' saved [129714/129714]

Nenhum comentário:

Postar um comentário