--------------------------------------------------------------------------------
 domblk - fli4l documentation

 Creation:	26.06.2003 hei
 Last update:	03.03.2004 hei
 Version:	1.0.11 

 written by:	Till Heidtmann <t.heidtmann@web.de>


 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
--------------------------------------------------------------------------------

# ------------------------------------------------------------------------------
# Optional package: DOMBLK
# Section: Firewalling
# ------------------------------------------------------------------------------

********************************* Beschreibung *********************************

Diverse flatrates drfen auch mit Router genutzt werden. 
DOMBLK dient dazu, Domains oder Subdomains sperren und nur fuer einzelne 
IP-Adressen oder Netze des LAN freizugeben. Ansto war der Wunsch dafr zu 
sorgen, dass z.B. bei t-online niemand anderes (im lokalen Netz) den Tarif 
aendern oder die t-online mails abrufen kann, was ohne einen solchen 
Mechanismus ohne weiteres mglich wre. 

Es knnen eine oder mehrere IP-Adressen bzw. hosts im LAN angegeben werden, 
die dennoch auf diese Domains zugreifen knnen. Im Normalfall also Dein 
Rechner:-). Diese Hosts knnen auf _alle_ sonst gesperrten Domains zugreifen.
Wenn bei der Einwahl die IP-Adresse(n) einer zu sperrenden Domain nicht 
ermittelbar ist, wird der Internetzugang zunchst nur diesen Hosts gewhrt und 
es wird alle 20 sec noch einmal probiert, alle aufzulsen.

Die Konfiguration kann zur Laufzeit (ohne neu zu booten und ohne sich neu
einzuwhlen) im mini-http-webserver des fli gendert werden.

Optional knnen web-Zugriffe auf gesperrte Seiten auf eine Fehlermeldungsseite
umgelenkt werden (siehe OPT_ERRPAGE).

**************************** Einschrnkungen **********************************

Wenn sich die Namensauflsung der Domains ndert, whrend der Router online ist
(Dyndns-Domains?), geht die Sperre ggfs. ins Leere.

DOMBLK schtzt nur vor fahrlssiger Fehlbedienung, nicht vor Bsartigkeit
eines Mit-Users, der ohne weitere Manahmen z.B. Namen und IP-Adresse Deines 
Rechners verwenden knnte, wenn Du diesen zum DOMBLK_ACCEPT_HOST gemacht hast. 

Verwendet ein User fr web- oder ftp-Zugriffe einen Proxy, dann greifen die
Sperren nicht (ebensowenig wie bei einer Sperre auf DNS-Ebene). DOMBLK 
fokussiert auf die speziellen Anforderungen bei Verwendung einer t-online
DSL-flatrate (oder Volumentarif): Die rechtsgltige Authentifizierung fr 
Vertragsnderungen oder -abschlsse funktioniert ber proxys nicht, auch wenn 
die Links erreichbar sind. 

DOMBLK verhindert u.U. nicht das Auslsen einer Einwahl bei einem Versuch, auf 
eine der gesperrten Domains zuzugreifen. Das geht so nicht und wrde keinen 
Sinn machen, weil vorher eh aus der Adresse online die zu sperrende IP-Adresse 
ermittelt.

Die Fehlermeldungsseite erscheint nur bei http-Zugriffen (Port 80). Bei mail
oder sonstigen Diensten wrde das ja auch keinen Sinn machen.

Wenn man eine Domain gesperrt hatte und wieder frei gibt, oder wenn man einen
Rechner im LAN zum Accepthost macht, kann es in einigen Fllen (je nach Domain 
und nach Browser) vorkommen, dass erst der Cache des Browsers gelscht werden 
muss, bevor auf die eigentliche Domain zugegriffen wird.

*********************** Installationsvoraussetzungen ***************************

fli4l 2.0.7, 2.0.8 als Einwahlrouter (ISDN oder DSL)

optional fr die Fehlermeldungsseite: 
OPT_HTTPD (auf der Downloadseite von fli4l selbst, nicht bei den opts)
OPT_ERRPAGE (in diesem Paket enthalten)
		
