<div dir="auto">Wow thanks Amos so much for this,<div dir="auto"><br></div><div dir="auto">You think if I build it on rocky Linux, it would be easier?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 17 Nov 2022, 06:07 Amos Jeffries, <<a href="mailto:squid3@treenet.co.nz">squid3@treenet.co.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 16/11/2022 6:31 am, robert k Wild wrote:<br>
> hi all,<br>
><br>
> atm i have written a script, once you have built a centos 7 VM, you <br>
> just run the script and after the reboot its a complete running <br>
> squidclamAV server<br>
><br>
> i'm going to be moving the script to a ubuntu server as centos 7 is <br>
> dead now (as i run clamAV on it, clamAV will stop getting virus <br>
> definitions 2024 as i use this for virus scanning of internet packets)<br>
><br>
> just want to know what lines i need to adjust to work with ubuntu <br>
> instead of centos, obviously i know instead of yum install.... its apt <br>
> install<br>
><br>
<br>
My comments below assume that you want to keep the exact versions as-is <br>
and custom build.<br>
<br>
Otherwise, if you are okay following Ubuntu's official packages and <br>
security fixes things could be a lot different (and simpler).<br>
<br>
<br>
> heres my long script<br>
><br>
> #!/bin/bash<br>
> #<br>
> #this script will download/install and configure the following packages<br>
> #<br>
> #squid - proxy server<br>
> #squid ssl bump - intercept HTTPS traffic<br>
> #clamAV - antivirus engine inc trojans,viruses,malware<br>
> #c-icap - icap server<br>
> #squidclamav - that integrates all the above in squid<br>
<br>
You may not be aware squidclamav has been replaced with eCAP ClamAV module:<br>
<<a href="https://www.e-cap.org/downloads/" rel="noreferrer noreferrer" target="_blank">https://www.e-cap.org/downloads/</a>><br>
<br>
Ubuntu provides libecap package and Squid has support auto-enabled for it.<br>
So all you should need to do is build the ecap-clamav adaptor and <br>
configure it for use.<br>
<br>
<br>
> #whitelist URL's<br>
> #deny MIME types<br>
> #<br>
> #on the PROD host you only need squid<br>
> #<br>
> #first things first lets disable firewalld and SElinux<br>
> #<br>
> systemctl stop firewalld<br>
> systemctl disable firewalld<br>
> sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config<br>
> #<br>
> #squid packages<br>
> #<br>
> yum install -y epel-release screen rsync net-tools ethtool swaks sed <br>
> tar zip unzip curl telnet openssl openssl-devel bzip2-devel libarchive <br>
> libarchive-devel perl perl-Data-Dumper gcc gcc-c++ binutils autoconf <br>
> automake make sudo wget libxml2-devel libcap-devel libtool-ltdl-devel<br>
> #<br>
<br>
Drop "epel-release" as irrelevant on Ubuntu.<br>
<br>
Ubuntu developer packages have "-dev" suffix instead of "-devel". So all <br>
those should change.<br>
<br>
To get access to simpler source building I recommend altering the apt <br>
configuration like so:<br>
<br>
     sudo sed --in-place -E 's/# (deb-src.*updates main)/  \1/g' <br>
/etc/apt/sources.list<br>
     sudo apt-get --quiet=2 update<br>
<br>
<br>
There are some trivial package naming differences. When apt complains <br>
about not finding a package you can use<br>
<<a href="https://packages.ubuntu.com/search" rel="noreferrer noreferrer" target="_blank">https://packages.ubuntu.com/search</a>> to search for the Ubuntu naming <br>
and/or any alternatives.<br>
<br>
<br>
Many of those are not related to Squid in any way. Perhapse separate <br>
them into a different install command?<br>
<br>
After the above deb-src change the packages needed to build Squid for <br>
Ubuntu can be installed like so:<br>
<br>
     sudo apt-get --quiet=2 build-dep squid<br>
