Web Proxy mit SSL-Explorer

web updates kmu GmbH-wuk-WordPress und SEO Agentur Web Proxy mit SSL Explorer

Einleitung

Ich möchte ein Web-Proxy welcher durch Squid3 funktioniert, Virenprüfung macht und Werbung heraus filtert. Dies damit egal wo ich mich befinde, auch mal beim Kunden hinter einer Firewall auf all meine Services zugreifen kann. So benötige ich nur eine Verbindung auf eine Webseite und kann danach Alles steuern.
Selbstverständlich auch noch Statistiken für die Nutzung erstellen und veröffentlichen.

Für den Web Proxy setze ich weiterhin die eingestaubte Lösung SSL-Explorer sein.

Pre-Requisites

Um die Pre-Requisites dazu ist Sun Java was im non-free Bereich ist, was man mit den folgenden Befehlen installiert:

echo '' >> /etc/apt/sources.list
echo 'deb http://mirror.switch.ch/ftp/mirror/debian/ squeeze main non-free contrib' >> /etc/apt/sources.list
echo 'deb http://mirror.switch.ch/ftp/mirror/debian/ squeeze-updates main non-free contrib' >> /etc/apt/sources.list
apt-get install ant build-essential zip unzip sun-java6-bin sun-java6-jre -y

Danach müssen wir noch die sun-java/jre auswählen für beide Java Möglichkeiten:

update-alternatives --config java

Sobald wir das eingegeben haben und mehrere Auswahlmöglichkeiten zur Verfügung stehen, kommt eine solche Liste:

There are 3 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
1 /usr/bin/gij-4.3
+ 2 /usr/lib/jvm/java-gcj/jre/bin/java
* 3 /usr/lib/jvm/java-6-sun-1.6.0.26/jre/bin/java

Press enter to keep the default[*], or type selection number:

Wie bereits gesagt, wählen wir das sun-java/jre, was in meinem Fall Nummer 3 wäre.

Das Ganze wiederholen wir auch für javac:

update-alternatives --config javac

SSL-Explorer

Nun endlich können wir den SSL-Explorer installieren:

cd /opt
wget http://downloads.sourceforge.net/project/sslexplorer/SSL-Explorer%201.0/1.0.0_RC17/sslexplorer-1.0.0_RC17-src.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsslexplorer%2F&ts=1329904674&use_mirror=switch
unzip sslexplorer-1.0.0_RC17-src.zip*
mv sslexplorer-1.0.0_RC17 sslexplorer
cd sslexplorer
mkdir /usr/lib/jvm/java-6-sun-1.6.0.26/lib/
cp sslexplorer/sslexplorer/lib/tools.jar /usr/lib/jvm/java-6-sun-1.6.0.26/lib/
ant install

Nun wird eine Aufforderung kommen, den SSL-Explorer per Webadresse zu starten und die Installation abzuschliessen. Sobald dies erledigt ist, kümmern wir uns um den Service:

ant install-service
chmod 700 /opt/sslexplorer/sslexplorer/install/platforms/linux/x86/wrapper
chmod 700 /opt/sslexplorer/sslexplorer/install/platforms/linux/sslexplorer
chmod 700 /opt/sslexplorer/sslexplorer/install/platforms/linux/x86-64/wrapper
/etc/init.d/sslexplorer start

Der SSL-Explorer kann nun konfiguriert werden.

SSL-Explorer Extensions

Es empfiehlt sich die Module nach zu installieren. Sobald man auf den Extension Manager klickt ladet die Webseite schier unendlich (ich ging Mittagessen) irgendwann wird diese aber kommen, bitte VIEL Gedult!!
Ladet hier das Modul Paket runter und installiert die einzelnen ZIP Dateien über die Actions->Upload Extension Möglichkeit:

Virenschutz, Filterregeln & Squid

Nun kümmern wir uns um den Virenschutz, die Filterregeln und den Squid3, welche wir mit folgendem Befehl installieren:

