[Frage] FB Firewall für Webinterface von außen nutzen - Zugang über feste IP - Glype Proxy

IP-Henne

Neuer User
Mitglied seit
21 Feb 2013
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
Hallo,

ich nutze seit Jahren http://www.glype.com/, um per Regel in der Firewall auf Webinterfaces von Linux-Routern oder anderen "Endgeräten" zuzugreifen. Das Script läßt sich auf jedem Webspace einrichten, dann einfach die IP des Webservers als Input-Regel auf den Router o.ä. und schon ist der Zugang per http/https gesichert.

Dies würde ich gern auch für nicht per VPN zugängliche Fritzboxen verwenden und habe mich schon einige Stunden in der ar7.cfg bemüht - leider erfolglos. Ich dachte, daß es mit
Code:
                                accesslist = 
                                             "permit ip xxx.yyy.zzz.aaa eq 493", 
                                             "deny ip any any eq 493", 
                                             ...
funktioniert, aber nein. 493 ist der in der FB alternativ verwendete Port, xxx.yyy.zzz.aaa die IP des Webservers.

Für Ideen bin ich sehr dankbar, wer möchte, kann auch gern zum Testen oder dauerhaft die Glype-Einrichtung bei mir (SSL) mitnutzen. Bitte per PN.

Grüße,
Henry
 
Zuletzt bearbeitet:
Die "accesslist"-Einträge der Firewall sind eine "vorgelagerte" Firewall und legen fest, welche Verbindungen überhaupt zulässig sind oder welche verworfen werden sollen.
Damit eingehende Verbindungen (auch auf die FB selbst) möglich sind, braucht man immer noch eine "Forwarding" Regel; bei Diensten der FB auf das "Ziel" 0.0.0.0. Diese Regeln lassen sich nur direkt in der ar7.cfg anlegen, weil 0.0.0.0 als Ziel in der GUI nicht akzeptiert wird.
 
internet_forwardrules

An der GUI war ich gar nicht dran - ar7.cfg ist mir schon klar.
Dort hatte ich auch probiert:
Code:
        internet_forwardrules = "tcp aaa.bbb.ccc.ddd:493 0.0.0.0:493 0",
Im Original steht da sonst:
Code:
        internet_forwardrules = "tcp 0.0.0.0:493 0.0.0.0:493 0",

und nach jeder Änderung entweder ar7cfgchanged oder Neustart. Aber auch obiges war nicht zielführend: Dann ging's Webinterface nicht ;-)

Bspw. im Fl4l richtet man erst die IP-basierte Öffnung in der FW und dann ggf. Portweiterleitung... wenn nicht lokal.
Daher auch mein Ansatz, es an den FW-Regeln zu triggern und nicht am forward.

Ach so: 7390 und aktuelle 6er FW.
 
Moin

Mit...
Code:
internet_forwardrules =
                                "tcp 0.0.0.0:231 0.0.0.0:23 0 # Telnet-Server",
                                "tcp 0.0.0.0:82 0.0.0.0:4200 0 # HTTP-Server",
                                "tcp 0.0.0.0:81 0.0.0.0:81 0 # HTTP-Server",
                                "tcp 0.0.0.0:2222 0.0.0.0:22 0 # SSH-Server",
                                "tcp 0.0.0.0:84 0.0.0.0:8088 0 # HTTP-Server";
...gibst du Dienste (Server) frei, die auf der Box selber laufen.

Freigaben (Portforwarding) für einzelne Geräte findest du...
Code:
landevices {
        landevices_version = 2;
        landevices {
                ip = 10.10.10.40;
                name = "\336\255\276\257\336\255\276\257\336\255\276\257\336\255\276\257ZZZZZ
                mac = 00:00:00:00:00:00;
                medium = medium_unknown;
                auto_etherwake = no;
                ifaceid = ::;
                type = neightype_unknown;
                staticlease = no;
                ipv4forwardrules =
                                   "tcp 0.0.0.0:80 10.10.10.40:80 0 # busybox";
        }
...
}
...unter den landevices.

Von Aussen könnten die Regeln angezeigt/angelegt/de/aktiviert/gelöscht werden,
wenn auf der Fritz!Box ein Webserver laufen würde mit z.B. Shellskript CGI.
Das Programm am End heisst ctlmgr_ctl und macht dass, was auch das Webinterface macht.

Ich bastel/lerne da grad was in der Richtung...

