3Surf: Dies ist das Free Surf Interface von Frank Saurbier (3surf@arcor.de).
-------------------------------------------------------------------------------
Kurzfassung:
 Du definierst welche Hosts oder komplette Netzwerke von c3surf verwaltet werden
 Diese sind nach einem Routerstart zunchst gesperrt
 http Anfragen dieser Hosts oder Netzclients werden auf die c3surf Anmeldeseite geleitet
 Nach der Registrierung eines Benutzers auf der Anmeldeseite kann Dein Netz auf Zeit von ihm genutzt werden
 Alles wird gelogged - Du kannst ber das Web Admin-Interface von 3Surf alles steuern
-------------------------------------------------------------------------------


Installation
============

Wie gehabt:
 - opt_c3surf_<versionsinfo>.zip in das fli4l Verzeichnis (Buildrechner) entpacken.
 - c3surf.txt den eigenen Bedrfnissen anpassen (alles dort beschreiben)
 - ggf. in Deine httpd.txt die Rechte 'c3surf:view,admin' hinzufgen.
 - Build erstellen


Config Datei und die Parameter
==============================

Kurzfassung:

Freigabe des Internets und der Dienste des Routers nur nach Anmeldung mit OPT_LOGINUSR='yes' nur mit User und Password.
 Du definierst welche Hosts oder komplette Netzwerke von c3surf verwaltet werden
 Diese sind nach einem Routerstart zunchst gesperrt
 http Anfragen dieser Hosts oder Netzclients werden auf die c3surf Anmeldeseite geleitet
 Nach der dortigen Registrierung kann Dein Netz von Ihnen auf Zeit genutzt werden
 Alles wird gelogged - Du kannst ber das Web Admin-Interface von FreeSurf (3Surf) alles steuern


OPT_C3SURF='no'

Name des Opt, ist es aktiv ('yes') oder nicht ('no').


C3SURF_LOG_PATH='/var/log/c3surf'

Definiert das Verzeichnis fr log-Dateien von FreeSurf. Du musst mit moderatem Wachstum rechnen. Im Einzelen ist die bei den noch folgenden Eintrgen fr die Log-Dateien genannt. Bein Herunterfahren solltest Du die Logdateien auf ein permanentes Medium sichern, oder den Pfad gleich dorthin einstellen, wenn Du die Dateien nicht verlieren willst. Der Pfad muss dann auf dem permanenten Medium existieren.

Wichtig: im log-Verzeichnis wird zustzlich eine 'c3surf_mac.blacklist' bei Bedarf angelegt (siehe Admin Interface). Also wenn Du dort Eintrge veranlasst. Diese musst Du dann natrlich auch sichern, wenn sie persistent sein soll. Die Sperrung fr die mac-Adresse wurde bewut ber eine eigene Datei gelst und nicht in den Paketfilter implementiert, da es bei einer greren Zahl von Eintrgen sonst Probleme geben kann. Aber nicht vergessen, geblockte MAC-Adressen halten Standardbenutzer vom Netz fern, was im normalen Anwendungsfall ausreicht, nicht jedoch die Profis.

Weiter legst Du fest, was gelogged werden soll.


C3SURF_DOLOG_LOGIN='yes'            

zeichne Login / Logout auf: c3surf_login.log (default: 'yes')


C3SURF_DOLOG_INVALID='yes'          

zeichne ungltige Logins auf: c3surf_invalid.log (default: 'yes'). Wenn die OPT_LOGINUSR='yes' gewhlt ist, kann eine fehlerhafte Anmeldung zu Zeit nicht aufgezeichnet werden.


C3SURF_DOLOG_PAGE='no'              

Zeichne den Aufruf der html-Seite auf: c3surf_page.log (default: 'no'). Jeder Zugriff auf die Anmeldeseite wird gelogged. Das page-log wchst vermutlich am 2. schnellsten von allen Logs - nur fr Neugierige, die regelmig nachsehen.


C3SURF_DOLOG_HTTPD='no'

