RADIUS

ver хоорондын холболт нь сүлжээгээр хэзээ ч илгээгддэггүй shared secret-н хэрэглээгээр баталгааждаг. Мөн хэрэглэгчийн нууц үг нь хэн нэгэн дундаас нь хэрэглэгчийн нууц үгийг авахаас сэргийлэн RADIUS сервер болон хэрэглэгчийн хооронд хөрвүүлэгдэн дамжуулагддаг.
IANA (Internet Assigned Number Authority)-аас албан ёсоор RADIUS баталгаажуулалтад UDP порт 1812 –г, RADIUS бүртгэлд UDP порт 1813 –г тохируулсан байдаг. Гэхдээ үүнээс өмнө 1645 болон 1646 –р портыг хэрэглэдэг байсан  ч “datametrics”-тэй давхцсан учраас ашиглахаа больсон. Ихэнх Cisco төхөөрөмж болон програмууд нь эдгээр портын дугаарын аль алийг нь дэмждэг. RADIUS сервер нь ихэвчлэн юникс болон виндоус сервер дээр ажилладаг процесс юм. 

### Протоколын бүрэлдэхүүн хэсгүүд 
RADIUS сервер нь үндсэн гурван функцтай:
# Authentication - Хэрэглэгчид болон төхөөрөмжүүдийг сүлжээнд хандахаас өмнө тэднийг баталгаажуулах
# Authorization - Хэрэглэгчид болон төхөөрөмжүүдийг тодорхой үйлчилгээг авахад зөвшөөрөх 
# Accounting - Тэдгээр үйлчилгээнүүдийн хэрэглээг бүртгэх

#### Authentication ба Authorization (Баталгаажуулалт болон Зөвшөөрөл) – RFC 2865 
Хэрэглэгч нь хандалтын мэдээллийг ашиглан тодорхой сүлжээний нөөцөд хандах хандалтыг олж авахад Network Access Server (NAS)-д хүсэлт илгээдэг. NAS нь RADIUS серверийнн клинт болон ажилладаг бөгөөд ерөнхийдөө рүтэр, свич, утасгүй AP, файрвол зэрэг төхөөрөмжүүд байдаг. Клинт нь тодорхойлсон RADIUS серверлүү хэрэглэгчийн мэдээллийг илгээх боломжтой байх ба буцааж байгаа хариулт дээр ажилладаг. 
NAS нь RADIUS серверлүү RADIUS Access-Request (хандалтыг хүсэлт) –ийг илгээж RADIUS протоколоор хандалтыг олгох зөвшөөрлийг хүсдэг. Хэрэв ямар нэг хариу буцаж ирэхгүй бол хүсэлтийг дахин илгээнэ. Хүсэлтийн хэлбэр нь хэрэглэгчийн хүлээн авахыг хүсч байгаа холболтын төрлийн тухай мэдээллийг агуулдаг.
Энэ хүсэлт нь хэрэглэгчийн нэр болон нууц үг буюу хэрэглэгчээр олгогдсон аюулгүй байдлын сертификат хэлбэртэй хандалтын мэдээллийг агуулдаг. Нууц үг нь RSA Message Digest Algorithm MD5 дээр суурилсан аргыг хэрэглэн нууцлагддаг. Мөн хүсэлт нь NAS-д холбогдсон хэрэглэгчийн физик цэгийн мэдээлэл, түүний сүлжээний хаяг болон утасны дугаар гэх мэт хэрэглэгчийн тухай NAS-н мэдэх бусад мэдээллийг агуулж болно. 
RADIUS сервер нь дотоод өгөгдлийн сандаа хэрэглэгчийн мэдээллийг хадгалаад шалгадаг. Сүүлийн үеийн RADIUS серверүүд хэрэглэгчийн мэдээллийг шалгахдаа SQL, Kerberos, LDAP, Active Directory зэрэг гадаад эх нөөцүүдэд хандах боломжтой болсон.
RADIUS сервер нь NAS-аас ирсэн хүсэлтийн хариуд Зураг 1-д үзүүлсэн доорх гурван хариултын нэгийг нь буцаадаг:

 # Access-Reject - Хандалтыг цуцлах
 # Access-Challenge - Хандалтад эргэлзэх
 # Access-Accept - Хандалтыг зөвшөөрөх.