apt-get install squid3 privoxy libclamav-dev clamav clamav-freshclam -y

Havp

Havp muss per Paket installiert werden mit folgenden Befehlen:

cd /opt
wget http://archive.ubuntu.com/ubuntu/pool/universe/h/havp/havp_0.92a-2_amd64.deb
dpkg -i havp_0.92a-2_amd64.deb
apt-get -f install

Ich stelle Havp noch vom Port 8080 auf 3129 um und nur localhost Verbindungen sollen akzeptiert werden:

sed -i 's/# BIND_ADDRESS 127.0.0.1/BIND_ADDRESS 127.0.0.1/g' /etc/havp/havp.config
sed -i 's/# PORT 8080/PORT 3129/g' /etc/havp/havp.config
/etc/init.d/havp stop
/etc/init.d/havp start

Squid

Nun müssen wir noch den Privoxy hinter den Squid3 schalten mit folgendem Befehl:

echo 'cache_peer 127.0.0.1 parent 8118 0 no-query no-digest no-netdb-exchange default' >> /etc/squid3/squid.conf
echo 'never_direct allow all' >> /etc/squid3/squid.conf
sed -i 's/#http_port 3128/http_port localhost:312/g' /etc/squid3/squid.conf
sed -i 's/acl SSL_ports port 443/acl SSL_ports port 443 8443/g' /etc/squid3/squid.conf
sed -i 's/acl Safe_ports port 80/acl Safe_ports port 80 8080/g' /etc/squid3/squid.conf

Werbedomains blockieren

Nun erzeugen wir eine Blockliste von den grössten Werbeseiten und erstellen die Blacklist:

cd /opt
wget http://www.murawski.ch/wp-content/uploads/2012/02/blocked.domains.acl
mv blocked.domains.acl /etc/squid3/blocked.domains.acl
echo "## Liste aktualisiert am: `date +%y%m%d`" > /etc/squid3/autoblocked.domains.acl
wget -O - http://www.mvps.org/winhelp2002/hosts.txt | grep 127.0.0.1  | sed -e '2,$s/127.0.0.1[[:space:]]*//g' -e 's/#.*$//' | grep -v localhost >> /etc/squid3/autoblocked.domains.acl
#Hack für GMX Mailaccounts
sed -i 's/.uimserv.net/.uimserv.net.disabled/g' /etc/squid3/autoblocked.domains.acl
echo 'acl blockeddomain dstdomain "/etc/squid3/blocked.domains.acl"' >> /etc/squid3/squid.conf
echo 'acl blockeddomain2 dstdomain "/etc/squid3/autoblocked.domains.acl"' >> /etc/squid3/squid.conf
echo 'http_access deny blockeddomain' >> /etc/squid3/squid.conf
echo 'http_access deny blockeddomain2' >> /etc/squid3/squid.conf
echo 'half_closed_clients     off' >> /etc/squid3/squid.conf
echo 'hierarchy_stoplist cgi-bin ?' >> /etc/squid3/squid.conf
echo 'acl QUERY urlpath_regex cgi-bin \?' >> /etc/squid3/squid.conf
echo 'no_cache deny QUERY' >> /etc/squid3/squid.conf
echo 'no_cache deny localhost' >> /etc/squid3/squid.conf
echo 'no_cache deny CONNECT' >> /etc/squid3/squid.conf
echo 'no_cache allow all' >> /etc/squid3/squid.conf

Squid3 Cache

Schalten den Cache (30MB) vom Proxy an und stellen ein das nur Dateien mit 43MB oder kleiner heruntergeladen werden dürfen:

touch /etc/squid3/cachemgr.conf
echo 'localhost' > /etc/squid3/cachemgr.conf
echo 'cache_store_log none' >> /etc/squid3/squid.conf
echo 'cache_dir aufs /var/spool/squid3 812 16 256' >> /etc/squid3/squid.conf
echo 'maximum_object_size 32768 KB' >> /etc/squid3/squid.conf
echo 'reply_body_max_size 43000 KB' >> /etc/squid3/squid.conf
echo 'pipeline_prefetch       on' >> /etc/squid3/squid.conf

