FreeRADIUS
Tartalomjegyzék | 
1 Általános bevezető
A FreeRADIUS egy free open source RADIUS szerver. RADIUS (Remote Authentication Dial In User Service) egy authentication (hitelesítés), authorization (engedélyezés) and accounting  (naplózás) kliens-szerver protokoll. Az authentication, authorization és accounting hármast csak AAA-nak szokás rövidíteni.
FreeRADIUS hivatalos weboldala: http://www.freeradius.org/
Jelenlegi stabil verzió: 1.1.7 (2007.07.25)
Ez egy moduláris, gyors, gazdag protokoll készletű RADIUS szerver, és lehetőséget biztosít külső, így saját modulok használatára is.
A FreeRADIUS által használt felhasználói adatok elérése:
- LDAP
 - Kerberos
 - SQl (MySQL, PostgreSQL, MSSQl, Oracle)
 - /etc/passwd
 - PAM
 - fájl
 - ProxyRadius
 - DC (domain controller)
 - program (perl, python)
 
Hitelesítési protokollok:
- PAP
 - CHAP
 - MSCHAP (v1, v2)
 - SIP Digest (Cisco VoIP)
 -  EAP 
 
2 Mikor használják?
Felmerülhet a kérdés, hogy ha van pl.: egy LDAP szerverünk, akkor miért teszünk meg egy szervert (RADIUS) a hálózati erőforrás és az LDAP közé?
Biztonsági megfontolásból pl.: az adott alkalmazást feltörik, akkor nem tudnak közvetlenül hozzá férni az LDAP-hoz, ilyenkor a RADIUS szerver bástya hostként (Bastion host) viselkedik.
Vagy ki akarjuk használni a RADIUS adta lehetőségeket pl.: naplózás. 
Viszont a leggyakoribb alkalmazási területe, azoknál a hálózati erőforrásoknál használják, ahol nincsen lehetőség, vagy mód a fent felsorolt azonosítási protokollok implementálására pl.: hálózati eszközök (routerek, switchek, AP-k, stb.).
3 Hogy lehet beszerezni?
A letölthető a forrása a http://www.freeradius.org weboldalról és utána szokásos modon telepíthető (./configure, make, make install), vagy általábban a distribucióknál létezik belőlük csomag (pl.: Debian, Fedora, SUSE, stb). 
Létezik belőle Windows-os verzió is, csak azt FreeRADIUS.net néven terjesztik, ami letölthető a http://www.freeradius.net weboldalról. 
4 RADIUS protokoll
Kliens-server architekurájú protokoll, ahol a kliens egy NAS (Network Access Server), ami küld egy kérést, és a server (RADIUS) válaszol kérésre. A RADIUS protokoll UDP-t használ. A kliens-szerver között átlagban egy kérés és válasz zajlik le, így fölösleges lenne TCP-t hazsnálni. A TCP megbizhatóbb, de nagyon lassítaná csak a protokoll válasz idejét. A protokoll 2 portot használ. A 1812-es porton az auth (authentication, authorization) folyamatokra használja, és a 1813-as portot meg a naplózáshoz (accounting) használja.
RFC (2000): 2865, 2866
Protokoll futam:
RADIUS adat formátuma (mind a két esetben):
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Authenticator | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Attributes ... +-+-+-+-+-+-+-+-+-+-+-+-+-
RADIUS Codes (decimal) értékei:
       1       Access-Request
       2       Access-Accept
       3       Access-Reject
       4       Accounting-Request
       5       Accounting-Response
      11       Access-Challenge
      12       Status-Server (experimental)
      13       Status-Client (experimental)
     255       Reserved
Mível az UDP-ben nincsen nyugtázás, ezért a protokollba beépítették. Erre csak a naplózásnál (accounting) van szükség, ilynkor a RADIUS nyugtázza, hogy megkapta a napló (accounting) csomagot.
Identifier:
Az összetartozó csomagokat azonosítja.
Length: Az egész csomag méretét adja meg. A minimum méret 20, míg a maximális 4096 byte.
Authenticator:
A NAS és a RADIUS rendelkezik egy közös kulccsal (secret vagy key).
Auth esetben:
A kliens generál egy random számot, amit elküld a kérésben. Majd a szerver a válasz csomagban a következő algoritmust használja fel, hogy hitelesítse magát: ResponseAuth = MD5(Code,ID,Length,NASAuth,Attributes,Secret).
Acc esetében:
A kliens (NAS) a következő algoritmus szerint generálja:
Authenticator=MD5(Code,Identifier,Length,16 zero octets,request attributes,shared secret)
A RADIUS a válasz csomagban Authenticator=MD5(Code,Identifier,Length,Request Authenticator,Secret)
 