******************************* Konfiguration **********************************

Die Konfiguration sollte sich aus der Beispielkonfig ergeben:

OPT_DOMBLK='yes'                 	# install domblk, 'yes' oder 'no'.
DOMBLK_DENYDOM_N='3'			# Anzahl der zu sperrenden Domains
DOMBLK_DENYDOM_1='service.t-online.de'	# z.B. die Kundenseiten von t-online
DOMBLK_DENYDOM_2='pop.t-online.de'	# z.B. einer der pop-server. Dies
					# sperrt gleichzeitig auch z.B. 
					# mailto.t-online.de
DOMBLK_DENYDOM_3='www-proxy.t-online.de	# Der proxy von t-online

DOMBLK_DENYDOM_4='home-up.t-online.de	# Der (demnchst stillgelegte) ftp

DOMBLK_ACCEPTHOST_N='1'			# Name IP-Adresse oder Subnetz 
					# Wieviel Rechner oder Netze haben 
					# dennoch Erlaubnis?
					# Achtung, das ist mindestens insofern 
					# nicht sicher, als jeder sich diese 
					# Adresse geben kann, wenn keine  
					# anderen Vorkehrungen getroffen sind.

DOMBLK_ACCEPTHOST_1='Rechnername'	# Name, Netz oder IP-Adresse
DOMBLK_ACCEPTHOST_2='192.168.6.34'	
DOMBLK_ACCEPTHOST_3='192.168.7.0/24'	

DOMBLK_LOG='yes'			# Logging der Initialisierung im Syslog
					# als Notiz. Logging von Versuchen, auf
					# die gesperrten Domains zuzugreifen, 
					# im Firewall-Log.

Die Umlenkung der Zugriffe auf gesperrte Seiten passiert automatisch, wenn
OPT_ERRPAGE installiert wird. Siehe gesonderte Dokumentation und:
config/errpage.txt editieren!

Fr die Zugangsbeschrnkungen des mini-httpd (siehe dessen Doku) lauten die
Abschnitte fr domblk: 
SEC_REALM='domblk'
SEC_ACTION='show'
bzw. zum ndern der Konfig:
SEC_ACTION='update'
Also z.B. in der httpd.txt:
HTTPD_USER_1='Papa'
HTTPD_PASS_1='xxx'
HTTPD_RIGHTS_1='all'
HTTPD_USER_2='Jemand' 
HTTPD_PASS_2='yyy'
HTTPD_RIGHTS_2='status:view domblk:show'  

**************************** Enthaltene Dateien ********************************

config/domblk.txt			:	Konfigurationsdatei.
check/domblk.txt			:	Variablen-Prfung.
opt/domblk.txt				:	Zu kopierenden Dateien.
opt/etc/rc.d/rc120.domblk		:	Das boot-Skript.
opt/etc/ppp/ip-up.domblk		:	Skript bei Einwahl.
opt/etc/ppp/ip-down.domblk		:	Skript bei Abwahl.
opt/files/usr/htdocs/main_domblk.cgi	:	Benutzeroberflche im mini-httpd
opt/files/usr/htdocs/domblk_update.cgi  :	Aktualisierung der Konfig	
doc/deutsch/opt/domblk.txt		:	Diese Datei.

**************************** Technische Details ********************************

Gesperrt wird das forwarding von/zu den nicht-accepthosts von/zu den IP-Adressen
der DENYDOMs. 
Die IP-Adresse(n) der zu sperrenden Domains werden per nslookup-Aufruf bei 
jeder Einwahl ermittelt (wenn diese nicht als IP-Adressen oder Netze angegeben 
sind).
Die Zugriffe auf diese Adressen sperren werden dann (in domblkfw) gesperrt und 
optional (bei Zugriff auf Port 80 und errpage) (in domblkrd) umgeleitet.
Bei gescheiterter Auflsung einer zu sperrenden Domain wird (als Background-
Prozess, um ip-up oder den boot-Vorgang nicht aufzuhalten) alle 20 sec noch 
einmal probiert. Da in diesem Fall (noch) keine Sperre fr die "bsen" Domains 
errichtet werden kann, muss (fr nicht-Accepthosts) der Internetzugang komplett
gesperrt werden, und zwar wird das Forwarding ber pp+ Interfaces gesperrt. 
Andere lokale Subnetze (und der fli selbst) bleiben also erreichbar. 

