Hinweis: Es gibt im Seafile nun einen VM-Export für einen fertig konfigurierten Proxy. Bei diesem Export sind die Nics eth0/1 getauscht, also eth1 LAN und eth0 für WAN.
Dieser Export kann mit Hilfe des HDD-Tools direkt auf die Platte geschrieben werden. Es erspart ggf. einiges an Konfigurationsarbeit.
To do: Die Anleitung sollte bei Zeiten mal auf Debian 9 umgebaut werden
Wir nutzen Debian 8 als Grundsystem und bauen damit einen Gateway-Router (und Firewall). Über diesen Router cachen wir zudem mit Squid und Apt-Cacher den Datenverkehr um die Verbindung zu entlasten. Außerdem nutzen wir Dansguardian um Pornoseiten zu filtern (Betreiberwunsch, da Gemeinschaftsräume).
Wir nehmen in diesem Fall an, dass eth1 Internetzugang, bzw. WAN ist. eth0 dient also zur Anbindung des lokalen Netzes. Zudem bekommt das lokale Netz das IPv4 Subnetz 192.168.1.0/24 und nutzt den IPv6 Adressbereich von Freifunk Darmstadt (fdca:ffee:ffda:0::/64).
Die Anleitung ist speziell für die P3 Desktop PCs geschrieben und kann bei anderer Hardware ggf. davon abweichen (insbesondere BIOS bezogene Punkte)
Die Anleitung ist im BETA-Stadium, muss also nochmal gecheckt werden.
Gecheckt und sollte jetzt laufen. Bugfreiheit wird aber nicht garantiert.
Nach dem Abarbeiten dieser Liste einmal Neustarten. Dann sollte der Proxy theoretisch laufen.
Nach dem ersten Start sudo installieren (apt-get install sudo) und computerwerk zur Gruppe sudo hinzufügen (adduser computerwerk sudo). Danach läuft der Zugriff per SSH über den Nutzer computerwerk. Nach dem Einloggen „sudo su“ und Passwort eingeben und ihr seid root.
Alternativ den root-Zugriff per SSH zulassen (über /etc/ssh/sshd_config) oder per su zum Root-User wechseln
source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # Internetzugang (WAN) auto eth1 allow-hotplug eth1 iface eth1 inet dhcp iface eth1 inet6 auto # Lokales Netz auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.1 iface eth0 inet6 auto
ACHTUNG! In einer früheren Version wurde per Kommentar auf die Anpassungsmöglichkeit der IP-Adressen von eth0 hingewiesen. In einer neuen Version von ifup/down werden Kommentare neben den Einstellungen nicht mehr unterstützt und somit das Interface nicht mehr initialisiert.
Iptables sind ein Paketfilter der bei jeder debianbasierten Linuxdistribution im Kernel intergiert sind. Mit diesem zwingen wir die Port 80 Pakete durch unseren Proxy und Routenden restlichenTraffic durch den Server. Die Iptables werden allerdings bei jedem Neustart gelöscht und müssen so wiederhergestellt werden. Dies erledigt das folgende Script. Die Datei „/etc/iptables.state“ wird später noch angelegt.
#!/bin/bash # iptables laden iptables-restore < /etc/iptables.state exit 0
nano /etc/sysctl.conf
Die # vor „net.ipv4.ip_forward=1“ und „net.ipv6.conf.all.forwarding=1“ entfernen
# Generated by iptables-save v1.4.21 on Sun Nov 1 04:25:43 2015 *nat :PREROUTING ACCEPT [4814:479227] :INPUT ACCEPT [3447:354685] :OUTPUT ACCEPT [38:2066] :POSTROUTING ACCEPT [176:10532] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 -A OUTPUT -p tcp -m tcp --dport 80 -m owner --uid-owner 13 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 3128 -m owner --uid-owner 13 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 3128 -j REDIRECT --to-ports 8080 -A POSTROUTING -o eth1 -j MASQUERADE COMMIT # Completed on Sun Nov 1 04:25:43 2015 # Generated by iptables-save v1.4.21 on Sun Nov 1 04:25:43 2015 *filter :INPUT ACCEPT [46673:40242324] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [32648:10550101] -A FORWARD -i eth1 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o eth1 -j ACCEPT COMMIT # Completed on Sun Nov 1 04:25:43 2015
Auch hier darauf achten, dass eth0/1 ggf. durch das richtige Interface ersetzt/getauscht wird.
radvd ist für die IPV6 Adressierung der Clients zuständig. Im Gegensatz zu dnsmasq, der sich um IPV4 kümmert, ist radvd kein DHCP sondern sorgt für eine globale Adressierung. Daher bauen unsere iptables auch nicht auf IPV4 Adressen sondern nur auf die verwendeten Interfaces auf. Dadurch werden auch IPV6 Pakete gefiltert die eigentich nicht geroutet werden (so in der Theorie).
interface eth0 { AdvSendAdvert on; AdvIntervalOpt on; MinRtrAdvInterval 60; MaxRtrAdvInterval 300; AdvLinkMTU 1280; AdvOtherConfigFlag on; AdvHomeAgentFlag off; prefix fdca:ffee:ffda:0::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
Auch hier darauf achten, dass eth0 ggf. durch das richtige Interface ersetzt wird.
wird genutzt um das lokale Netz mit IPv4-DHCP zu versorgen (IPV6 wäre auch möglich, aber das macht schon radvd)
Hinzufügen
no-dhcp-interface=eth1 interface=eth0 listen-address=192.168.1.1 dhcp-range=192.168.1.100,192.168.1.150,12h
Auch hier darauf achten, dass eth0/1 ggf. durch das richtige Interface ersetzt wird.
dient uns als transparenter und cachender Proxy. Er ist zudem notwendig um Dansguardian zu betreiben
http_port 3128 http_port 3128 intercept acl localnet src 192.168.1.0/24 #acl localhost src 127.0.0.1/255.255.255.255 acl CONNECT method CONNECT #die acl SSL_ports und Safe_ports Section ist in der aktuellen config eigentlich unnötig... acl SSL_ports port 443 acl SSL_ports port 8444 #sipcall acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 280 acl Safe_ports port 443 acl Safe_ports port 8444 http_access allow localnet http_access allow localhost always_direct allow all cache_dir aufs /var/spool/squid3 50000 16 256 hosts_file /etc/hosts #DNS-Server Freifunk Darmstadt und Google dns_nameservers fdca:ffee:ffda::4 fdca:ffee:ffda::3 fdca:ffee:ffda::2 8.8.8.8 8.8.4.4 cache_replacement_policy heap LFUDA cache_swap_low 90 cache_swap_high 95 #cache_mem 200MB logfile_rotate 10 memory_pools off maximum_object_size 50 MB maximum_object_size_in_memory 50 KB quick_abort_min 0 KB quick_abort_max 0 KB log_icp_queries off client_db off buffered_logs on half_closed_clients off log_fqdn off
Ich hatte zudem Probleme, dass Squid kurz nach dem (erfolgreichen) Start direkt wieder abstürtze. Dies war allerdings nur aus dem syslog ersichtlich (das passiert bei Squid übrigens häufiger, dass es wegen irgendeiner fehlerhaften config abstürzt, aber vorher erfolgreich startet → „tail -f /var/log/syslog“ parallel zum Starten laufen lassen hilft hier unheimlich).
Dient uns als Contentfilter um Pornographie in den Gemeinschaftsräumen zu unterbinden. Theoretisch kann Dansguardian auch noch mehr filtern, dies ist von uns aber nicht gewünscht.
Das Script lädt die von Dansguardian verwendteten blacklists herunter und kopiert sie ins Dansguardianverzeichnis
#!/bin/bash cd /tmp mkdir -p /etc/dansguardian/lists/blacklists/sex/ wget http://www.shallalist.de/Downloads/shallalist.tar.gz tar -xf shallalist.tar.gz cp -R /tmp/BL/porn/ /etc/dansguardian/lists/blacklists/ cp -R /tmp/BL/sex/lingerie/ /etc/dansguardian/lists/blacklists/sex/ rm shallalist.tar.gz
danach machen wir die Datei noch ausführbar
chmod +x getblacklist.sh
Jetzt das Script bitte einmal ausführen
~/getblacklist.sh
damit sich die Blacklisten wöchentlich updaten
0 4 * * 1 ~/getblacklist.sh
.Include</etc/dansguardian/lists/blacklists/porn/domains> .Include</etc/dansguardian/lists/blacklists/sex/lingerie/domains>
.Include</etc/dansguardian/lists/blacklists/porn/urls> .Include</etc/dansguardian/lists/blacklists/sex/lingerie/urls>
Nach dem Ändern des ausführenden Nutzers in der Dansguardian.conf müssen wir die Rechte der Logfiles entsprechend anpassen:
chown -R proxy:proxy /var/log/dansguardian
Die Access-Denied Seite von Dansguardian muss noch angepasst werden. Dort sollten ein paar weitere Infos hin. Insbesondere was getan werden kann falls eine Seite unrechtmäßig gesperrt wurde (im Test bspw. t-online.de weil es Keywords aus dem Bereich Pornographie (Japanisch) enthalten würde :D)
Mehr Infos: http://contentfilter.futuragts.com/wiki/doku.php?id=template_customization Die default Access Denied Seite findet sich unter „/etc/dansguardian/languages/ukenglish/template.html“ Zudem gibt es noch die „dansguardian.pl“ in „/usr/lib/cgi-bin/“
Acquire::http { Proxy "http://192.168.1.1:3142"; }; Acquire::https { Proxy "https://"; };
VfilePatternEx: .*SHA256.*$
Letzteres behebt einen BUG in apt-cacher-ng in Version 8.0.3. Sollte irgendwann eine neue Version des apt-cachers in Debian 8 erscheinen kann dieser Teil weggelassen werden (das wird aber vermutlich nicht passieren, da die neueren Versionen alle unerfüllte Abhängigkeiten haben). Sollten Updates kommen, dann bitte dieses Configfile überschreiben lassen.
Eventuell sollten wir noch checken was die Default Settings für Speicherdauer/Menge sind. Nicht, dass wir da Speicherprobleme bekommen.
Um die PCs warten zu können ist, soweit möglich, WOL aktiviert. Alle DELL Optiplex haben diese Option.
Zu diesem Zweck wird auf den Proxies ggf. etherwake installiert
apt-get install etherwake
mit
etherwake $MAC-Adresse
lassen sich die PCs dann starten
Die notwendigen Programme scheinen sich alle eigenständig einen funktionierenden Autostart anzulegen. Bei korrekter Konfiguration sollte das Gerät also immer korrekt hochfahren und sofort startbereit sein.
Für Fernwartung soll noch VPN auf der Maschine installiert werden Dies soll mit OpenVPN und zentralem LDAP realisiert werden (sobald Letzteres steht). Die Internetcafe-Admins werden hierfür spezifisch freigeschaltet werden
Diese Anleitung gilt nur für die grauen P3 Desktops Rechner
Das BIOS wird über „F10“ geöffnet. USB-Tastaturen sind möglich. Anschließend erscheint ein Prompt mit Sprachen. Diese Anleitung basiert auf der Auswahl „Deutsch“
Im BIOS müssen alle Bootmedien außer Festplatte deaktiviert werden. Dazu auf „Speicher“ → „Boot-Reihenfolge“ gehen und alle Geräte (außer Festplatte) mit „F5“ deaktivieren bzw. je nach BIOS, in der Reihenfolge hinter die Festplatte verschoben werden. Anschließend mit „F10“ den Dialog schließen. Unter „Sicherheit“ → „Netzwerk-Boot“ den Netzwerk-Boot deaktivieren.
Außerdem soll der Proxy automatisch nach einem Stromausfall neu starten. Dafür unter „Erweitert“ → „Systemstart-Optionen“ prüfen, dass „Nach Stromausfall“ auf „Aktiviert“ steht. Sonst ggf. einstellen.
Jetzt wird es etwas absurd, aber wichtig. Um dem Server das Booten ohne Keyboard zu gestattet müssen wir ein „Startup-Passwort“ setzen… Dafür auf „Sicherheit“ → „Kennwort für den Systemstart“ auswählen. Dort eine PAsswort eingeben (ich habe hier das generische CW Admin PW genommen). Mit „F10“ akzeptieren. Nun erscheint unter dem gewählten Punkt „Kennwort für den Systemstart“ der Punkt „Kennwort Optionen“. Dort aktvieren wir den „Netzwerk-Server Modus“ und bestätigen wieder mit „F10“. Nun startet der Server bei einem „Warmstart“ ohne Passwortabfrage und ohne Keyboard Error. Wichtig: Nach einem manuellen herunterfahren (nicht Neustart) wird ab sofort nach dem Kennwort gefragt. Daher nur Neustarten oder vom Strom trennen. Diese beiden gelten als Warmstart.
Optional, aber schick ;) Erneut unter „Sicherheit“ → „Systemkennummern“ folgende Einträge tätigen Systemkennung: „Donnersbergring“ Benutzererkennung: „Computerwerk Darmstadt e.V.“
Sobald alles fertig ist auf „System“ und mit „Einstellungen sichern und neu starten“ den Rechner mit den neuen Einstellungen neu starten.