•	Access-Reject (Хандалтыг цуцлах) – Хэрэглэгчийн сүлжээний нөөцөд хандах хандалтыг зөвшөөрөхгүй. Хэрэв хэрэглэгчийн нэр өгөгдлийн санд байхгүй бол RADIUS сервер Access-Reject мессежийг илгээнэ. Энэ Access-Reject мессеж нь татгалзах шалтгааныг заасан текст мессежтэй хамт илгээгдэх боломжтой. 
•	Access-Challenge (Хандалтад эргэлзэх) – Хэрэглэгчээс хоёр дахь нууц үг, PIN, кард гэх мэт нэмэлт мэдээллийг хүсдэг. Access-Challenge нь мөн NAS-аас хандалтын мэдээлэл нууцлагдаж ирдэг RADIUS сервер болон хэрэглэгчийн машин хоёрын хооронд аюулгүй тунель үүсдэг комплекс баталгаажуулалтад хэрэглэгддэг. 
•	Access-Accept (Хандалтыг зөвшөөрөх) – Хэрэглэгчийн хандалт зөвшөөрөгднө. Эхлээд хэрэглэгчийг баталгаажуулна, RADIUS сервер нь хүссэн сүлжээний үйлчилгээгээ хэрэглэхэд хэрэглэгчийг зөвшөөрөх эсэхийг шалгадаг. Хэрэв хэрэглэгчийн нэр олдвол мөн нууц үг нь зөв бол RADIUS сервер Access-Accept хариуг илгээдэг. Энэ нь энэ холболтод хэрэглэгдэх параметрүүдийг тодорхойлдог attribute-value хослолын жагсаалтыг агуулдаг. Ерөнхий параметрүүд нь үйлчилгээний төрөл, протоколын төрөл, хэрэлэгчид олгох IP хаяг (статик болон динамик) зэргийг агуулдаг.
Authorization буюу зөвшөөрлийн параметрүүд нь NAS-руу тодорхой тохиролцсон нэр томъёогоор зөвшөөрсөн мэдээллийг дамжуулдаг. Жишээ нь, доорх зөвшөөрлийн параметрүүд нь Access-Accept (хандалтыг зөвшөөрөх) –д агуулагдаж болно. 
•	Хэрэглэгчийн IP хаяг
•	Сонгогдсон хэрэглэгчидийн IP хаягийн хүрээ
•	Хэрэглэгчийн холбоотой байх хамгийн их хугацаа
•	Хэрэглэгчийн хандалт дахь хандалтын жагсаалт, дарааллын дугаар(эрх) болон бусад хязгаарлалт
•	L2TP параметрүүд
•	VLAN параметрүүд
•	QoS параметрүүд

Эдгээр RADIUS хариултууд тус бүр нь зөвшөөрөхгүй байх шалтгаан, эргэлзэж байвал мэдээлэл оруулах талбар, зөвшөөрвөл welcome гэсэн мэдээллийг өгдөг Reply-Message-г агуулдаг байж болно. Attribute дахь энэ текст нь хэрэглэгчрүү дамжуулагдах вэб хуудсанд байна. 

#### Accounting (Бүртгэл) – RFC 2866 
RADIUS  протоколын accounting онцлог нь RADIUS баталгаа болон зөвшөөрлөөс тусдаа хэрэглэгдэх боломжтой. RADIUS accounting функц нь холболтыг эхлүүлэх болон дуусгахад илгээх өгөгдлийг зөвшөөрдөг, холболтын үеэр хэрэглэгдэх нөөцийн хэмжээг (хугацаа, пакет болон бусад) заадаг. Ихэнх ISP нь RADIUS access control болон accounting програм хангамжийг аюулгүй байдал болон billing-д хэрэглэдэг. Ихэнх Cisco төхөөрөмж дэх RADIUS-н accounting порт нь 1646 байдаг. Гэхдээ энэ нь 1813 байж болно. 
Хэрэглэгч NAS-аар сүлжээнд хандахыг зөвшөөрөгдсөн үед хэрэглэгчийн сүлжээний хандалт эхэлснийг мэдэгдэх Accounting Start (RADIUS Accounting Request пакет нь “start” утгатай Acct-Status-Type парамерийг агуулдаг) мэдээлэл NAS-аар RADIUS серверлүү илгээгднэ. “Start” бичлэг нь ерөнхийдөө хэрэглэгчийн таних тэмдэг, сүлжээний хаяг, холбогдох цэг болон үүссэн session-ы танигч зэрэг мэдээллийг агуулдаг.