Zugriffe auf Port 80 der zu sperrenden Domains werden auf errpage umgeleitet.

Eine Sperre per DNS - wie an anderen Stellen empfohlen - scheint mir nicht
so sinnig zu sein, da oftmals der fli bei den Clients nicht als DNS-Server 
eingetragen wird (gerade bei flat, wenn die daraus resultierenden Einwahlen wg.
DNS nicht auffallen) und nicht einzelne Rechner "freigeschaltet" werden knnen.
Ebenso wie eine Sperre per DNS ist auch die DOMBLK-Sperre anhand der IP-Adresse 
durch die Nutzung eines Proxys umschiffbar, die RADIUS-Authentifizierung von 
t-online klappt dann aber (zum Glck) nicht.

Fehler/Patches bitte an die Gruppe spline.fli4l.opt oder per mail an mich. 

*********************************** FAQ ***************************************

Q:	Domblk sperrt immer alles (bis auf die Accepthosts). Was ist faul?
A:	Wahrscheinlich ein Tippfehler bei der Eingabe einer denydom. Bei
	der Einwahl muss domblk versuchen, die zugehrige IP-Adresse(n) zu
	ermitteln. 
	Wenn das nicht gelingt, *muss* domblk alles sperren - eine Frage der
	Logik:-)

Q:	Lst domblk stndig alle 20 sec die denydoms auf?
A:	Nein. Sobald die Auflsung einmal geklappt hat, ist bis zur nchsten
	Einwahl Ruhe.

Q:	Was sollen diese Andeutungen ber unsichere t-online-Server? Alle Welt 
	nutzt die doch?
A:	Die Server sind nicht unsicher. Das Problem ist, dass ggfs. eine 
	Authentifizierung allein durch die Einwahl (des Routers!) geschieht. 
	Alle User eines LANs hinter dem fli sind also seitens t-online 
	authentifiziert
	- die mails abzurufen und unter dem Namen des Anmelders zu senden
	  (dies gilt auch in Kombination mit dem "Komfort-Paket", dass zwar
	  verschiedene Mailzugnge per pop3-Passwort organisiert, bei Zugriff 
	  auf die "Standard-Server aber weiterhin fremdes Abholen und Senden 
	  der mails des Hauptbenutzers erlaubt,
	- kostenpflichtige Services zu beauftragen (das wechselt dauernd, bei
	  welchen Sachen noch einmal eine PW-Eingabe vonnten ist und bei 
	  welchen nicht, derzeit ist z.B. mindestens der kostenpflichtige 
	  Spamfilter durch einen einfachen Klick aktivierbar),
	- den Tarif zu ndern. Das kann *sehr* teuer werden. Ob das derzeit
	  noch immer ohne weitere PW-Angabe geht, prfe ich nicht:-).
	Fr weitere Infos einfach in den internen t-online-Newsgroups
	mithren.

Q:	Wenn ich nicht auflsbare Domains ber das web-interface eingegeben
	habe, funktioniert die Weiterleitung nach dem Speichern der nderungen
	oft nicht, d.h. ich lande nicht automatisch wieder auf der domblk-Seite. 
	Ist da was abgestrzt / kaputt?
A:	Nein. Alles funktioniert dennoch. Bitte klicke von Hand auf den Link
	zum Weiterleiten. Dies softwaretechnisch zu umgehen, wre sehr
	aufwndig.

Q:	Wenn ich eine Domain wieder freigebe oder einen Host zum ACCEPHOST
	mache, kommt bei manchen Browsern/Browsereinstellungen und auch nur
	bei manchen Domains anschlieend dennoch die Fehlerseite, wenn ich 
	diese Domain aufrufe. Was luft da schief?