Anonymous Proxy

Möchte man ein Anonymen Proxy, kann man noch folgende Einstellungen vornehmen:

echo 'forwarded_for off' >> /etc/squid3/squid.conf
echo 'via off' >> /etc/squid3/squid.conf

FTP Verbindungen

Wer FTP auch tunneln möchte, kann folgende Einstellungen vornehmen:

echo 'acl ftp proto FTP' >> /etc/squid3/squid.conf
echo 'http_access allow ftp' >> /etc/squid3/squid.conf
echo 'ftp_passive off' >> /etc/squid3/squid.conf

Damit auch alles Aktiv wird, müssen wir noch den Dienst neustarten:

/etc/init.d/squid3 restart

Privoxy

Den Privoxy schicken wir wiederum zu Havp, um über Clamav nach Viren zu suchen:

echo 'forward / 127.0.0.1:3129' >> /etc/privoxy/config
/etc/init.d/privoxy restart

Webalizer

Für die Statistik brauchen wir noch den Webalizer welchen wir mit folgendem Befehl installieren:

apt-get install webalizer -y

Damit dieser auch weiss was machen, legen wir die Config was die Logfiles auswertet und uns die Statistiken anzeigt:

cd /etc/webalizer
touch webalizer-squid3.conf
echo 'LogFile /var/log/squid3/access.log' >> webalizer-squid3.conf
echo 'LogType squid' >> webalizer-squid3.conf
echo 'HistoryName webalizer.hist' >> webalizer-squid3.conf
echo 'Incremental yes' >> webalizer-squid3.conf
echo 'IncrementalName webalizer.current' >> webalizer-squid3.conf
echo 'ReportTitle Statistik für' >> webalizer-squid3.conf
echo 'HostName SSL-Explorer' >> webalizer-squid3.conf
echo 'PageType htm*' >> webalizer-squid3.conf
echo 'PageType cgi' >> webalizer-squid3.conf
echo 'PageType php3' >> webalizer-squid3.conf
echo 'PageType php' >> webalizer-squid3.conf
echo 'Quiet yes' >> webalizer-squid3.conf
echo 'TimeMe yes' >> webalizer-squid3.conf
echo 'CountryGraph no' >> webalizer-squid3.conf
echo 'TopSites 10' >> webalizer-squid3.conf
echo 'TopKSites 10' >> webalizer-squid3.conf
echo 'TopURLs 30' >> webalizer-squid3.conf
echo 'TopKURLs 10' >> webalizer-squid3.conf
echo 'TopReferrers 30' >> webalizer-squid3.conf
echo 'TopAgents 15' >> webalizer-squid3.conf
echo 'TopCountries 10' >> webalizer-squid3.conf
echo 'TopEntry 10' >> webalizer-squid3.conf
echo 'TopExit 10' >> webalizer-squid3.conf
echo 'TopSearch 10' >> webalizer-squid3.conf
echo 'TopUsers 0' >> webalizer-squid3.conf
echo 'AllURLs yes' >> webalizer-squid3.conf
echo 'HideURL *.gif' >> webalizer-squid3.conf
echo 'HideURL *.GIF' >> webalizer-squid3.conf
echo 'HideURL *.jpg' >> webalizer-squid3.conf
echo 'HideURL *.JPG' >> webalizer-squid3.conf
echo 'HideURL *.png' >> webalizer-squid3.conf
echo 'HideURL *.PNG' >> webalizer-squid3.conf
echo 'HideURL *.rar' >> webalizer-squid3.conf
echo 'HideURL */gateway/gateway.dll' >> webalizer-squid3.conf
echo 'GroupURL /cgi-bin/* CGI Scripts' >> webalizer-squid3.conf
echo 'GroupURL /images/* Images' >> webalizer-squid3.conf
echo 'GroupSite *.facebook.com' >> webalizer-squid3.conf
echo 'GroupSite *.google.com' >> webalizer-squid3.conf
echo 'GroupSite *.google.ch' >> webalizer-squid3.conf
echo 'GroupSite *.youtube.com' >> webalizer-squid3.conf
echo 'GroupSite *.swissquote.ch' >> webalizer-squid3.conf
echo 'GroupDomains 1' >> webalizer-squid3.conf
echo 'GroupShading yes' >> webalizer-squid3.conf
echo 'IgnoreSite localhost' >> webalizer-squid3.conf
echo 'IgnoreReferrer localhost' >> webalizer-squid3.conf
echo 'SearchEngine yahoo.com p=' >> webalizer-squid3.conf
echo 'SearchEngine altavista.com q=' >> webalizer-squid3.conf
echo 'SearchEngine google.com q=' >> webalizer-squid3.conf
echo 'SearchEngine eureka.com q=' >> webalizer-squid3.conf
echo 'SearchEngine lycos.com query=' >> webalizer-squid3.conf
echo 'SearchEngine hotbot.com MT=' >> webalizer-squid3.conf
echo 'SearchEngine msn.com MT=' >> webalizer-squid3.conf
echo 'SearchEngine infoseek.com qt=' >> webalizer-squid3.conf
echo 'SearchEngine webcrawler searchText=' >> webalizer-squid3.conf
echo 'SearchEngine excite search=' >> webalizer-squid3.conf
echo 'SearchEngine netscape.com search=' >> webalizer-squid3.conf
echo 'SearchEngine mamma.com query=' >> webalizer-squid3.conf
echo 'SearchEngine alltheweb.com query=' >> webalizer-squid3.conf
echo 'SearchEngine northernlight.com qr=' >> webalizer-squid3.conf
echo 'SearchEngine sensis.com.au find=' >> webalizer-squid3.conf
echo 'SearchEngine google.nl q=' >> webalizer-squid3.conf
echo 'SearchEngine google.fr q=' >> webalizer-squid3.conf
echo 'SearchEngine google.ch q=' >> webalizer-squid3.conf
echo 'SearchEngine google.ca q=' >> webalizer-squid3.conf
echo 'SearchEngine google.be q=' >> webalizer-squid3.conf