<br>
Similar commands also for clamav, c-icap any others which Ubuntu <br>
provides packages for.<br>
<br>
After that build-dep command you only need to install dependencies if <br>
the Ubuntu package lacks support.<br>
For example, Ubuntu older than 21.10 lack openssl natively, so "apt <br>
install libssl-dev" may be needed specially.<br>
<br>
<br>
> #clamAV packages<br>
> #<br>
> yum install -y clamav-server clamav-data clamav-update <br>
> clamav-filesystem clamav clamav-scanner-systemd clamav-devel <br>
> clamav-lib clamav-server-systemd<br>
> #<br>
<br>
<br>
> #download and compile from source<br>
> #<br>
> cd /tmp<br>
> wget <a href="http://www.squid-cache.org/Versions/v4/squid-4.17.tar.gz" rel="noreferrer noreferrer" target="_blank">http://www.squid-cache.org/Versions/v4/squid-4.17.tar.gz</a><br>
> wget <br>
> <a href="http://sourceforge.net/projects/c-icap/files/c-icap/0.5.x/c_icap-0.5.10.tar.gz" rel="noreferrer noreferrer" target="_blank">http://sourceforge.net/projects/c-icap/files/c-icap/0.5.x/c_icap-0.5.10.tar.gz</a> <br>
> --no-check-certificate<br>
> wget <br>
> <a href="http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.5.x/c_icap_modules-0.5.5.tar.gz" rel="noreferrer noreferrer" target="_blank">http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.5.x/c_icap_modules-0.5.5.tar.gz</a> <br>
> --no-check-certificate<br>
> wget <br>
> <a href="https://sourceforge.net/projects/squidclamav/files/squidclamav/7.1/squidclamav-7.1.tar.gz" rel="noreferrer noreferrer" target="_blank">https://sourceforge.net/projects/squidclamav/files/squidclamav/7.1/squidclamav-7.1.tar.gz</a> <br>
> --no-check-certificate<br>
> #<br>
> for f in *.tar.gz; do tar xf "$f"; done<br>
> #<br>
> cd /tmp/squid-4.17<br>
> ./configure --with-openssl --enable-ssl-crtd --enable-icap-client <br>
> --enable-http-violations && make && make install<br>
<br>
The prefix can be a bit different on Debian/Ubuntu. To ensure it is <br>
right add --prefix=/usr/local to the above options.<br>
<br>
<br>
> #<br>
> cd /tmp/c_icap-0.5.10<br>
> ./configure 'CXXFLAGS=-O2 -m64 -pipe' 'CFLAGS=-O2 -m64 -pipe' <br>
> --without-bdb --prefix=/usr/local && make && make install<br>
> #<br>
> cd /tmp/squidclamav-7.1<br>
> ./configure 'CXXFLAGS=-O2 -m64 -pipe' 'CFLAGS=-O2 -m64 -pipe' <br>
> --with-c-icap=/usr/local --with-libarchive && make && make install<br>
> #<br>
> cd /tmp/c_icap_modules-0.5.5<br>
> ./configure 'CFLAGS=-O3 -m64 -pipe' <br>
> 'CPPFLAGS=-I/usr/local/clamav/include' 'LDFLAGS=-L/usr/local/lib <br>
> -L/usr/local/clamav/lib/' && make && make install<br>
> #<br>
> #creating shortcuts and copying files<br>
> #<br>
> cp -f /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.conf.orig<br>
> cp -f /usr/local/etc/c-icap.conf /usr/local/etc/c-icap.conf.orig<br>
> cp -f /usr/local/etc/squidclamav.conf /usr/local/etc/squidclamav.conf.orig<br>
> cp -f /usr/local/etc/clamav_mod.conf /usr/local/etc/clamav_mod.conf.orig<br>
> cp -f /usr/local/etc/virus_scan.conf /usr/local/etc/virus_scan.conf.orig<br>
> #<br>
> ln -s /usr/local/squid/etc/squid.conf /etc<br>
> ln -s /usr/local/etc/c-icap.conf /etc<br>
> ln -s /usr/local/etc/squidclamav.conf /etc<br>
> ln -s /usr/local/etc/clamav_mod.conf /etc<br>
> ln -s /usr/local/etc/virus_scan.conf /etc<br>
> #<br>
> mkdir -p /usr/local/clamav/share/clamav<br>
> ln -s /var/lib/clamav /usr/local/clamav/share/clamav<br>
> #<br>
> #tmpfiles for run files<br>
> #<br>
> echo "d /var/run/c-icap 0755 root root -" >> /etc/tmpfiles.d/c-icap.conf<br>
> echo "d /var/run/clamav 0755 root root -" >> /etc/tmpfiles.d/clamav.conf<br>
> #<br>
> #original squid config<br>
> #<br>
> sed -i '/http_port 3128/d' /usr/local/squid/etc/squid.conf<br>
> sed -i -e 's%http_access deny !Safe_ports%#http_access deny <br>
> !Safe_ports%g' /usr/local/squid/etc/squid.conf<br>
> sed -i -e 's%http_access deny CONNECT !SSL_ports%#http_access deny <br>
> CONNECT !SSL_ports%g' /usr/local/squid/etc/squid.conf<br>
<br>
Reason? this opens a large number of security vulnerabilities.<br>
<br>
<br>
Modern Squid have an "include" directive to import extra squid.conf <br>
rules from other files and/or directories.<br>
I recommend adding this one line to squid.conf under where it says <br>
"|INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS"|:<br>
<br>
|include /etc/squid/conf.d/*.conf|<br>
<br>
then placing all your custom Squid files in that conf.d directory.<br>
<br>
<br>
> #<br>
> #create URL, MIME and public key list<br>
> #<br>
> echo "#eicar" >> /usr/local/squid/etc/urlwhite.txt<br>
> echo ".<a href="http://eicar.org" rel="noreferrer noreferrer" target="_blank">eicar.org</a> <<a href="http://eicar.org" rel="noreferrer noreferrer" target="_blank">http://eicar.org</a>>" >> /usr/local/squid/etc/urlwhite.txt<br>
> #<br>
> echo "<a href="http://updater.maxon.net/server_test" rel="noreferrer noreferrer" target="_blank">http://updater.maxon.net/server_test</a>" >> <br>
> /usr/local/squid/etc/urlspecial.txt<br>
> #<br>
> echo "application/octet-stream" >> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/x-msi" >> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/zip" >> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/x-7z-compressed" >> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/vnd.ms-cab-compressed" >> <br>
> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/x-msdownload" >> /usr/local/squid/etc/mimedeny.txt<br>
> echo "application/x-iso9660-image" >> /usr/local/squid/etc/mimedeny.txt<br>
<br>
FWIW: squid config files are all agnostic to whitespace indentation. So <br>
you should be able to improve script readability like this:<br>
<br>
  echo "<br>
    blah<br>
    blah<br>
    blah<br>
    blah<br>
" >> path/to/file<br>
<br>
<br>
Also, I see that you are adding systemd integration for the other software.<br>
There is a file in squid tarball at tools/systemd/squid.service that can <br>
be installed to add that.<br>
You will need to adjust the binary paths inside it to your custom <br>
/usr/local ones.<br>
<br>
Also, consider using logrotate package to manage the log files instead <br>
of cron.<br>
<br>
<br>
HTH<br>
Amos<br>
<br>
_______________________________________________<br>
squid-users mailing list<br>
<a href="mailto:squid-users@lists.squid-cache.org" target="_blank" rel="noreferrer">squid-users@lists.squid-cache.org</a><br>
<a href="http://lists.squid-cache.org/listinfo/squid-users" rel="noreferrer noreferrer" target="_blank">http://lists.squid-cache.org/listinfo/squid-users</a><br>
</blockquote></div>