A:	Die Sperren bzw. Freigaben wurde richtig erstellt. Lsche den Browser-
	cache. Warte ein wenig:-) Falls das bei Deinen Domains strend
	auftritt, deaktiviere errpage.
	Hintergrund: Beim letzten (gesperrten) Zugriffsversuch auf die
	domain hat Dein Browser die Daten im Cache behalten, obwohl ihm die 
	Fehlerseite empfahl, das nicht zu tun.
	(Fixme: Was machen diese Domains, z.B. strato-Domains, anders? DNS?)

********************************* Feedback ************************************

Die Fixmes sind zur Jagd freigegeben:-) (siehe Quelltext)

Ich habe das mit fli4l-2.0.8 auf Diskette  getestet. Rckmeldungen ber 
domblk mit anderen Versionen und Konfigurationen wren nett:-)

*********************************** ToDo **************************************

Fixmes fixen:-)

Englische Doku

********************************** Historie ***********************************

ver 0.9.1: 27.06.2003 
	Erste Auslieferung

ver 0.9.2: 01.07.03
	- REJECT statt DENY
	- max. 3 Versuche bei Einwahl, die Domains aufzulsen.
	- Hinweis und Prfung auf extratools entfernt, grep und nslookup sind 
	  in busybox enthalten... (*selfpatsch*)
	- OPT_ERRPAGE integriert
	- kein ip-down mehr, chains bleiben erhalten und werden beim nchsten
	  ip-up geflushed.

ver 0.9.2a: 02.07.03
	- Bugfix: Fehler in der Dateistruktur des zip-files behoben.

ver 0.9.3: 05.07.2003
	- Sperre whrend des Abarbeitung des Skripts.
	- Sperre fr alle auer accepthosts, wenn denydoms nicht auflsbar sind.
	- Wiederholung alle 20 sec, wenn eine Domain nicht auflsbar war.
	- Umstrukturierung der chain-Anordnung, so dass auch mehrere Subnets
	  kein Problem sein sollten.
	- Auch eingehende Verbindungen werden gesperrt
	- Das bootscript wird frher gestartet. 
	- Fehler beim Start ohne ERRPAGE behoben.
	- Nur mit Version 0.9.3 von ERRPAGE werden Fehlerseiten angezeigt! 
	- Fehler in der Doku korrigiert, Doku aktualisiert.

ver 1.0 - Eigentlich unvernderte Version 1.0, bei der nur in errpage ein
	  Problem mit dem Cache des Internet explorers behoben ist.
	  Schlielich gab es keine weiteren Rckmeldungen ber Probleme...

ver 1.0.9: 26.12.2003
	- Bei Abwahl wird nicht weiter versucht, die Domains aufzulsen 
	  (ip-down wieder drin).
	- Es knnen jetzt auch IPs und Netze statt Domains gesperrt werden.
	- Benutzeroberflche im mini-httpd eingefgt. Jetzt kann zur Laufzeit
	  die Konfig gendert werden (auch ohne neue Einwahl).
	- Konfigurationsvorschlag mit www-proxy.t-online.de aufgenommen.

ver 1.0.10: 13.02.2004
	- Benutzeroberflche verbessert
	- Bugfix: Im Falle 'errpage installiert' _und_ 'IP-Adressen nicht 
	  ermittelbar' konnten Nicht-Accepthosts den mini-httpd des fli nicht 
	  erreichen, wenn der auf Port 80 lief (was standarmig der Fall ist)
	- Kleinere Typos und Scriptbereinigungen
	- Doku upgedatet.

ver 1.0.11: 07.03.2004
	- security fix: Im Falle 'errpage installiert' _und_ 'IP-Adressen nicht 
	  ermittelbar' wurde auch bei Zugriffen von aussen errpage angezeigt
	- logging verndert


********************************** Gute N8 ************************************

(c) 2004 Till Heidtmann <t.heidtmann@web.de>