Attributum:
felépítése: 0 1 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | Type | Length | Value ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Type:
Auth esetén:
         1      User-Name
         2      User-Password
         3      CHAP-Password
         4      NAS-IP-Address
         5      NAS-Port
         6      Service-Type
         7      Framed-Protocol
         8      Framed-IP-Address
         9      Framed-IP-Netmask
        10      Framed-Routing
        11      Filter-Id
        12      Framed-MTU
        13      Framed-Compression
        14      Login-IP-Host
        15      Login-Service
        16      Login-TCP-Port
        17      (unassigned)
        18      Reply-Message
        19      Callback-Number
        20      Callback-Id
        21      (unassigned)
        22      Framed-Route
        23      Framed-IPX-Network
        24      State
        25      Class
        26      Vendor-Specific
        27      Session-Timeout
        28      Idle-Timeout
        29      Termination-Action
        30      Called-Station-Id
        31      Calling-Station-Id
        32      NAS-Identifier
        33      Proxy-State
        34      Login-LAT-Service
        35      Login-LAT-Node
        36      Login-LAT-Group
        37      Framed-AppleTalk-Link
        38      Framed-AppleTalk-Network
        39      Framed-AppleTalk-Zone
        40-59   (reserved for accounting)
        60      CHAP-Challenge
        61      NAS-Port-Type
        62      Port-Limit
        63      Login-LAT-Port
Accountig esetén:
        40      Acct-Status-Type
        41      Acct-Delay-Time
        42      Acct-Input-Octets
        43      Acct-Output-Octets
        44      Acct-Session-Id
        45      Acct-Authentic
        46      Acct-Session-Time
        47      Acct-Input-Packets
        48      Acct-Output-Packets
        49      Acct-Terminate-Cause
        50      Acct-Multi-Session-Id
        51      Acct-Link-Count
Lenght:
Atrributum teljes hosszát adja meg.
Value:
Mérete lehet nulla is. Vagy több byte is.
Típusai:
-  text 1-253 byte
 -  string 1*253 byte
 -  address 32 bit
 -  integer 32 bit
 -  time 32 bit (unix time: 1970, január 1. UTC 00:00:00 óta eltelt másodpercek)
 
RADIUS hitelesítés lépései:
Lépések:
1. NAS - Access-Request
- Code=Access-Request
 - Authenticator=NAS által generált random szám
 - Attributumok: User-Name, User-Password
 
Password titkosítva=MD5(NASAuth,Secret) XOR Password
2. RADIUS - Access-Accept vagy Access-Reject
- Code= Access-Accept vagy Access-Reject
 - Authenticator=MD5(Code,ID,Length,NASAuth,Attributes,Secret)
 - Attributomok (pl.: jogok, protokoll, stb) (opcionális)
 
RADIUS naplózás lépései:
1.NAS - Accounting-Request
- Code=Accounting-Request
 - Authenticator=MD5(Code,Identifier,Length,16 zero octets,request attributes,shared secret)
 - Attributumok
 
2. RADIUS - Accounting-Response
- Code=Accounting-Response
 - Authenticator=MD5(Code,Identifier,Length,Request Authenticator,Secret)
 
5 Beállítás
Forrásból telepített FreeRADIUS könyvtár szerkezette:
bin etc include lib man sbin share var
A konfig fájlok alapértelmezésben a etc/raddb könyvtárban vannak. A konfig fájlok listája:
acct_users attrs certs clients clients.conf db.ipindex db.ippool dictionary eap.conf error2 example.pl experimental.conf hints huntgroups ldap.attrmap mssql.conf naslist naspasswd oraclesql.conf otp.conf otppasswd.sample postgresql.conf preproxy_users proxy.conf radiusd.conf realms services snmp.conf sql.conf sqlippool.conf users
A listából is látszik, hogy mennyire moduláris a konfigurációja. A fő konfigurációs fájl a radiusd.conf, ez töltődik be alapból, és tölti be a szükséges többi konfigurációs fájlt.
Radiusd.conf fájlból részletek:
