OPT_PORTBLOCK |
Die Grundidee hinter OPT_PORTBLOCK ist die abwechselnde Benutzung von Programmen,
welche verschiedene Ports nutzen.
Damit man sich nicht merken muß, welches Programm nun welche Ports im einzelnen
nutzt kann man mit OPT_PORTBLOCK Portgruppen anlegen und ihnen Namen geben.
Beispiel:
Man nutzt gelegentlich drei verschiedene Programme:
- FTP | ports: 21/tcp |
- Programm_2 | ports: 410/tcp, 410/udp und 411/udp |
- Programm_3 | ports: 417:419/tcp und 113/tcp (für ident) |
Wenn man jetzt nur eins diese Programme benutzt wäre es besser wenn die Ports der
Anderen gesperrt wären.
Mit OPT_PORTBLOCK kein Problem: Webinterface aufrufen und per Mausklick die Port-
Gruppen schließen.
Hinweis:
Bestehende Verbindungen über einen mit PORTBLOCK gesperrten Port werden
nicht unterbrochen.
WICHTIG! OPT_PORTBLOCK richtet keine Portforwardings ein! Es steuert nur die Ports!
Informationen zum Forwarding: /doc/deutsch/opt/portfw.html
Seit Version 1.3 sind die HTTPd-Rechte gesetzt (Siehe HTTPd-Doku):
Bereich:portblock
Recht:action
Als erstes müssen alle Ports die mit opt_portblock gesteuert weden sollen mit Firewallregeln in der BASE.TXT ausgenommen werden (nicht sperren).
Beispiel BASE.TXT (für ftp[21], auth[113], 410/411 und 512 bis 514):
FIREWALL_DENY_PORT_N='5' #no. of ports to reject/deny FIREWALL_DENY_PORT_1='0:20 REJECT' #privileged ports: reject or deny FIREWALL_DENY_PORT_2='22:112 REJECT' #privileged ports: reject or deny FIREWALL_DENY_PORT_3='114:409 REJECT' #privileged ports: reject or deny FIREWALL_DENY_PORT_4='412:416 REJECT' #privileged ports: reject or deny FIREWALL_DENY_PORT_5='420:1023 REJECT' #privileged ports: reject or deny
Weitere Informationen unter /doc/deutsch/html/2_firewall.html
OPT_PORTBLOCK='yes' # Werte: [ yes / no ] Soll das Opt-Paket installiert werden? PB_PORTRULE_N='X' # Werte: [ ZAHL ] Anzahl der Regeln welche verwaltet werden sollen PB_PORTRULE_X='ftp' # Werte: [ SERVICE / PORT / PORTRANGE ] Name des Service / Portnummer / Portrange Gibt an, welcher Port oder Service für Zugriffe aus dem Internet gesperrt werden soll. Hier ist sehr wichtig: gibt es in der /ETC/SERVICES einen Port-Namen muß dieser hier angegeben werden. Beispiele für Services: Port: Service: 21/tcp ftp 80 www 113/tcp auth Dabei muß auf Gross- und Kleinschreibung geachtet werden! Ansonsten wird die Portnummer angegeben. Beispiel Port 113 / tcp und udp: Dabei müssen zwei Regeln definiert werden: siehe Beispiel Regel 3 und 4. Sollen mehrere Ports auf einmal gesperrt werden: '417:419' bedeutet Ports 417 - 419, also die Ports 417, 418 und 419. TOOL: unter /doc/deutsch/opt/portblock liegt ein HTML/Javascript-Tool mit dem man Portnummern auf Services testen kann: servicecheck.html PB_PROTOCOL_X='tcp' # Werte: [ tcp / udp / both ] Wahl des Protokolls: tcp, udp oder beide (both) Wenn man sehr auf sicherheit bedacht ist, dann blockt man am besten alles ( alles auf 'both' ), aber VORSICHT: Wenn ein Service ( /ETC/SERVICES ) gesperrt werden soll, dann darf NUR das Protokoll angegeben werden, welches in der /ETC/SERVICES angegeben ist, sonst kann es zu Fehlermeldungen und Fehlfunktionen kommen. TOOL: unter /doc/deutsch/opt/portblock liegt ein HTML/Javascript-Tool mit dem man Portnummern auf Services testen kann: servicecheck.html PB_DIRECTIO_X='both' # Werte: [ in / out / both ] Wahl der Firewallrichtung: in: Vom Internet ins Intranet out: Vom privaten Netz ins Internet both: Beide Richtungen blocken WICHTIG: Wenn einseitige Richtungsangaben [ IN / OUT ] gemacht werden, dann wird als inneres Netzwerk die Angabe der MASQ_NETWORK aus der CONFIG/BASE.TXT im Abschnitt Masquerading genutz. Bei mehreren Netzwerken kann es deshalb zu Problemen kommen ( Dank an Andi ). HINWEIS: Die Richtungsangaben beziehen sich auf den Server und nicht auf die Clients. Also bedeutet "in" vom internet in das Lokale Netzwerk und "out" aus den Netzwerk in das Internet (Dank an Snake85). PB_GROUPCOUNT_N='X' # Werte: [ ZAHL ] Anzahl der Gruppen welche verwaltet werden sollen PB_GROUP_NAME_X='FTP' # Werte: [ NAME ] Name dieser Gruppe ( Wird im Webinterface angezeigt ) PB_GROUPRULES_X='Y' # Werte: [ REGELNUMMERN ] Regel(n) in dieser Gruppe. Mehrere Regeln werden mit ';' getrennt angegeben, z.B. '6;7' Sollen die Regeln von 3 bis 5 zugewiesen werden: "3-5" Auch Kompinationen sind möglich: z.B.: "1;3-5;8", das bedeutet eine Zuweisung der Regeln 1, 3, 4, 5 und 8 zu dieser Gruppe. ACHTUNG! Es ist zwar möglich eine Regel mehreren Gruppen zuzuordnen, allerdings kann es dann zu Fehlerhaften Statusmeldungen kommen. PB_BLOCK_AUTO_X='yes' # Werte: [ yes / no ] Soll diese Gruppe beim booten automatisch geblockt werden? PB_GROUP_USER_X='all' # Werte: [ ZAHL / all / none ] Nur der Benutzer ZAHL sieht den Status und darf Änderungen vornehmen, wobei ZAHL die Nummer X des Benutzers in HTTPD_USER_X in der CONFIG/HTTPD.TXT ist. Soll jeder Benutzer (meißt gibt es nur einen) diese Gruppe sehen und steuern können, dann ist PB_GROUP_USER_X='all' zu setzten. Soll diese Gruppe nicht angezeigt werden: PB_GROUP_USER_X='none' ( also kein Benutzer ) PB_BLOCKTYPE='REJECT' # Werte: [ REJECT / DENY ] Art des blockens: 'REJECT' (ablehnen) oder 'DENY' (ignorieren) PB_NETWORK='192.168.10.0/24' # Werte: [ NETZWERK ] Netzwerk, welches angesprochen werden soll, wenn PB_DIRECTIO_X='in' oder PB_DIRECTIO_X='out'. Ist PB_DIRECTIO_X='both', dann dann werden die Regeln von 0.0.0.0/0 nach 0.0.0.0/0 (also von Überall nach Überall) angelegt. PB_SHOW_DETAILS='yes' # Werte: [ yes / no ] Gibt an, ob bei jeder Gruppe ein Details-Button erstellt werden soll, mit dem man sich die Gruppenregeln anzeigen lassen kann. PB_SWAP_BLOCK_COLORS='no' # Werte: [ yes / no ] Gibt an, welche Farben für offene bzw. geschlossene Ports verwendet werden sollen: no: grün=geschlossen / rot=offen yes: grün=offen / rot=geschlossen PB_LANGUAGE='de' # Werte: [ de / en ] Gibt an welche Sprache im Webinterface benutzt werden soll: deutsch oder englisch PB_LOGGING='yes' # Werte: ['yes' / 'no'] Gibt an ob die im HTTPd ausgefürten Änderungen in einem Logfile angezeigt werden sollen PB_LOGUSER='all' # Werte: [ ZAHL / all / none ] Nur der Benutzer ZAHL sieht den Button "Logfile ansehen", wobei ZAHL die Nummer X des Benutzers in HTTPD_USER_X in der CONFIG/HTTPD.TXT ist. Soll jeder Benutzer den Logfile sehen können, dann ist PB_LOGUSER='all' zu setzten. Soll dieser Button nicht angezeigt werden: PB_LOGUSER='none' PB_LOGFILE='/var/log/log.portblock' # Werte: [ PFAD UND DATEI ] Gibt den Namen und den Speicherort für die Logdatei an # --- Optional package: pbscript --- OPT_PBSCRIPT='no' # Werte: [ yes / no ] Installiert ein Shellscript, welches z.B. mit opt_easycron Portgruppen Zeitgesteuert öffnen/blocken kann. (Siehe pbscript-Doku: PBSCRIPT.TXT) # --- Optional package: pbstatus --- OPT_PBSTATUS='no' # Werte: [ yes / no ] Installiert die Zusatzfunktionen um einen Befehl auszuführen, wenn alle Gruppen geblockt sind, bzw. einen anderen Befehl wenn mindestens eine Gruppe geöffnet ist. (Siehe pbstatus-Doku: PBSTATUS.TXT) PBSTATUS_SCRIPT_OPEN # Werte: [ Befehl ] Nur norwendig wenn OPT_PBSTATUS='yes'! (Siehe pbstatus-Doku: PBSTATUS.TXT) PBSTATUS_SCRIPT_CLOSED # Werte: [ Befehl ] Nur norwendig wenn OPT_PBSTATUS='yes'! (Siehe pbstatus-Doku: PBSTATUS.TXT)
In der Datei /var/run/portblock.status wird der aktuelle Status [ open/closed ] der Portblock-Gruppen gespeichert. Sie ist für Bastler gedacht, die den Status der einzelnen Gruppen z.B. mit OPT_LPTLED verarbeiten wollen. Einfach die Datei mit ". /var/run/portblock.status" ins Script holen und die Variablen verarbeiten. Die Variablen: GROUP_1='close' -> Die Gruppe 1 ist geschlossen GROUP_2='open' -> Die Gruppe 2 ist offen ... allblocked='no' -> Alle Gruppen geschlossen [yes/no]? Beispiel (LED1 von OPT_LPTLED als Status der Gruppe 1) : #!/bin/sh . /var/run/portblock.status if [ $GROUP_1 = 'open' ] echo on > /var/run/lptled/led1 else echo off > /var/run/lptled/led1 fi TOOL: Unter /doc/deutsch/opt/portblock liegt ein HTML/Javascript-Tool mit dem man Portnummern auf Services testen kann: ServiceCheck Bekannte Probleme: - PortBlock ist NICHT Multi-Netzwerk-fähig!!! - OPT_WLAN_NIC - da werden Ports gesperrt die PortBlock evtl. verwalten soll!!!
25.04.2003 v1.0 Entire Version 26.04.2003 v1.1 choose tcp, udp or both at each port(range) / service - Angabe des Protokolls für jeden Port / Portrange / Service möglich - Statusmeldungen beim Booten hinzugefügt - HTML-Doku hinzugefügt 29.04.2003 v1.2 create Groups - Umstellung auf Portgruppen mit beliebigen Gruppennamen 30.04.2003 v1.3 choose language / httpd-rights - HTTPd-Rechte hinzugefügt - Sprachwahl deutsch / englisch - Problem mit ftp-data [20/tcp] behoben - Englische Doku hinzugefügt 06.05.2003 v1.4 Firewall-logging / PortBlockScript - Regelverstöße werden jetzt geloggt [wenn BASE.TXT FIREWALL_LOG='yes'] (thanx to freaker for hint and Beta-testing) - Probleme mit den Services amanda, snmp und kerberos behoben - PortBlockScript [z.B. für OPT_EASYCRON] hinzugefügt (thanx to K.Singer for idea) - Bugfixes in der Statusanzeige 08.05.2003 v1.5 keep settings on reconnect - Aktuelle Einstellungen bei Wiedereinwahl beibehalten/zurücksetzen (thanx to freaker for idea and Beta-testing) - Probleme mit getrennter verwaltung von tcp und udp eines ports behoben 15.05.2003 v1.6 Userrights / Logging - Benutzerzuweisung für jede Gruppe: Alle, ein Benutzer oder Niemand (versteckte Gruppe) - Logging der PortBlockaktionen (inkl. Benutzer, IP und Zeitpunkt) - Tool ServiceCheck zur Doku hinzugefügt 16.08.2003 v2.0.0 Grouprules more comfortable / directions - Einfachere Zuweisung von vielen Regeln zu einer Gruppe - Firewall-Richtungszuweisung für jede Regel möglich - Optik überarbeitet 25.08.2003 v2.0.0a Dokumentation of Problems with more than one lan (thanx to Andi for hint) 04.10.2003 v2.0.1 show details? - Anzeigen der Gruppenregel ja/nein - Dokumentation überarbeitet (thanx to Snake85 and Jens-Oliver S.) 17.10.2003 v2.0.1a HTML-Doku fixed - Fehler in der HTML-Dokumentation behoben 04.11.2003 v2.0.2 Ethernetrouter possible / PortBlockStatus - PortBlock ist nun Ethernetroutertauglich, da keine IPUP / IPDOWN mehr - OPT_PBSTATUS um ein Script auszuführen, wenn alle Ports geschlossen sind, bzw. ein anderes Script, wenn mindestens ein Port offen ist - Aktueller Zustand der Gruppen aus Datei auswertbar, z.B. für OPT_LPTLED