Freeradius είναι
ένας RADIUS server που έχει την ιδιότητα να
κάνει:
- authentication(διαδικασία ταυτοποίησης με username και password)
-
authorization(διαδικασία που καθορίζει “ποιος θα πάρει πρόσβαση και που”)
-
accounting(διαδικασία που καταγράφει πληροφορίες ενός συστήματος, δραστηριότητες και πληροφορίες ενός χρήστη μέσα στο δίκτυο).
Στο δίκτυο
υπάρχουν κάποια vlans τα οποία χωρίζουν
τα groups των εργαζομένων.(sales, support, sysadmins,
developers etc.)
Κάθε vlan έχει ξεχωριστά policies. Για να έχει πρόσβαση ένα pc στο δίκτυο, απαιτείται να κάνει authenticate με τα credentials του αντίστοιχου χρήστη που βρίσκεται στον LDAP Server. Αν η διαδικασία πραγματοποιηθεί, τότε ο χρήστης που ανήκει στο x ldap group, θα πρέπει να μπει και στο αντίστοιχο vlan.
Κάθε vlan έχει ξεχωριστά policies. Για να έχει πρόσβαση ένα pc στο δίκτυο, απαιτείται να κάνει authenticate με τα credentials του αντίστοιχου χρήστη που βρίσκεται στον LDAP Server. Αν η διαδικασία πραγματοποιηθεί, τότε ο χρήστης που ανήκει στο x ldap group, θα πρέπει να μπει και στο αντίστοιχο vlan.
Τα passwords των
χρηστών είναι αποθηκευμένα ως SSHA στον
LDAP. Οπότε σύμφωνα με τον παρακάτω πίνακα,
θα πρέπει να χρησημοποιηθεί είτε PAP
protocol , EAP-GTC, ή EAP-TTLS(PAP).Το EAP-TTLS είναι μια
μέθοδος η οποία κάνει TLS και Tunneling μεταξύ
του Supplicant(end device) - Authentication Server(Freeradius) και
έπειτα, μπορεί χρησημοποιήσει το
authentication protocol που θελει ο χρήστης (PAP,
CHAP, MSCHAP κλπ.)
Δεν θα
χρησημοποιήσουμε PAP, γιατί μεταδίδει
μη κρυπτογραφημένους κωδικούς μέσω
δικτύου και γι αυτό θεωρείται μη ασφαλές.
Θα χρησημοποιήσουμε EAP-TTLS(PAP)
Πως λειτουργεί
ο freeradius;
O radius client
στέλνει ένα access request στον authentication
server.
O radius server το λαμβάνει, και σύμφωνα με τα modules που έχει ενεργοποιημένα στο authorized section του default configuration file, το αποδέχεται ή το απορρίπτει. Αν πουμε οτι το module που μπορεί να το εξυπηρετήσει, είναι ενεργοποιημένο, τότε το module θα κοιτάξει τα key- attributes(Pap-Challenge, Chap-Challenge κλπ) του request. Αν δει οτι μπορεί να το αναλάβει, τοτε ο freeradius προχωράει τη διαδικασία πηγαίνοντας στο authenticate section. Εκεί λοιπόν το αντίστοιχο module κοιτάζει το User-Password ή το Nt-Password attribute, και προσπαθεί να το συγκρίνει με το password που βρίσκεται στο directory ή database που συνδέεται ο radius server. Προχωράμε στο post-authentication, όπου εκεί επιβεβαιώνεται το authentication και πλέον το end-device έχει συνδεθεί στο δίκτυο μέσω 802.1x protocol.
O radius server το λαμβάνει, και σύμφωνα με τα modules που έχει ενεργοποιημένα στο authorized section του default configuration file, το αποδέχεται ή το απορρίπτει. Αν πουμε οτι το module που μπορεί να το εξυπηρετήσει, είναι ενεργοποιημένο, τότε το module θα κοιτάξει τα key- attributes(Pap-Challenge, Chap-Challenge κλπ) του request. Αν δει οτι μπορεί να το αναλάβει, τοτε ο freeradius προχωράει τη διαδικασία πηγαίνοντας στο authenticate section. Εκεί λοιπόν το αντίστοιχο module κοιτάζει το User-Password ή το Nt-Password attribute, και προσπαθεί να το συγκρίνει με το password που βρίσκεται στο directory ή database που συνδέεται ο radius server. Προχωράμε στο post-authentication, όπου εκεί επιβεβαιώνεται το authentication και πλέον το end-device έχει συνδεθεί στο δίκτυο μέσω 802.1x protocol.
Εγκατάσταση
και παραμετροποίηση freeradius-ldap module
Πριν ξεκινήσουμε
να παραμετροποιούμε τα configuration files του
freeradius, θα πρέπει να εγκαταστήσουμε το
freeradius-ldap module το οποίο θα χρησημοποιήσουμε
για database. Για να ενεργοποιήσουμε το
freeradius-ldap module, θα χρειαστεί να κάνουμε
symbolic link το module απο το mods-available στο
mods-enabled directory.
Ανοίγουμε
το ldap module(/etc/freeradius/3.0/mods-available/ldap) και
αλλάζουμε τις εξής παραμέτρους:
server
= ‘ldap-server’
port
= 636
base_dn
= ‘dc=example,dc=com’
Στo user section:
base_dn
= ‘ou=People,dc=example,dc=com’
Στο group
section:
base_dn
= ‘ou=Groups,dc=example,dc=com’
Αν το
posixGroup object class δεν είναι δηλωμένο
στο ldap group τότε πρέπει να κάνουμε comment
out το membership_attribute
= ‘memberOf’
Αν
ο ldap-server ακούει στην πόρτα 389,
δεν χρειάζεται
να πειράξουμε το tls section
Στο section tls:
ca_file = το public key to ldap
Παραμετροποίηση
eap module
default_eap_type = ttls
Στο section ttls:
default_eap_type = ttls
copy_request_to_tunnel = yes
use_tunneled_reply = yes
virtual-server = “ονομα του
virtual-server”
Παραμετροποίηση
default configuration
Στο authorize section, κάνουμε
comment τα εξής:
cui
auth_log
chap
mschap
digest
wimax
IPASS
suffix
ntdomain
unix
files
-sql
smbpasswd
daily
Στο authenticate section, αφήνουμε
μόνο τo eap
Παραμετροποίηση
virtual-server(inner-tunnel)
Στο authorize section αφήνουμε
comment out:
files
-ldap
expiration
logintime
και προσθέτουμε:
if
(User-Password) {
update control {
Auth-Type := ldap
}
}
Στο authenticate section κάνουμε
comment out το section
Auth-Type LDAP {
ldap
}
και comment το eap.