Ergebnis 1 bis 20 von 37

Thema: [INFO] Authentifizierungs-Server (work in progress)

Hybrid-Darstellung

  1. #1
    IPPF-Fünftausend-VIP Avatar von sf3978
    Registriert seit
    02.12.2007
    Beiträge
    6.397

    [INFO] Authentifizierungs-Server (work in progress)

    Im Anhang ein Patch für einen einfachen, leichtgewichtigen und ausbaufähigen Authentifizierungsserver, für die FritzBox (mit Freetz).
    Code:
    2976  2849 root     S      980   3%   0% fbcauth root admin freetz
    Die Passwörter werden als Argumente zum binary, angegeben.

    EDIT:
    Kleine Ergänzungen: Der Port auf dem der Server lauscht ist nicht mehr hardcodiert. Er wird mit dem 1. Argument (argv[1]) übergeben:
    Code:
    serverinfo.sin_port = htons(atoi(argv[1]));
    Code:
    2960 root       980 S    fbcauth 33333 freetz root admin
    Im syslog wird jetzt auch der Port der Servers und die IP Adresse des Clienten eingetragen:
    Code:
    Sep 12 08:38:06 fritz user.info syslog: fbcauth : the authentication was successful! Server port: 33333; Client IP address: 192.168.122.33
    Sep 12 08:38:11 fritz user.info syslog: fbcauth : the authentication was n o t successful! Server port: 33333; Client IP address: 192.168.122.33
    EDIT 2:
    Die Passwörter müssen mindestens 6 Zeichen lang sein und sollen maximal 8 Zeichen lang sein, denn mehr als 8 Zeichen werden nicht berücksichtigt:
    Code:
    if((strlen(argv[j])>=6) && (i = strncmp(argv[j],position,8))==0)
    In die Datei "/tmp/fbcauth.aut" wird jetzt auch die IP Adresse des Clienten geschrieben. Das eingegebene Passwort wird auch eingetragen, so wie es eingegeben wird, richtig oder falsch:
    Code:
    /var/mod/root # cat /tmp/fbcauth.aut
    192.168.122.33 admin12
    EDIT 3:
    Der neue Patch beinhaltet ein einfaches iptables-Skript (setzt die default policy der FORWARD chain auf DROP), iptables-Regeln und andere Kommandos im Quelltext:
    Code:
    for(m=0,j=5;j<=6;j++)
          {
        if((strlen(argv[j])>=6) && (i = strncmp(argv[j],position,8))==0)
        {
        strcat(transmit,"authentication was successful!");
        syslog(LOG_INFO, "%s : the authentication was successful! Server port: %s; Client IP address: %s",\
        argv[0], argv[1], client_ip);
        system(" /usr/sbin/iptables -D FORWARD -p tcp -s \"$(cat /tmp/fbcauth.aut 2>/dev/null)\" \
        -d 0/0 -m multiport --dports 80,443 -j ACCEPT ");
        system(" /usr/sbin/iptables -A FORWARD -p tcp -s \"$(cat /tmp/fbcauth.aut 2>/dev/null)\" \
        -d 0/0 -m multiport --dports 80,443 -j ACCEPT ");
        m=1;
        break;
        }
          }
    Code:
    if(m==0 && (i = strncmp(argv[2],position,6))!=0 && (i = strncmp(argv[3],position,6))!=0 && \
        (i = strncmp(argv[4],position,6))!=0)
          {
          strcat(transmit,"authentication was not successful!");
          syslog(LOG_INFO, "%s : the authentication was n o t successful! Server port: %s; Client IP address: %s",\
          argv[0], argv[1], client_ip);
          /* ab hier eintragen */
          fp=fopen("/tmp/fbcauth.aut","w+");
          fputs(client_ip,fp);
          fputs("\t",fp);
          fputs(position,fp);
          fclose(fp);
          fp=NULL;
          /* ende eintragen */
          }
    Code:
    if((i = strncmp(argv[2],position,6))==0)
        {
        strcat(transmit,"logout was successful!");
        syslog(LOG_INFO, "%s : the logout was successful! Server port: %s; Client IP address: %s",\
        argv[0], argv[1], client_ip);
        /* hier eintragen */
        system(" /usr/sbin/iptables -D FORWARD -p tcp -s \"$(cat /tmp/fbcauth.aut 2>/dev/null)\" \
        -d 0/0 -m multiport --dports 80,443 -j ACCEPT ");
        /* ende eintragen */
        }
    Code:
    if((i = strncmp(argv[3],position,6))==0)
        {
        strcat(transmit,"flush was successful!");
        syslog(LOG_INFO, "%s : the flush was successful! Server port: %s; Client IP address: %s",\
        argv[0], argv[1], client_ip);
        /* hier eintragen */
        system(" /usr/sbin/iptables -F FORWARD ");
        /* ende eintragen */
        }
    Code:
    if((i = strncmp(argv[4],position,6))==0)
        {
        strcat(transmit,"rules setup was successful!");
        syslog(LOG_INFO, "%s : the rules setup was successful! Server port: %s; Client IP address: %s",\
        argv[0], argv[1], client_ip);
        /* hier pfad fuer script eintragen */
        system(" sh /tmp/ipt.rul ");
        /* ende eintragen */
        }
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    Geändert von sf3978 (03.10.2010 um 12:35 Uhr) Grund: Ergänzungen
    FRITZ!Box Fon WLAN 7240 (ata-Modus, replaced kernel, automatic kernel module loading); FW: 7240_7270_v3_04.88freetz-devel- 7 2 9 3 - 7 5 6 1 M klick
    Prosody (ein XMPP/HTTP-Server) mit bzw. fuer Freetz
    FreeBSD; FBCauth (authentication server); iptables (alle iptables Module aus Freetz); trickle; ADC; sshguard
    BS: gcc 4.5.3 20110428

  2. #2
    IPPF-Fünfhundert-Club
    Registriert seit
    02.02.2009
    Beiträge
    884
    Dumme Frage: Was kann man damit z.B. anstellen? Internet-Zugang nur für autorisierte Benutzer beispielsweise?
    MfG,
    linuxkasten
    ___________________________________
    FritzBox WLan 3170 mit serieller Konsole - Firmware:
    - auf der Box: 7170-Alien-3170 49.04.80freetz-devel-xxxx (relativ aktueller trunk); - absolut minimales usbroot-Image ohne DSL, WLAN, etc., weils sonst Platzprobleme bzw. sogar Probleme beim Booten ála "No init found..." gibt.
    - auf dem USB-Stick-rootfs: 7170-Alien-3170 49.04.80freetz-devel-xxxx (relativ aktueller trunk); Pakete: ein ganzer Haufen, da ich an Featuritis leide...

    Buildsystem: debian squeeze


    HaltOnLan - PC remote durch Fritzbox herunterfahren/neustarten/sperren etc.

  3. #3
    IPPF-Fünftausend-VIP Avatar von sf3978
    Registriert seit
    02.12.2007
    Beiträge
    6.397
    Ja, oder eine Anwendung (z. B. den Prosody-Server auf meiner Box, etc.) starten und stoppen.
    FRITZ!Box Fon WLAN 7240 (ata-Modus, replaced kernel, automatic kernel module loading); FW: 7240_7270_v3_04.88freetz-devel- 7 2 9 3 - 7 5 6 1 M klick
    Prosody (ein XMPP/HTTP-Server) mit bzw. fuer Freetz
    FreeBSD; FBCauth (authentication server); iptables (alle iptables Module aus Freetz); trickle; ADC; sshguard
    BS: gcc 4.5.3 20110428

  4. #4
    IPPF-Fünftausend-VIP Avatar von sf3978
    Registriert seit
    02.12.2007
    Beiträge
    6.397
    Frage an die modlibrc-, rc.*-Script- und Freetz-WEB-IF-Experten:
    Es handelt sich um einen modifizierten trunk. Es wäre auch nicht schlimm, wenn ich keine Antwort/Hilfe bekommen würde, denn ohne Freetz-WEB-IF funktioniert Alles bestens.
    Müssen rc.*-Scripte und/oder *.cgi-Dateien registriert werden?

    Ich habe für fbcauth ein Freetz-WEB-IF (siehe Anhang) erstellt. Der Start funktioniert leider nicht, denn das rc.fbcauth hängt sich im WEB-IF auf:
    Code:
    1258 root      1552 S    httpd -i -p 81 -c /mod/etc/webcfg.conf -h /usr/mww/ -r Freetz
     1259 root      1580 S    /bin/sh service
     1277 root      1580 S    /bin/sh service
     1278 root      1528 S    sed -e     s/&/\&amp;/g    s/</\&lt;/g    s/>/\&gt;/g    s/'/\'/g    s/"/\&quot;/g
     1283 root      1552 S    /bin/sh /mod/etc/init.d/rc.fbcauth start
     1284 root       972 S    fbcauth 33222 logout flush7 rules3 freetz admin1
    Mit der Konsole kann ich das rc.fbcauth-Script aber starten und stoppen:
    Code:
    root@fritz:/var/mod/root# sh -x /etc/init.d/rc.fbcauth
    + DAEMON=fbcauth
    + . /etc/init.d/modlibrc
    + export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin
    + export LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
    + : fbcauth
    + : fbcauth
    + : fbcauth_ENABLED
    + : /mod/etc/fbcauth.conf
    + : fbcauth
    + : /var/run/fbcauth.pid
    + [ -n fbcauth ]
    + modlib_loadconfig
    + local CONF_FILE=/mod/etc/conf/fbcauth.cfg
    + [ ! -r /mod/etc/conf/fbcauth.cfg ]
    + . /mod/etc/conf/fbcauth.cfg
    + export FBCAUTH_ENABLED=yes
    + export FBCAUTH_OPTIONS=33222 logout flush7 rules3 freetz admin1
    + modreg cgi fbcauth FBCauth
    + modlib_start yes
    + local DAEMON_ENABLED=yes
    + [ yes == no ]
    + [ yes == inetd -a ! -x /etc/init.d/rc.inetd ]
    + modlib_check_running
    + [ -n  ]
    + [ -x /etc/init.d/rc.inetd ]
    + echo fbcauth_ENABLED
    + tr [:lower:]- [:upper:]_
    + eval echo $FBCAUTH_ENABLED
    + echo yes
    + [ yes == inetd ]
    + [ -n  ]
    + local fn=/var/run/fbcauth.pid
    + [ ! -s /var/run/fbcauth.pid ]
    + return 3
    + start
    + modlib_startdaemon fbcauth 33222 logout flush7 rules3 freetz admin1
    + pidof fbcauth
    + echo -n Starting fbcauth ...
    Starting fbcauth ... + config
    + :
    + env - PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin fbcauth 33222 logout flush7 rules3 freetz admin1
    + echo 1891
    + return 0
    + exit 0
    Code:
    1889 root      1556 S    sh -x /etc/init.d/rc.fbcauth
    1891 root       972 S    fbcauth 33222 logout flush7 rules3 freetz admin1
    Code:
    root@fritz:/var/mod/root# cat /var/run/fbcauth.pid
    1891
    Hier mein rc.fbcauth-Script:
    Code:
    #!/bin/sh
    
    DAEMON=fbcauth
    . /etc/init.d/modlibrc
    
    start() {
          modlib_startdaemon $DAEMON $FBCAUTH_OPTIONS &
          echo "$(pidof fbcauth)" > /var/run/fbcauth.pid
        }
    
    case $1 in
        ""|load)
            modreg cgi $DAEMON FBCauth
            modlib_start $FBCAUTH_ENABLED
            ;;
        unload)
            modunreg cgi $DAEMON
            modlib_stop
            ;;
        start)
            modlib_start
            ;;
        stop)
            modlib_stop
            ;;
        restart)
            modlib_restart
            ;;
        status)
            modlib_status
            ;;
        *)
            echo "Usage: $0 [load|unload|start|stop|restart|status]" 1>&2
            exit 1
            ;;
    esac
    
    exit 0
    Hier die fbcauth.cgi-Datei:
    Code:
    #!/bin/sh
    
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    . /usr/lib/libmodcgi.sh
    
    check "$FBCAUTH_ENABLED" yes:auto "*":man
    
    sec_begin '$(lang de:"Starttyp" en:"Start type")'
    
    cat << EOF
    <p>
    <input id="auto" type="radio" name="enabled" value="yes"$auto_chk><label for="auto"> $(lang de:"Aktiviert" en:"Enabled")</label>
    <input id="manual" type="radio" name="enabled" value="no"$man_chk><label for="manual"> $(lang de:"Deaktiviert" en:"Disabled")</label>
    </p>
    <font size="2">
    $(lang de:"FBCauth erm&ouml;glicht Client-Authentifizierung." en:"FBCauth allows client authentication.")
    </font>
    EOF
    sec_end
    
    sec_begin '$(lang de:"Konfiguration" en:"Configuration")'
    
    cat << EOF
    <font size="1">
    $(lang de:"(Port, Logout-Passwort, Flush-Passwort, Regeln-Passwort, 1. Passwort, 2. Passwort)" en:"(Port, Logout password, Flush password, Rules password, 1st Password, 2nd Password)")
    </font>
    <p>$(lang de:"Optionen" en:"Options"): &nbsp;<input type="text" name="options" size="65" maxlength="64" value="$(html "$FBCAUTH_OPTIONS")"></p>
    $(lang de:"Mehr Infos: <a TARGET=\"_blank\" href=\" http://www.ip-phone-forum.de/showpost.php?p=1604520&postcount=1\">hier</a>" en:"more information: <a TARGET=\"_blank\" http://www.ip-phone-forum.de/showpost.php?p=1604520&postcount=1\">here</a>")</font><br />
    EOF
    sec_end
    
    sec_begin '$(lang de:"Eingeloggte user" en:"Users logged in")'
    
    cat << EOF
    <p>
    <textarea id="users" style="width: 800px; " name="users" rows="20" cols="7" wrap="off">$(html "$(cat /proc/net/arp)")</textarea>
    </p>
    EOF
    sec_end
    Was ich auch nicht verstehe, warum wird in der mod.log, ein Zusammenhang zwischen der fbcauth und der rc.ndyndns, hergestellt?:
    Code:
    Starting fbcauth ... Usage: /etc/init.d/rc.ndyndns [start|start_nodaemon|stop|restart|status]
    Eine zusätzliche Frage. Warum bleibt der Prozess:
    Code:
    1889     1 root     S     1556   5%   0% sh -x /etc/init.d/rc.fbcauth
    aktiv?
    Angehängte Grafiken Angehängte Grafiken
    FRITZ!Box Fon WLAN 7240 (ata-Modus, replaced kernel, automatic kernel module loading); FW: 7240_7270_v3_04.88freetz-devel- 7 2 9 3 - 7 5 6 1 M klick
    Prosody (ein XMPP/HTTP-Server) mit bzw. fuer Freetz
    FreeBSD; FBCauth (authentication server); iptables (alle iptables Module aus Freetz); trickle; ADC; sshguard
    BS: gcc 4.5.3 20110428

  5. #5
    Semi-Moderator Avatar von olistudent
    Registriert seit
    19.10.2004
    Ort
    Kaiserslautern
    Beiträge
    14.295
    Vielleicht hilft dir ein Blick auf http://trac.freetz.org/changeset/5819 auf die Sprünge zu dem Hänger.

    MfG Oliver
    Router: Fritz!Box Fon WLAN 7570, 7390, 7320, 7270, 3170
    Anbindung: T-Online DSL 16.000 RAM

    Visit ##fritzbox on Freenode for help
    Spenden für Freetz

  6. #6
    IPPF-Fünftausend-VIP Avatar von sf3978
    Registriert seit
    02.12.2007
    Beiträge
    6.397
    Ändern der Zeile:
    Code:
    modlib_startdaemon $DAEMON $FBCAUTH_OPTIONS &
    in
    Code:
    fbcauth $FBCAUTH_OPTIONS & >/dev/null 2>&1
    im rc.fbcauth-Script, bewirkt Folgendes:

    -nach dem Start/Reboot der Box ist fbcauth aktiv (running)
    -kein aktiver sh-Prozess mehr
    -keine (komische) Einträge in der mod.log
    -fbcauth kann benutzt werden

    Stoppen des fbcauth mit dem Freetz-WEB-IF funktioniert, aber das Starten mit dem Freetz-WEB-IF funktioniert dann nicht mehr (Hänger).
    Start mit "sh -x /etc/init.d/rc.fbcauth" funktioniert einwandfrei. Auch kein aktiver sh-Prozess mehr. fbcauth kann benutzt werden.

    EDIT:
    Code:
    modlib_startdaemon $DAEMON $FBCAUTH_OPTIONS & >/dev/null 2>&1
    hat nicht funktioniert.

    EDIT 2:
    Ich glaube zu wissen was es mit dem (komischen) Eintrag in der mod.log auf sich hat. Hier hat mod.log ein Fehler gemacht:
    Falsch:
    Code:
    Starting fbcauth ... Usage: /etc/init.d/rc.ndyndns [start|start_nodaemon|stop|restart|status]
    ... und so wäre es richtig gewesen (2 Zeilen statt Alles in eine Zeile):
    Code:
    Starting fbcauth ... 
    Usage: /etc/init.d/rc.ndyndns [start|start_nodaemon|stop|restart|status]
    ... und fbcauth hängt ...
    Geändert von sf3978 (19.09.2010 um 18:00 Uhr)
    FRITZ!Box Fon WLAN 7240 (ata-Modus, replaced kernel, automatic kernel module loading); FW: 7240_7270_v3_04.88freetz-devel- 7 2 9 3 - 7 5 6 1 M klick
    Prosody (ein XMPP/HTTP-Server) mit bzw. fuer Freetz
    FreeBSD; FBCauth (authentication server); iptables (alle iptables Module aus Freetz); trickle; ADC; sshguard
    BS: gcc 4.5.3 20110428

Ähnliche Themen

  1. [INFO] IRC-Server auf FB7170
    Von sf3978 im Forum Freetz
    Antworten: 73
    Letzter Beitrag: 01.03.2012, 22:03
  2. [INFO] icecast server für die FritzBox
    Von sf3978 im Forum Freetz
    Antworten: 3
    Letzter Beitrag: 24.04.2010, 14:51
  3. [INFO] ample - MP3-Server für die FritzBox
    Von sf3978 im Forum Freetz
    Antworten: 0
    Letzter Beitrag: 11.04.2010, 12:14
  4. FBF ATA dhcp server doesn't work when connected to a router
    Von jimmi61 im Forum FRITZ!Box Fon als ATA
    Antworten: 5
    Letzter Beitrag: 30.04.2005, 06:46
  5. FBF ATA dhcp server doesn't work when connected to a router
    Von jimmi61 im Forum FRITZ!Box Fon: DSL, Internet und Netzwerk
    Antworten: 3
    Letzter Beitrag: 02.01.1970, 09:18

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •