[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Freeradius: Nutzergruppen und AP-Gruppen (War: Re: User Digest, Vol 111, Issue 11)



On Wed, Nov 28, 2012 at 06:30:21PM +0100, Thomas Ritter wrote:
> Kann ich unter diesen Bedingungen einzelne APs für die Gruppe 
> wireless, in der meine Schüler sind, sperren, um ihn für Lehrer oder 
> andere Aufgaben zu reservieren?

Hallo Thomas,

das sollte eigentlich so gehen (ungetestet):

Alle Access-Points in der Datei "/etc/freeradius/huntgroups" 
jeweils einer Gruppe zuordnen:

# /etc/freeradius/huntgroups

schueler-aps	NAS-IP-Address == 10.1.0.201
schueler-aps	NAS-IP-Address == 10.1.0.202
schueler-aps	NAS-IP-Address == 10.1.0.203
schueler-aps	NAS-IP-Address == 10.1.0.204
schueler-aps	NAS-IP-Address == 10.1.0.205

lehrer-aps	NAS-IP-Address == 10.1.0.220
lehrer-aps	NAS-IP-Address == 10.1.0.230

reserve-aps	NAS-IP-Address == 10.1.0.240
#

In der Datei "/etc/freeradius/sites-available/default" den Abschnitt 
"authorize" ergänzen um "preprocess", damit der Inhalt der Datei huntgroups 
ausgewertet wird; die Bedingungen am Ende geeignet anpassen:

#/etc/freeradius/sites-available/default
authorize {
	auth_log
	eap {
		ok = return
	}
	preprocess
	files
}

authenticate {
	Auth-Type Kerberos {
		krb5
	}
	eap
}

accounting {
#	detail
	unix
	radutmp
	exec
	attr_filter.accounting_response
}

session {
	radutmp
}

# Hier wird der Zugang von Gruppen festgelegt. Beispiel: User erlauben, 
# falls zu den Gruppen teachers oder wireless gehoerend, dazu noch auf 
# bestimmte APs beschränken.
# "teachers" dürfen alle APs bis auf die in der Gruppe reserve-aps benutzen,
# die Gruppe "wireless" nur die schueler-aps.

post-auth {
	if ( Group == teachers && Huntgroup-Name != reserve-aps ) {
		noop
	}
	elsif ( Group == wireless && Huntgroup-Name == schueler-aps ) {
		noop
	}
	else {
		reject
	}
}
-----------------------------------------------------------------------


Gruß,

Wolfgang



> >Subject: Re: GOSA und RADIUS- Server
> >To: user@skolelinux.de
> >Message-ID: <20121023110509.GA14289@schweer-online.local>
> >Content-Type: text/plain; charset="iso-8859-1"
> >
> >On Fri, Oct 19, 2012 at 07:30:40PM +0200, Thomas Ritter wrote:
> >>
> >>hat Jemand von euch einen RADIUS-Server für ein WLAN am Laufen oder
> >>möchte es gern mit mir gemeinsam ausprobieren? Ich möchte einer
> >>ausgewählten Benutzergruppe ( ->GOSA) einen Zugang zum schulischen
> >>WLAN einrichten (können)
> >
> >Hallo Thomas,
> >
> >kurz aufgeschrieben, alles ohne Garantie:
> >
> >--------------------------------------------------------------------
> >Debian-Edu Squeeze: WLAN mit WPA2 Enterprise (EAP-TTLS außen, PAP im
> >inneren Tunnel)
> >--------------------------------------------------------------------
> >
> >Als root auf tjener ausführen:
> >
> >
> >(1) Kerberos-Anbindung für freeradius herstellen.
> >
> >kadmin -p root/admin@INTERN
> >[Admin-Passwort eingeben]
> >
> >Am kadmin-Prompt Schlüssel erzeugen, in Datei ablegen, verlassen.
> >kadmin: ank -randkey radius/tjener@INTERN
> >kadmin: ktadd -k /etc/krb5.keytab.radius radius/tjener@INTERN
> >kadmin: q
> >
> >Rechte der Datei kontrollieren, sollte 0600 sein.
> >
> >
> >(2) Pakete installieren.
> >
> >aptget update
> >apt-get install freeradius-krb5
> >
> >(Die Pakete freeradius, freeradius-common und freeradius-utils sollten
> >automatisch mit installiert werden.)
> >
> >
> >(3) Sechs Dateien modifizieren; unten sind alle überflüssigen Inhalte
> >weggelassen.
> >
> >1.
> >#/etc/freeradius/modules/krb5
> >krb5 {
> >	keytab = /etc/krb5.keytab.radius
> >	service_principal = radius/tjener
> >}
> >#
> >
> >
> >2.
> >#/etc/freeradius/eap.conf:
> >	eap {
> >		default_eap_type = ttls
> >		timer_expire     = 60
> >		ignore_unknown_eap_types = no
> >		cisco_accounting_username_bug = no
> >		max_sessions = 4096
> >		md5 {
> >		}
> >		tls {
> >			certdir = ${confdir}/certs
> >			cadir = ${confdir}/certs
> >			private_key_password = whatever
> >			private_key_file = ${certdir}/server.key
> >			certificate_file = ${certdir}/server.pem
> >			CA_file = ${cadir}/ca.pem
> >			dh_file = ${certdir}/dh
> >			random_file = /dev/urandom
> >			CA_path = ${cadir}
> >			cipher_list = "DEFAULT"
> >			cache {
> >			      enable = no
> >			}
> >		}
> >		ttls {
> >			default_eap_type = md5
> >			copy_request_to_tunnel = yes
> >			use_tunneled_reply = yes
> >			virtual_server = "inner-tunnel"
> >		}
> >	}
> >#
> >
> >
> >3.
> >#/etc/freeradius/users
> >#
> ># Alternativ; bessere Zugangssteuerung ueber Gruppen ist
> ># in der Datei ../sites-available/default realisiert.
> >#
> >#DEFAULT	Group != "wireless", Auth-Type := Reject
> >#		Reply-Message = "Zugang nicht erlaubt"
> >
> >DEFAULT Auth-Type = Kerberos
> >#
> >
> >
> >4.
> >#/etc/freeradius/clients.conf
> ># Client-IP (Access-Point oder Concentrator),secret und shortname
> ># anpassen, secret im AP ebenfalls.
> >#
> >client 10.0.2.3 {
> >	secret		= bitte_aendern
> >	shortname	= ddwrt
> >}
> >#
> >
> >
> >5.
> >#/etc/freeradius/sites-available/default
> >authorize {
> >	auth_log
> >	eap {
> >		ok = return
> >	}
> >	files
> >}
> >
> >authenticate {
> >	Auth-Type Kerberos {
> >		krb5
> >	}
> >	eap
> >}
> >
> >accounting {
> >#	detail
> >	unix
> >	radutmp
> >	exec
> >	attr_filter.accounting_response
> >}
> >
> >session {
> >	radutmp
> >}
> >
> ># Hier wird der Zugang von Gruppen festgelegt. Beispiel: User erlauben,
> ># falls zu den Gruppen teachers oder wireless gehoerend.
> >post-auth {
> >	if ( Group == teachers ) {
> >		noop
> >	}
> >	elsif ( Group == wireless ) {
> >		noop
> >	}
> >	else {
> >		reject
> >	}
> >}
> >#
> >
> >
> >6.
> >
> >#/etc/freeradius/sites-available/inner-tunnel
> >server inner-tunnel {
> >listen {
> >        ipaddr = 127.0.0.1
> >        port = 18120
> >        type = auth
> >}
> >authorize {
> >	update control {
> >	       Proxy-To-Realm := LOCAL
> >	}
> >	eap {
> >		ok = return
> >	}
> >	files
> >	expiration
> >	logintime
> >	pap
> >}
> >
> >authenticate {
> >	Auth-Type PAP {
> >		pap
> >	}
> >	Auth-Type Kerberos {
> >		krb5
> >	}
> >}
> >
> >session {
> >	radutmp
> >}
> >
> >}
> >
> >(4) Den Dienst neu starten.
> >
> >invoke-rc.d freeradius restart
> >
> >
> >
> >Zur Fehlerkontrolle Debug-Modus:
> >
> >invoke-rc.d freeradius stop
> >freeradius -X
> >Dann Verbindung aufbauen und den Output kontrollieren.

Attachment: signature.asc
Description: Digital signature


Reply to: