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/javaPress 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:
- sslexplorer-community-backup-restore
- sslexplorer-application-winscp
- sslexplorer-application-ultravnc
- sslexplorer-application-radmin
- sslexplorer-application-putty
- sslexplorer-application-rdp
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.