Zeichne alle mini_httpd Anfragen auf: c3surf_httpd.log (default: 'no')
Zustzlich die Mini-httpd Logfunktion starten, aber hier ist Vorsicht geboten, richtig schnelles Wachstum, bitte nur fr Test oder Debug verwenden. Wenn eingeschaltet, empfielt es sich wirklich tglich die log-Datei zu prfen, oder anders: Fr ganz Neugierige - heit regelmig prfen und lschen.


C3SURF_TIME='60'

Anzahl der Minuten, die eine Freischaltung gilt


C3SURF_BLOCKTIME='240'

Anzahl der Minuten, die eine IP geblockt wird, wenn der Admin dies ber das Webinterface veranlasst. So kann man fr eine gewisse Zeit einen Rechner aus dem Netz fernhalten.


C3SURF_CONTROL_HOST_OR_NET_N='n'    # Wert: ganze Zahl

Wieviele und welche IP-Bereiche oder Hosts sollen von 3Surf kontrolliert werden. Dies betrifft die Weiterleitung in ein anderes Netz (FORWARD Chain).


C3SURF_CONTROL_HOST_OR_NET_n='Netzwerk OR Host OR IP-Adresse'

Hier kann zur Vereinfachnung ein komplettes Netz angegeben werden, z. B. das WLAN, dann mssen alle WLAN-Nutzer die Anmeldeseite benutzen. Oder eine Referenz auf einen Host (@Host) oder eine IP-Adresse. Wer oder was hier eingetragen ist, wird auf die Anmeldeseite umgeleitet und es gelten die weiter unten zu definierenden Sperrregeln.
Beispiele:
  C3SURF_CONTROL_HOST_OR_NET_1='IP_NET_3'      # Das Netz angeben IP/MASK
  C3SURF_CONTROL_HOST_OR_NET_2='@T8200'        # oder den Host @HOST
  C3SURF_CONTROL_HOST_OR_NET_3='192.168.13.11' # oder eine IP-Adresse


C3SURF_CONTROL_PORT_N='n'                      # Wieviele TCP-Ports des Routers sollen gesteuert werden? Wert: ganze Zahl.

Wieviele und welche explizit benannten Ports sollen von 3Surf kontrolliert werden. Betroffen sind die IP-Bereiche und die Hosts von oben "C3SURF_CONTROL_HOST_OR_NET". C3Surf steuert diese Ports und gibt diese nach einer erfolgreichen Anmeldung frei, so dass die ber diese Ports existierenden Services des Routers genutzt werden knnen (betrifft die INPUT chain)


C3SURF_CONTROL_PORT_n='port_nr'

Angabe der Portnummer, der Zugriff auf die dahinter stehenden Dienste des Routers (fli4l) sind bis zur Anmeldung gesperrt wird. Nach erfolgter Anmeldung steht der Dienst dann fr die Zeit der Freischaltung zur Verfgung.
Beispiele:
  C3SURF_CONTROL_PORT_1='515'  # z.B. lpdsrv (Drucker benutzbar, nach Anmeldung)
  C3SURF_CONTROL_PORT_2='21'   # z. B. ftp - (wohl gemerkt ftp auf dem router! gibts ja nicht ;-))
Weitere mgliche Portadressen
  21=ftp, 22=ssh, 5000=imonc, 5001=telmod, 
  8118=privoxy, 9050=tor, 3128=squid, 20000=mtgcapri
  80=http(Admin) 515=lpdsrv
Aber entscheidend ist die eigene Konfiguration. Es gelten fr alle Ports, die nicht angegeben sind natrlich immer die Regeln aus der 'base.txt'. Nach einer Anmeldung gelten im brigen auch immer noch die Regeln aus der 'base.txt'. 3Surf ist diesen Regeln bis zur Anmeldung durch den Benutzer nur vorgeschaltet. Es werden also nach der Anmeldung immer noch alle Regeln beachtet. So kann man z. B. in der 'base.txt' den Zugriff von WLAN auf das kabelgebundene Netz verbieten. Dies Verbot gilt dann natrlich auch fr die ber c3Surf im WLAN angemeldeten Benutzer.

