- Download Squid.
- Webproxy stoppen
- Backup von Squid erstellen.
mkdir -p /backup/sslbump
mv /usr/sbin/squid /backup/sslbump
mv /usr/lib/squid /backup/sslbump/libsquid
- SSH im Webinterface des IPFire aktivieren.
- Das heruntergeladene Archiv zum IPFire hochladen.
scp -C -P 222 squid.tar.gz root@ipadresse:/tmp/
Unter Linux sollte das benötigte Tool „scp“ vorhanden sein. Ansonsten muss das Paket openssh-client nachinstalliert werden. Unter Windows hilft Putty, hier ist „scp“ ebenfalls enthalten.
- Am IPFire anmelden.
ssh -p 222 root@ipadresse
- Ins Verzeichnis „tmp“ wechseln und Archiv entpacken.
tar xvfz squid.tar.gz oder mit tar xvf squid.tar
- Aus entpackten Ordner folgende Dateien verschieben.
- zuerst das Binary
mv squid/usr/sbin/squid /usr/sbin/
- dann den Ordner squid
mv squid/usr/lib/squid /usr/lib/
- Besitzer und Rechte anpassen
chown root:root /usr/sbin/squid
chmod 0755 /usr/sbin/squid
chown root:root /usr/lib/squid -R
chmod 0755 /usr/lib/squid -R
- Jetzt den Zertifikats-Ordner für Squid initialisieren.
/usr/lib/squid/ssl_crtd -c -s /var/lib/ssl_db
(ab Squid-4 lautet der Behehl: /usr/lib/squid/security_file_certgen -c -s /var/lib/ssl_db -M 8MB)
chown -R squid:root /var/lib/ssl_db
- Verzeichnis für Zertifikate anlegen.
mkdir -p /etc/squid/ssl_cert
chown -R root:root /etc/squid/ssl_cert
cd /etc/squid/ssl_cert
- Zertifikate für Squid zur Benutzung von OpenSSL erstellen.
openssl req -new -newkey rsa:1024 -days 1365 -nodes -x509 -keyout myca.pem -out myca.pem
- Zertifikat für den Client erstellen und auf den Webserver von IPFire verschieben,
muss für den jeweiligen Benutzer/Browser mit „http://xxx.xxx.xxx.xxx:81/myca.der“ herunter geladen werden und in die Zertifikatsverwaltung importiert werden .
openssl x509 -in myca.pem -outform DER -out myca.der
mv myca.der /srv/web/ipfire/html/
- Nun die include.acl mit vi anpassen. (gilt bis Squid 3.5.27, für Squid 4.5 siehe am Ende dieser Seite)
vi /var/ipfire/proxy/advanced/acls/include.acl
https_port „ipadresse_des_ipfire“:3129 intercept ssl-bump generate-host-certificates=on cert=/etc/squid/ssl_cert/myca.pem key=/etc/squid/ssl_cert/myca.pem version=1options=NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 8MB
ssl_bump stare all
ssl_bump bump all
- Jetzt noch firewall.local anpassen und mit „/etc/sysconfig/firewall.local start“ laden.
vi /etc/sysconfig/firewall.local
#!/bin/sh
# Used for private firewall rules# See how we were called.
case „$1“ in
start)
## add your ’start‘ rules here
iptables -t nat -A CUSTOMPREROUTING -i green0 -p tcp – -dport 443 -j REDIRECT – -to-ports 3129
;;
stop)
## add your ’stop‘ rules here
iptables -t nat -D CUSTOMPREROUTING -i green0 -p tcp – -dport 443 -j REDIRECT – -to-ports 3129
;;
reload)
$0 stop
$0 start
## add your ‚reload‘ rules here
;;
*)
echo „Usage: $0 {start|stop|reload}“
;;
esac
- Man kann das ganze anstatt in die „firewall.local“ einzutragen das Init-Script von „Squid“ anpassen.
- Damit die Einträge der include.acl in die squid.conf übernommen werden muß über das Webui der Webproxy mit „Speichern und Neustart“ gestartet werden.
Meine include.acl
https_port xxx.xxx.xxx.xxx:3129 cert=/etc/squid/ssl_cert/myca.pem key=/etc/squid/ssl_cert/myca.pem ssl-bump intercept generate-host-certificates=on dynamic_cert_mem_cache_size=8MB version=1
sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 8MB
sslproxy_cipher HIGH:MEDIUM:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
acl broken_sites ssl::server_name „/var/ipfire/proxy/brokensites.squid“
acl step1 at_step sslBump1
ssl_bump peek step1
ssl_bump bump !broken_sites
ssl_bump splice all
Hier noch eine andere Version der include.acl
https_port xxx.xxx.xxx.xxx:3129 cert=/etc/squid/ssl_cert/myca.pem key=/etc/squid/ssl_cert/myca.pem ssl-bump intercept generate-host-certificates=on dynamic_cert_mem_cache_size=8MB version=1
sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 8MB
sslcrtd_children 5
sslproxy_cipher HIGH:MEDIUM:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
acl bump_step1 at_step sslBump1
acl bump_step2 at_step sslBump2
acl bump_step3 at_step sslBump3
acl bump_nobumpsites ssl::server_name „/var/ipfire/proxy/brokensites.squid“
ssl_bump peek bump_step1 all
ssl_bump splice bump_nobumpsites
ssl_bump peek bump_step2 bump_nobumpsites
ssl_bump splice bump_step3 bump_nobumpsites
ssl_bump bump
sslproxy_cert_error deny all
Und noch eine Variante
https_port xxx.xxx.xxx.xxx:3129 cert=/etc/squid/ssl_cert/myca.pem key=/etc/squid/ssl_cert/myca.pem ssl-bump intercept generate-host-certificates=on dynamic_cert_mem_cache_size=8MB version=1
sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 8MB
sslcrtd_children 5
sslproxy_cipher HIGH:MEDIUM:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
acl broken_sites ssl::server_name „/var/ipfire/proxy/brokensites.squid“
ssl_bump splice localhost
ssl_bump splice broken_sites
ssl_bump stare all
ssl_bump bump all
Version der include.acl für Squid 4.5 / 4.6
https_port xxx.xxx.xxx.xxx:3129 cert=/etc/squid/ssl_cert/myca.pem key=/etc/squid/ssl_cert/myca.pem ssl-bump intercept generate-host-certificates=on dynamic_cert_mem_cache_size=8MB
http_port 127.0.0.1:3128
tls_outgoing_options options=NO_SSLv3,ALL
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 8MB
sslproxy_cert_error deny all
on_unsupported_protocol tunnel all
acl ssl_exclude_green_ip dst xxx.xxx.xxx.xxx
acl ssl_exclude ssl::server_name „/var/ipfire/proxy/brokensites.squid“
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump splice localhost
ssl_bump splice ssl_exclude_green_ip
ssl_bump peek step1 all
ssl_bump splice ssl_exclude
ssl_bump stare step2 all
ssl_bump bump all