Тогтмол хугацаатайгаар, Interim Update бичлэг (RADIUS Accounting Request пакет нь “interim-update” утгатай Acct-Status-Type attribute-г агуулдаг) идэвхитэй холболтын төлөв дээрх тухайн бичлэгийг шинэчлэхэд NAS-аар RADIUS серверлүү илгээгддэг. “Interim” бичлэг нь ерөнхийдөө одоо хэрэглэж байгаа өгөгдөл дээрх мэдээлэл болон холболтын үргэлжилж байгаа хугацааг дамжуулдаг. Зураг 2-т accounting процессыг үзүүлсэн байна. 
Эцэст нь, хэрэглэгчийн сүлжээний хандалтыг хаахад, NAS нь RADIUS серверлүү эцсийн Accounting Stop бичлэгээр хугацаа, дамжуулагдсан пакет, дамжуулагдсан өгөгдөл, холболт салгах шалтгаан зэрэг хэрэглэгчийн хандалттай холбоотой бусад мэддэллийг илгээдэг.
Ерөнхийдөө, клинт нь зарим үед Accounting-Response хариултыг иртэл retry interval-г ашиглан Accounting-Request-г илгээсээр байдаг.
Энэ өгөгдлийн гол зорилго нь хэрэглэгч төлбөрөө хийх боломжтой байх ба мөн өгөгдөл нь статистик зорилгоор болон ерөнхий сүлжээний хяналт хийхэд хэрэглэгддэг.

## Пакетын бүтэц 
Зураг 3-т RADIUS пакетын өгөгдлийн хэлбэрийг үзүүллээ. Талбарууд нь зүүнээс баруун тийш дамжуулагддаг, код, тодорхойлогч, урт, байталгаажуулагч болон attribute-ууд байна. 

•	Code 
	Энэ талбар нь ерөнхийдөө RADIUS пакетын төрлийг заадаг. Хүснэгт1-д код талбарын авч болох утгуудыг үзүүллээ.
•	Identifier
Энэ  талбар нь хүсэлт болон хариуг тохируулахад тусалдаг.
•	Length 
Энэ талбар нь код, тодорхойлогч, урт, баталгаажуулагч болон бусад attribute талбаруудыг агуулж байгаа бүрэн RADIUS пакетын уртыг тодорхойлдог.
•	Authenticator 
RADIUS серверээс ирсэн хариуг баталгаажуулахад хэрэглэгддэг ба хөрвүүлсэн нууц үгэнд хэрэглэгддэг, урт нь 16 байт.

### AVP (attribute-value pair) 
RADIUS attribute-ууд нь хүсэлт болон хариун дахь тодорхой баталгаа, зөвшөөрөл, мэдээлэл болон тохиргооны дэлгэрэнгүйг авч явдаг. Attribute-уудыг жагсаалтын төгсгөл нь RADIUS пакетын уртаар хэмжигддэг. Зураг 4-т AVP-н бүтцийг үзүүллээ. 
 

* Type–Төрөл 
Нэг октет урттай. 192-223 утгууд нь туршилтын хэрэглээнд нөөцлөгдсөн, 224-240 нь тодорхой гүйцэтгэлийн хэрэглээнд нөөцлөгдсөн, 241-255 нь нөөцлөгдсөн ба хэрэглэгдэхгүй.  RADIUS server болон клинт нь мэдэхгүй төрөлтэй  attribute-г хэрэгсэхгүй болгодог. 
* Length -Урт
Length талбар нь нэг октет, ба төрөл, урт, утга талбаруудыг агуулж байгаа энэ attribute-н уртыг заадаг. Хэрэв attribute нь Access-Request –д, гэхдээ буруу урттай хүлээн авагдсан бол Access-Reject дамжуулагдна. Хэрэв attribute нь Access-Accept, Access-Reject болон Access-Challenge –д, гэхдээ буруу урттай хүлээн авагдсан бол, пакет нь Access-Reject болох ба эсвэл чимээгүй устгагддаг. 
* Value –Утга 
Value талбар нь тэг /0/ эсвэл олон октет байж болох ба attribute-г тодорхойлох мэдээллийг агуулдаг. Value талбарын хэлбэр болон урт нь төрөл болон урт талбаруудаар тодорхойлогдно. 
Энэ талбарын утга нь таван өгөгдлийн төрлийн нэг байна [1].
-	текст
-	тэмдэгт мөр
-	хаяг (32 бит утга)
-	бүхэл тоо (32 бит утга)
-	хугацаа (32 бит утга)

## FreeRADIUS 
FreeRADIUS нь хамгийн өргөн ашиглагддаг, линукс систем дээрх өндөр гүйцэтгэлтэй, өндөр тохируулах боломжтой нээлттэй эх бүхий RADIUS сервер юм. Энэ нь flat-text файл, SQL, LDAP, Perl, Python гэх мэт олон back-end (ар талд үүрэг гүйцэтгэдэг програм) өгөгдлийн санг дэмждэг. Мөн PAP, CHAP, MS-CHAP(v2), HTTP Digest болон EAP (EAP-MD5, EAP-TLS, PEAP, EAP-TTLS, EAP-SIM) гэх мэт олон баталгаажуулалтын протоколуудыг дэмждэг. Хувилбар 2 нь Cisco-ийн VLAN Query Protocol буюу VMPS –г дэмждэг [8]. 
FreeRADIUS сервер нь сүлжээний хандалтын баталгаажуулалт болон бүртгэлд хэрэглэгддэг RADIUS протокол серверийг тохируулах боломжтой ба юникс болон юникс төрлийн үйлдлийн системүүд дээр daemon байдлаар ажилладаг. Серверийг хэрэглэхэд түүний холбогдох клинтийг зөв тохируулсан байх шаардлагатай. 