C3SURF_BLOCK_PORT_N='n'       # Wieviele TCP-Ports des Routers sollen geblockt werden? Wert: ganze Zahl.

Permanentes Blocken von Diensten fr oben benannte Netze und Hosts "C3SURF_CONTROL_HOST_OR_NET". Wieviele und welche explizit benannten Ports sollen von 3Surf permanent geblockt werden. Es gibt dann keinen Zugriff auf die dahinter stehenden Dienste des Routers (fli4l) fr die Hosts und/oder Rechner der gesperrten Netze. Auch nach dem Anmelden nicht. Betrifft die INPUT-Chain. Eigentlich ist diese Funktion nicht notwendig, denn wer bestimmte Dienst dauerhaft sperren will, sollte dies besser in der 'base.txt' mit den dortigen Parametern zur INPUT Chain tun.
Warum: weil diese Regeln hier nicht mehr gelten, sobald man den Parameter OPT_C3SURF='no' setzt. Wer also c3surf entsorgt, muss zuvor die hier definierten Regeln in die 'base.txt' bertragen, wenn ihm die Dienstesperre fr die oben benannten Hosts oder Netze weiter wichtig ist.


C3SURF_BLOCK_PORT_n='port_nr'

Angabe der Portnummer, der Zugriff auf die dahinter stehenden Dienste des Routers (fli4l) sind dauerhaft fr die benannten Hosts oder Rechner in den benannten Netzen gesperrt. Auch nach erfolgter Anmeldung steht der Dienst NICHT zur Verfgung.

Beispiele:
  C3SURF_BLOCK_PORT_1='5000'                 # z.B. imonc
  C3SURF_BLOCK_PORT_2='5001'                 # z.B. telmond
  C3SURF_BLOCK_PORT_3='20000'                # z.B. mtgcapri (OPT_MTGCAPRI)
  C3SURF_BLOCK_PORT_4='22'                   # z.B. ssh
  C3SURF_BLOCK_PORT_5='8118'                 # z.B. privoxy (PROXY)
  C3SURF_BLOCK_PORT_6='9050'                 # z.B. tor (PROXY)
  C3SURF_BLOCK_PORT_7='80'                   # z.B. httpd Admin interface (HTTPD)
  C3SURF_BLOCK_PORT_8='7437'                 # z.B. caiviar (OPT_CAIVIAR)


C3SURF_HTTPD_PORT='8080'

Auf welchem Port und welcher IP-Adresse soll der mini_httpd fr die Benutzeranmeldung lauschen. http Anfragen von Rechnern werden auf diese Adresse und diesen Port umgeleitet. Port 8080 ist hier default.
Folgendes ist bei der Wahl der Portnummer zu beachten (WICHTIG):
 - es sollte nicht der Port aus den httpd-Paket sein (normal ist das 80)
 - der httpd fr den Web-Admin des fli4l bindet sich im Standard an alle lokalen IPs
 - benutze auch keine Portnummer, die bereits von einem anderen Dienst genutzt wird
Solltest Du versehentlich einen bereits verwendeten Port erwischt haben, versucht der fli4l diesen httpd immer wieder zu starten. Was der nicht will, weil der Port schon vom Admin-Interface oder einem anderen Diesnt belegt ist. Das kannst Du nur auf der Konsole oder in einem einschalteten Log sehen. Merken tust Du es daran, dass c3surf nicht funktionieren wird, und dass Dein fli4l hohe CPU-Belastung hat und furchtbar langsam zu laufen scheint.


C3SURF_HTTPD_LISTENIP='Host OR IP-Adresse'

Gibt die angegebene lokale IP an, an die sich das Interface fr die Anmeldung binden soll. Entweder IP-Adresse oder @hostname hierhin werden http Anfragen der Clients bei Bedarf (also wenn sie nicht angemeldet sind) umgeleitet. So kommen die Anwender dann schnell auf die Anmeldeseite.
Beispiele:
 C3SURF_HTTPD_LISTENIP='@wifi-router'   # Angabe eines Hostnamens in der fli4l-Weise
 C3SURF_HTTPD_LISTENIP='192.168.11.3'   # Angabe einer IP-Adresse
