FreeRADIUS

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(Általános bevezető)
29. sor: 29. sor:
 
== Mikor használják? ==
 
== 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é?<br>
+
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.<br>
+
Vagy ki akarjuk használni a RADIUS adta lehetőségeket pl.: naplózás.
+
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.
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.).<br>
+
Vagy ki akarjuk használni a RADIUS adta lehetőségeket: közponzi felhasználó és jogosultság kezelés, és 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.).
   
 
== Hogy lehet beszerezni? ==
 
== 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). <br>
+
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. <br>
+
  +
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.
  +
   
 
== RADIUS protokoll ==
 
== 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.<br>
+
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): [http://www.ietf.org/rfc/rfc2865.txt?number=2865 2865], [http://www.ietf.org/rfc/rfc2866.txt?number=2866 2866]<br>
+
  +
RFC (2000): [http://www.ietf.org/rfc/rfc2865.txt?number=2865 2865], [http://www.ietf.org/rfc/rfc2866.txt?number=2866 2866]
  +
  +
"Protokoll futam:"
   
<b>Protokoll futam:</b><br>
 
 
<center>
 
<center>
<br><br>
+
  +
 
[[Kép:radius.gif]]
 
[[Kép:radius.gif]]
<br><br>
+
  +
 
[[Kép:Client.gif]]
 
[[Kép:Client.gif]]
 
</center>
 
</center>
<br>
+
<br>
+
<b>RADIUS adat formátuma (mind a két esetben):</b>
+
  +
"RADIUS adat formátuma (mind a két esetben):"
 
0 1 2 3
 
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
 
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
67. sor: 66. sor:
 
+-+-+-+-+-+-+-+-+-+-+-+-+-
 
+-+-+-+-+-+-+-+-+-+-+-+-+-
   
<br>
+
<b>RADIUS Codes (decimal) értékei:</b><br>
+
"RADIUS Codes (decimal) értékei:"
 
1 Access-Request
 
1 Access-Request
 
2 Access-Accept
 
2 Access-Accept
78. sor: 77. sor:
 
13 Status-Client (experimental)
 
13 Status-Client (experimental)
 
255 Reserved
 
255 Reserved
<br><br>
+
 
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.<br>
 
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.<br>
<b>Identifier:</b>
+
"Identifier:"
Az összetartozó csomagokat azonosítja.<br>
 
   
<b>Length:</b>
+
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.
 
Az egész csomag méretét adja meg. A minimum méret 20, míg a maximális 4096 byte.
   
<b>Authenticator:</b>
+
"Authenticator:"
 
A NAS és a RADIUS rendelkezik egy közös kulccsal (secret vagy key).
 
A NAS és a RADIUS rendelkezik egy közös kulccsal (secret vagy key).
Auth esetben:<br>
+
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).<br>
+
Acc esetében:<br>
+
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).
A kliens (NAS) a következő algoritmus szerint generálja:<br>
+
Authenticator=MD5(Code,Identifier,Length,16 zero octets,request attributes,shared secret)<br>
+
Acc esetében:
A RADIUS a válasz csomagban Authenticator=MD5(Code,Identifier,Length,Request Authenticator,Secret)<br>
+
  +
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)
  +
  +
   
<br>
+
"Attributum:"
<b>Attributum:</b>
 
 
felépítése:
 
felépítése:
 
0 1 2
 
0 1 2
101. sor: 100. sor:
 
| Type | Length | Value ...
 
| Type | Length | Value ...
 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
<br>
 
   
<b>Type:</b>
+
  +
"Type:"
 
Auth esetén:
 
Auth esetén:
 
1 User-Name
 
1 User-Name
163. sor: 161. sor:
 
50 Acct-Multi-Session-Id
 
50 Acct-Multi-Session-Id
 
51 Acct-Link-Count
 
51 Acct-Link-Count
<br>
+
<b>Lenght:</b><br>
+
"Lenght:"
Atrributum teljes hosszát adja meg.<br>
+
<b>Value:</b><br>
+
Atrributum teljes hosszát adja meg.
Mérete lehet nulla is. Vagy több byte is.<br>
+
Típusai:<br>
+
"Value:"
  +
Mérete lehet nulla is. Vagy több byte is.
  +
  +
Típusai:
 
* text 1-253 byte<br>
 
* text 1-253 byte<br>
 
* string 1-253 byte<br>
 
* string 1-253 byte<br>
 
* address 32 bit<br>
 
* address 32 bit<br>
 
* integer 32 bit<br>
 
* integer 32 bit<br>
* time 32 bit (unix time: 1970. január 1. UTC 00:00:00 óta eltelt másodpercek)<br>
+
* time 32 bit (unix time: 1970. január 1. UTC 00:00:00 óta eltelt másodpercek)
<br>
+
<br>
+
<b>RADIUS hitelesítés lépései:</b><br>
+
"RADIUS hitelesítés lépései:"
 
<center>
 
<center>
 
[[Kép:radius2.gif]]
 
[[Kép:radius2.gif]]
 
</center>
 
</center>
   
<b>Lépések:<br>
+
"Lépések:"
1.</b> NAS - Access-Request
+
"1." NAS - Access-Request
 
* Code=Access-Request
 
* Code=Access-Request
 
* Authenticator=NAS által generált random szám
 
* Authenticator=NAS által generált random szám
 
* Attributumok: User-Name, User-Password
 
* Attributumok: User-Name, User-Password
 
Password titkosítva=MD5(NASAuth,Secret) XOR Password
 
Password titkosítva=MD5(NASAuth,Secret) XOR Password
<br>
+
<b>2.</b> RADIUS - Access-Accept vagy Access-Reject
+
"2." RADIUS - Access-Accept vagy Access-Reject
 
* Code= Access-Accept vagy Access-Reject
 
* Code= Access-Accept vagy Access-Reject
 
* Authenticator=MD5(Code,ID,Length,NASAuth,Attributes,Secret)
 
* Authenticator=MD5(Code,ID,Length,NASAuth,Attributes,Secret)
 
* Attributomok (pl.: jogok, protokoll, stb) (opcionális)
 
* Attributomok (pl.: jogok, protokoll, stb) (opcionális)
<br><br>
+
<b>RADIUS naplózás lépései:<br>
+
1.</b> NAS - Accounting-Request
+
"RADIUS naplózás lépései:"
  +
"1." NAS - Accounting-Request
 
* Code=Accounting-Request
 
* Code=Accounting-Request
 
* Authenticator=MD5(Code,Identifier,Length,16 zero octets,request attributes,shared secret)
 
* Authenticator=MD5(Code,Identifier,Length,16 zero octets,request attributes,shared secret)
 
* Attributumok
 
* Attributumok
<b>2.</b> RADIUS - Accounting-Response
+
"2." RADIUS - Accounting-Response
 
* Code=Accounting-Response
 
* Code=Accounting-Response
 
* Authenticator=MD5(Code,Identifier,Length,Request Authenticator,Secret)
 
* Authenticator=MD5(Code,Identifier,Length,Request Authenticator,Secret)
<br>
+
  +
   
 
== Beállítás ==
 
== Beállítás ==
249. sor: 247. sor:
 
users
 
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.<br>
+
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:
 
Radiusd.conf fájlból részletek:

A lap 2007. november 27., 16:29-kori változata

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: közponzi felhasználó és jogosultság kezelés, és 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:"


Fájl:radius.gif


Client.gif


"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:"

Fájl:radius2.gif

"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:

Személyes eszközök