### FreeRadius-н пакежууд 
FreeRadius –н гол rpm пакеж нь “freeradius” нэртэй ба мөн “freeradius-xxx” нэртэй хэд хэдэн дэд package-ууд байдаг. Жишээ нь, MySQL өгөгдлийн сантай хамтран ажиллахад “freearadius-mysql” package шаардлагатай. 
* #rpm -qa freeradius\*
* freeradius-2.1.1-7.fc11.i686
* freeradius-python-2.1.1-7.fc11.i686
* freeradius-mysql-2.1.1-7.fc11.i686
* freeradius-ldap-2.1.1-7.fc11.i686
* freeradius-utils-2.1.1-7.fc11.i686
* freeradius-libs-2.1.1-7.fc11.i686
FreeRadius –г суулгах хамгийн хялбар бөгөөд тохиромжтой арга нь yum rpm package manager –г ашиглах юм. Хэрэв rpm package аль хэдийн суусан бол install командын оронд upgrade командыг ашиглана.

### Тохиргооны файлууд 
Radiusd хэд хэдэн тохиргооны файлыг хэрэглэдэг. Тохиргооны файлууд нь ихэвчлэн /etc/raddb директорт хадгалагддаг. Файл бүр өөрийн man хуудсандаа файлынхаа форматыг тодорхойлсон байна. Эдгээр файлууд нь:
* Radiusd.conf	
Администраторын тохируулсан зүйлүүд байдаг үндсэн тохиргооны файл. Энд сервер аль порт, ямар хаяг дээр, аль интерфэйсээрээ, ямар төрлийн пакетыг сонсох гэх мэт үндсэн тохиргоог хийж өгдөг. 
* Dictionary	
Энэ файл нь ихэвчлэн статик байдаг. Энэ нь бусад тохиргооны файлд хэрэглэгддэг боломжит бүх RADIUS attribute-уудыг тодорхойлдог. Үүнийг өөрчлөх хэрэггүй. Энэ нь тухайн директор дахь бусад dictionary файлуудыг агуулдаг. 
* Clients.conf	
Серверт холбогдохыг хүсч байгаа клинт бүрийн IP хаяг болон нууц түлхүүрийг агуулдаг. RADIUS клинтийг тохируулах 2 арга байдаг. IP subnet-ээр нь NAS-г групплэх боломжтой эсвэл hostname болон IP хаягаар нь NAS-г тодорхойлох боломжтой. 
* Hints
Хандалтын серверээр илгээсэн хэрэглэгчийн нэвтрэх нэр болон бусад параметрүүд дээр үндэслэн RADIUS серверлүү тодорхой сануулгуудыг (hints) тодорхойлдог. Энэ нь мөн хэрэглэгчийн нэрийг хөрвүүлдэг (Pusername → username гэх мэт). 
* Huntgroups	
Huntgroups-үүдийг тодорхойлдог ба тодорхой хэрэглэгчидийн тодорхой huntgroup-үүдэд хандах хандалтыг хязгаарладаг. 
* Users		Энд хэрэглэгчдийг тодорхойлдог. Энэ файл нь хэрэглэгч бүрийн аюулгүй байдлын болон тохиргооны мэдээллийг агуулдаг. Эхний талбар нь хэрэглэгчийн нэр, араас нь хэрэглэгчид баталгаажуулалтын шаардлагуудыг жагсаадаг. Эдгээр нь пассворд, хэрэглэгчийн нэр болон хэрэглэгчийн пассвордын дуусах хугацаа зэргийг агуулдаг. Тухайн нэгжээс баталгаажуулалтын хүсэлт хүлээн авагдсан үед, эдгээр утгууд шалгагддаг. Users файлд агуулагдаагүй хэрэглэгчдэд юу хийхийг тодорхойлоход “DEFAULT” нэрээр хэрэглэгч үүсдэг. “UNIX” гэсэн пассворд нь хэрэглэгчдэд UNIX password-н (/etc/password) баталгааг хэрэглэхийг баталгаажуулалтын серверт хэлж өгдөг. Tab тэмдэгт авсны дараах эхний мөр нь хэрэглэгчийн session эхлэхийг зөвшөөрөхөд тухайн нэгжрүү буцаах тохиргооны утгыг заадаг.

Ангилал:Сүлжээний протокол ашиглалтын давхаргаар