fb_fw.sh
Code:
#!/bin/sh
local FW_IP=${1}
local FW_PORT=${2}
local FW_PORT_ST=${3}
local FW_PORT_EN=${4}
local FW_PRT=${5}
local FW_DESCR=${6}
local FW_ACT=${7}
local NEWRULE=$(ctlmgr_ctl r forwardrules settings/rule/count)
fw_activate () {
if [ $# -eq 2 ] ; then
ctlmgr_ctl w forwardrules settings/rule${1}/activated ${2}
fi
}
fw_delete () {
if [ $# -eq 1 ] ; then
ctlmgr_ctl w forwardrules settings/rule${1}/fwip 0
fi
}
fw_status () {
local maxcount=$(ctlmgr_ctl r forwardrules settings/rule/count)
if [ ${maxcount} -gt 0 ] ; then
local count=0
while [ ${count} -lt ${maxcount} ] ; do
local FW_IP=$(ctlmgr_ctl r forwardrules settings/rule${count}/fwip)
local FW_PORT=$(ctlmgr_ctl r forwardrules settings/rule${count}/port)
local FW_PORT_ST=$(ctlmgr_ctl r forwardrules settings/rule${count}/fwport)
local FW_PORT_EN=$(ctlmgr_ctl r forwardrules settings/rule${count}/endport)
local FW_PRT=$(ctlmgr_ctl r forwardrules settings/rule${count}/protocol)
local FW_DESCR=$(ctlmgr_ctl r forwardrules settings/rule${count}/description)
local FW_ACT=$(ctlmgr_ctl r forwardrules settings/rule${count}/activated)
echo -ne ${FW_IP}\
', '\
${FW_PORT}\
' an '\
${FW_PORT_ST}\
' - '\
${FW_PORT_EN}\
', '\
${FW_PRT}\
', '\
${FW_DESCR}\
', '\
${FW_ACT}'\n'
: $((count++))
done
else
echo -ne 'No rules present!\n'
fi
}
if [ $# -eq 7 ] ; then
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/fwip ${FW_IP}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/port ${FW_PORT}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/fwport ${FW_PORT_ST}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/endport ${FW_PORT_EN}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/protocol ${FW_PRT}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/description ${FW_DESCR}
fw_activate ${NEWRULE} ${FW_ACT}
else
case ${1} in
disable) fw_activate ${2} 0;;
enable) fw_activate ${2} 1;;
delete) fw_delete ${2};;
help) echo -ne $(basename ${0})\
': Need 7 arguments!\n'\
'[fwip] [port] [fwport] [endport] [protocol] [description] [activated]\n'\
'status for entries\n'\
'disable number or enable number enables or disable entry nummber\n'\
'(first entry is 0)\n'\
'and delete number is deleting entry number\n';;
status) echo -ne 'Rules:\n'
fw_status ;;
*) echo -ne $(basename ${0})': try help\n';;
esac
fi
#EOF
Aufruf:
Ohne Parameter:
Code:
fb_fw.sh: try help

help
Code:
fb_fw.sh help
fb_fw.sh: Need 7 arguments!
[fwip] [port] [fwport] [endport] [protocol] [description] [activated]
status for entries
disable number or enable number enables or disable entry nummber
(first entry is 0)
and delete number is deleting entry number

status (Beispielausgabe)
Code:
Rules:
10.10.10.40, 80 an 80 - 80, TCP, busybox, 1
...wurde angelegt mit: fb_fw.sh 10.10.10.40 80 80 80 TCP busybox 1

Ein CGI, dass dieses Skript aufruft, müsste die Parameter richtig parsen (QUERY_STRING) und richtig an dieses Skript übergeben.
Ganz grob, aber prinzipiell möglich...
/cgi-bin/index.cgi
Code:
#!/bin/sh
echo 'Content-Type: text/html; charset="utf-8"
'
echo '<!DOCTYPE html>
<html>
<head><title>Startseite: index.cgi</title></head>
<body><h1>Fritz!Box Portfreigaben</h1><p>
'$(./fb_fw.cgi ${QUERY_STRING})'
</p>
</body>
</html>
'
#EOF
(fb_fw.sh einfach umbenannt und ab ins /cgi-bin/ kopiert, also da wo die index.cgi liegt)
Die URL wird aufgerufen wie das Skript...
/cgi-bin/index.cgi?status
/cgi-bin/index.cgi?disable 0
/cgi-bin/index.cgi?enable 0
/cgi-bin/index.cgi?delete 0
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.