Der http-Diesnt fr c3surf wird immer an genau eine IP-Adresse gebunden.


OPT_LOGINUSR='yes'    # yes: echte Anmeldung verwenden (wird empfohlen)

LOGINUSR: Stellt eine echte Anmeldung (User / Password) zur Verfgung. Account Pflege im Moment nur hier, stellt sicher, dass Passworte nur verschlsselt bertragen werden.


LOGINUSR_ACCOUNT_N='n'   # Anzahl Accounts, Wert: ganze Zahl

Gibt die Anzahl der User-Accounts an.


LOGINUSR_ACCOUNT_1_USER='user1'

Username fr die Anmeldung (Pflicht: '' also leer lassen ist unzulssig)


LOGINUSR_ACCOUNT_1_PWD='user1_secret'

Password fr die Anmeldung (Pflicht: '' also leer lassen ist unzulssig)


LOGINUSR_ACCOUNT_1_FORENAME='Vorname'

Vorname des Nutzers fr die bessere Verwaltung (Optional, leer lassen erlaubt). Dieser Inhalt wird im Log und Admin-Interface angezeigt, so kann der Admin besser erkennen, wer gerade online ist.


LOGINUSR_ACCOUNT_1_SURNAME='Nachname'

Nachname des Nutzers fr die bessere Verwaltung (Optional, lassen erlaubt). Dieser Inhalt wird im Log und Admin-Interface angezeigt, so kann der Admin besser erkennen, wer gerade online ist.


LOGINUSR_ACCOUNT_1_EMAIL='usr1@home.de'

Email des Nutzers fr die bessere Verwaltung (Optional, lassen erlaubt). Dieser Inhalt wird auch Log und Admin-Interface angezeigt, so kann der Admin besser erkennen, wer gerade online ist.



Web-Admin Interface
===================

Rechte: c3surf:view,admin

 view:  den Eintrag im Admin Men anzeigen
 admin: fr die Nutzung der Funktionen

in httpd.txt einpflegen fr Admins oder Nutzer die nicht ber das Recht "all" vergen, aber mit FreeSurf arbeiten sollen- 

Der fli4l-Admin mit dem Recht "all" sieht es sowieso und kann alles damit tun.

Zu finden in Web-Admin unter Opt:
 als "3Surf", wenn OPT_LOGINUSR='no'
 als "LoginUsr", wenn OPT_LOGINUSR='yes'


NEU: mit LOGINUSER Option
=========================
Es wird eine echte Benutzeranmeldung, hnlich der von Hotspot Portalen benutzt. Nur wer ber einen Benutzer-Account und ein Kennwort verfgt kann das Internet und die Dienste des Routers nutzen.


Wie ist es entstanden
=====================

Meine alten Rechner knnen nur WLAN WEP Verschlsselung mit 48bit. Da kann ich auch gleich ein offenes, nicht verschlsseltes WLAN betreiben. Aber ich mchte schon wissen wer das Netz bei mir nutzt. Also brauchte ich ein Paket, welches eine formlose Registrierung in meinem Netz ermglicht. Pate stand "opt_onco" (onco is Copyright (c) 2001-2007 Michael Mattes), einen Dank an Ihn als Ideenlieferant fr mich. Jedoch fehlte mir dort die eigene Registrierung durch den Benutzer. Also baute ich etwas drum herum. Spter dann ein eigenes "opt_c3surf".


Was macht 3Surf
===============

Du kannst ein Netz oder einzelne Hosts angeben, die nach Hochfahren zunchst gesperrt sind. Diese knnen dann ber ein eigenen Webinterface von den Benutzern selbst auf Zeit freigeschaltet werden. Dazu registriert sich der Benutzer formlos ber das Webinterface.