Diese Zeile hier muss auf die eigenen Gegebenheiten angepasst werden. Und zwar muss man hier das Webverzeichnis angeben, wo die Statistiken abgelegt werden sollten. Dieses sollte natürlich nicht schon eine Webseite beinhalten, sonst würde es überschrieben werden ;)

echo 'OutputDir /var/www/murawski.ch/www/statistik/' >> webalizer-squid3.conf

Und nun aktivieren wir den Cronjob welcher automatisch die Statistiken aktualisiert mit:

cd /opt
crontab -l > crontab.tmp
echo '' >> crontab.tmp
echo '24 0,6,8,10,12,14,16,18,20,22 * * * /usr/bin/webalizer -c /etc/webalizer/webalizer-squid3.conf > /dev/null 2>&1' >> crontab.tmp
crontab crontab.tmp
rm crontab.tmp

Nun kann man beim SSL-Explorer einloggen und unter „Configuration -> Server -> Proxy“ noch den Host auf „localhost“ und den Port auf „3128“ einstellen und das Ganze ist eingerichtet.

Abschluss

Man kann nun per Webpanel einen SSL Tunnel auf den eigenen Server starten und von dort aus diesen Proxy als Sprungbrett für Alles nehmen.

Wie auch bei der alten Anleitung, ist dies keine Anleitung um Firmenfirewalls zu umgehen und darf auch nicht ohne Zustimmung dafür genutzt werden!

Danksagung

Auch ein herzliches Dankeschön geht an Silvan vom Roo1024 Blog wo meine Anleitung durchgearbeitet, kontrolliert und verbessert hat, weil ich einfach zu wenig Zeit hatte.
Besucht unbedingt auch seinen Blog, denn auch er hat immer wieder sehr interessante Artikel rund um den IT Bereich.