PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : freeRadius mit Authentication Fallback bei einem Reject



maanee9
08.05.14, 21:43
Bevor ich das Problem erkläre umreise ich erstmal die Aufgabenstellung bis ich zu meinem eigentlichen Problem komme.

Wir haben seit einigen Jahren eine Aventail Client VPN Lösung im Einsatz mit 2-Factor Authentifzierung, die zunächst über einen propritären Radiusserver mit Tokens (Secovid) authentifziert und anschließend noch über Active Directory.

Nun wollen wir den alten Radius Server ablösen und mit einer neuen Lösung (LinOTP Community Edition) die auch Softtokens, SMS Tokens etc unterstützt, ersetzen. Die neue Lösung bietet keinen eigenen Radius Server sondern eine Webschnittstelle und einen Perlmodul für die Radiusanbindung mit freeRadius. Die Radius-Authentifzierung mit dem neuen System läuft bereits problemlos und soll in nächster Zeit die alte Lösung ablösen.

Um den Übergang auf die neuen Tokens fließend zu gestalten soll der neue Radius Server, wenn er eine Anfrage bekommt die er ablehnen würde zusätzlich noch beim alten Radius anfragen und bei erfolgreicher Anfrage ein Accept zurückliefern.

-- --

Kurzfassung der Problemstellung :

Der neue Radiusserver authentifziert aktuell alle Benutzer über ein Perl-Modul und soll zukünftig wenn die erste Authentifzierung abgelehnt wird einen anderen Radiusserver Anfragen ob dieser die Anfrage aktzepiert.

Was/Wie müsste ich die aktuelle Konfiguration ändern damit das so funktioniert wie ich mir das vorstelle ?

Hier sind meine 3 Konfigs:

- radiusd.conf


prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct

name = freeradius

confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/${name}.pid

user = freerad
group = freerad

max_request_time = 30
cleanup_delay = 5
max_requests = 1024
hostname_lookups = no
allow_core_dumps = no

regular_expressions = yes
extended_expressions = yes

log {
destination = files
file = ${logdir}/radius.log
syslog_facility = daemon
stripped_names = no
auth = no

auth_badpass = no
auth_goodpass = no
}

checkrad = ${sbindir}/checkrad

security {
max_attributes = 200
reject_delay = 1
status_server = yes
}

proxy_requests = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf


thread pool {
start_servers = 5
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 300
}

modules {

$INCLUDE ${confdir}/modules/
$INCLUDE eap.conf
# $INCLUDE sql.conf
# $INCLUDE sql/mysql/counter.conf
# $INCLUDE sqlippool.conf
}

instantiate {
exec
expr
expiration
logintime
}



$INCLUDE policy.conf
$INCLUDE sites-enabled/


- proxy.conf


proxy server {
default_fallback = no
}


- linotp (aktive Site)


server default {
listen {
ipaddr = *
port = 1645
type = auth
}


authorize {
update control {
Auth-Type := perl
}

perl
}


authenticate {
perl
}


}

maanee9
10.05.14, 19:10
Nachdem ich fürn mein Problem leider keine Lösung gefunden habe hab ich mir selber nen Proxy Radius programmiert.
Ich muss allerdings dazusagen das es eine Quick and Dirty Lösung ist, ohne Konfigfile, Kommandozeilenparameter oder erweiterten Features wie Accounting.

Es wurde in Java mit Netbeans programmiert und alle Einstellungen werden über statische Variablen direkt über der MainMethode gesetzt.
Falls jemand selber mal was in der Richtung braucht kann er den Quellcode gerne verwenden. (mindesten Oracle Java 7)

Anhang ist leider zu groß für dieses Forum. Kann aber auch hier bekommen werden.
http://forum.ubuntuusers.de/topic/freeradius-mit-authentication-fallback-bei-ein/