Ist die LOGINUSR - Option aktiviert, dann knnen sich nur Benutzer anmelden, die einen gltigen Account besitzen. Die Benutzernamen und Passworte pflegst Du.

Du kannst ber das Admin-Interface Deines Routers die Benutzer sehen, Ausloggen, temporr Sperren oder die MAC-Adresse dauerhaft sperren. Die Sperrung betrifft immer nur die Anmeldung ber 3Surf und wird von 3Surf verwaltet. Kommt der Rechner ber eine andere NIC an Deinen Router, hat die Sperre keine Wirkung.

Die Anmeldung erfolgt durch Vorname, Name und e-mailadresse oder durch User/Password. Nach Ablauf einer eingestellten Zeit, wird der Zugang wieder gesperrt und kann durch neue Anmeldung wieder freigeschaltet werden.

Du kannst die Anmeldeseite auch fr die Benutzer sperren (siehe FreeSurf bzw. LoginUsr im OPT-Menue des Webinterfaces).

Du kannst das alles im Admin-Web-Interface nachvollziehen.

Willst Du bestimmte Rechner dauerhaft freischalten, so kannst Du dies im Webinterface tun. Siehe dazu die ARP-Liste oder die DHCP-Leases.


Systemanforderungen
===================

Entwickelt und getestet habe ich es unter 3.1.4. 

Verwenden tue ich es jetzt unter 3.2.0.


Nicht fr Version 3.0.x.


OPT_LOGINUSER
=============
Stellt ein echte Anmeldung fr Benutzer bereit. Damit kann nicht mehr jeder das Internet oder die Dienste Deines Routers nutzen. Ich habe es so entwickelt, dass im laufenden Bertrieb eine Umschaltung erfolgen kann. Diese ist aber nicht implementiert.


WARNUNG:
========

Ohne OPT_LOGINUSR='yes' ist es jeder Person mglich, die fr ihren Rechner eine IP-Adresse von meinem Router zugewiesen bekommen hat (z. B. aus einem offenen WLAN), einen freien Zugriff auf das Internet und die Dienste Deines Routers, die Du nicht geblockt hast, zu bekommen. 3Surf untersttzt beim Blocken der Dienste, ist aber kein Ersatz fr eine "ordentliche" Konfiguration der Firewall in der "base.txt".

Empfehlung: Achte darauf, dass Du Deinen Router mit einer "Recovery-Version" versehen hast - fr alle Flle. Ich habe die zwar noch nicht gebraucht, aber sicher ist sicher.


PROBLEME, NDERUNGEN und FEHLER:
================================

nderungen, die Du gemacht hast, schickst Du mir bitte. Mit einer kurzen Beschreibung, ich verspreche, dass ich die nderungen bei Gefallen in das nchste Release bernehme.

Falls gar nix luft : Fehlerbeschreibung erstellen, mit Config-Info und mailto:3surf@arcor.de. Oder die fli4l-foren nutzen, ich lese diese.


LITERATUR
=========

Wer gerne sein Netz fr andere zur Verfgung stellt, der sollte sich auch einmal mit der rechtlichen Situation auseinander setzen.

Es gibt ein unter CC stehende Arbeit dazu: 
Rechtsfragen offener Netze: http://digbib.ubka.uni-karlsruhe.de/volltexte/1000007749
Autor: Mantz, Reto
Reihe: Schriften des Zentrums fr Angewandte Rechtswissenschaft / ZAR, Zentrum fr Angewandte Rechtswissenschaft, Universitt Karlsruhe (TH)
Band: 8
Verlag: Universittsverlag Karlsruhe
ISBN: 978-3-86644-222-1
Erschienen: 10.04.2008


LIZENZ
======

Ich stelle diese meine Arbeit unter GNU General Public License in Version 2 oder folgende.
Damit ist diese Software frei fr Benutzer, Entwickler und Firmen.
Es ist guter Stil, wenn Urheber in einer weiteren Verwertung oder Verffentlichung genannt werden. 
Das gilt besonders fr freie Werke.
-----------------------------------------------------------------------
## 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.
-----------------------------------------------------------------------
