Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwareanleitungen:internetcafe_proxy

Debian 8 Cache-Proxies für Internetcafés

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.

to do

  1. wie cached apt-cacher? Ist irgendwann die Platte voll?
  2. aktuell wird https traffic gar nicht gefilter! Sollte ggf. noch implementiert werden
  3. VPN

Grundinstallation

  1. Debian 8 Bootmedium booten (bei den P3 Maschinen zwingend netinstall CD, da kein DVD vorhanden und kein Boot von USB möglich)
    1. vorher ggf. im BIOS (F10) das CDROM-Laufwerk als Bootmedium wählen
  2. Installation starten
  3. Installer folgen
  4. Systemsprache: Englisch
  5. Region: Other → Europe → Germany
  6. Tastaturlayout: Deutsch
  7. checken welche NIC INet Zugang hat und diese für Installation nutzen (in Normalfall eth1)
  8. Rechnername: donnersbergring-proxyX (X steht für Nummer des Proxys)
  9. Domain: donnersbergring
  10. root-PW: generisches DonnersbergringPW
  11. Nutzer: computerwerk - PW: generisches CW-AdminPW
  12. Installierte Dienste lediglich Tools und SSH. KEINE GRAFISCHE OBERFLÄCHE!!!

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

Netzwerkconfig

  1. über ifconfig prüfen welches NIC Interface Internetzugang hat (siehe auch Einleitung → eth1 ist hier WAN, eth0 ist LAN)
  2. /etc/network/interfaces anpassen:
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 laden

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.

  1. nano /etc/network/if-pre-up.d/01-iptables
#!/bin/bash
# iptables laden
iptables-restore < /etc/iptables.state
exit 0

IP-Forwarding aktivieren

nano /etc/sysctl.conf

Die # vor „net.ipv4.ip_forward=1“ und „net.ipv6.conf.all.forwarding=1“ entfernen

Iptables

  1. nano /etc/iptables.state
  2. einfügen:
# 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

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).

  1. apt-get install radvd
  2. nano /etc/radvd.conf
  3. eventuelle Inhalt ersetzen durch:
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.

dnsmasq

wird genutzt um das lokale Netz mit IPv4-DHCP zu versorgen (IPV6 wäre auch möglich, aber das macht schon radvd)

  1. apt-get install dnsmasq
  2. nano /etc/dnsmasq.conf

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.

Squid

dient uns als transparenter und cachender Proxy. Er ist zudem notwendig um Dansguardian zu betreiben

  1. apt-get install squid3 -y

/etc/init.d/squid.conf

  1. mv /etc/squid3/squid.conf /etc/squid3/squid.conf.save
  2. nano /etc/squid3/squid.conf
  3. einfügen:
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).

Dansguardian

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.

  1. apt-get install -y dansguardian

/etc/dansguardian/dansguardian.conf

  1. nano /etc/dansguardian/dansguardian.conf
  2. ~ 3.Zeile (unconfigured) auskommentieren (# davor setzen)
  3. accessdeniedadress ändern zu 'http://127.0.0.1/cgi-bin/dansguardian.pl'
  4. daemonuser und daemongroup zu „proxy“ ändern
  5. Neu in Version 2.1 von Dansguardian (zzusätzlich zu oben genanntem):
  6. nano /etc/dansguardian/dansguardianf1.conf
  7. accessdeniedadress ändern zu 'http://127.0.0.1/cgi-bin/dansguardian.pl'

getblacklists.sh

Das Script lädt die von Dansguardian verwendteten blacklists herunter und kopiert sie ins Dansguardianverzeichnis

  1. nano ~/getblacklist.sh
#!/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

in crontab einfügen

damit sich die Blacklisten wöchentlich updaten

  1. crontab -e
  2. einfügen:
0 4 * * 1 ~/getblacklist.sh

/etc/dansguardian/lists/bannedsitelist

  1. nano /etc/dansguardian/lists/bannedsitelist
  2. im .includeblock (Stück runterscrollen) hinzufügen:
.Include</etc/dansguardian/lists/blacklists/porn/domains>
.Include</etc/dansguardian/lists/blacklists/sex/lingerie/domains>

/etc/dansguardian/lists/bannedurllist

  1. nano /etc/dansguardian/lists/bannedurllist
  2. im .includeblock (Stück runterscrollen) hinzufügen:
.Include</etc/dansguardian/lists/blacklists/porn/urls>
.Include</etc/dansguardian/lists/blacklists/sex/lingerie/urls>

Zugriffsrechte Logfiles

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

Dansguardian Neustarten

  1. /etc/init.d/dansguardian restart
  2. Wenn erfolgreich dann weiter im Text
  3. Andernfalls mit „systemctl status dansguardian.service“ Fehlermeldung ansehen und ggf. lösen

Access Denied Seite (to do)

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/“

Apt-Cacher-NG

  1. apt-get install apt-cacher-ng (ng ist wichtig, da ohne ng apache benötigt wird)
  2. bei den Clients in den Proxy configurieren:
  3. nano /etc/apt/apt.conf.d/01proxy
Acquire::http { Proxy "http://192.168.1.1:3142"; };
Acquire::https { Proxy "https://"; };
  1. nano /etc/apt-cacher-ng/acng.conf
  2. Nach der Zeile „# VfilePatternEx:“ suchen und durch folgendes ersetzen:
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.

WakeOnLan (WOL)

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

Autostart

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.

VPN (todo)

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

BIOS

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.

softwareanleitungen/internetcafe_proxy.txt · Zuletzt geändert: 2021/01/25 20:14 von 127.0.0.1