RADIUS Server Nedir ve Nasıl Entegre Edilir?
Published on 14 Feb 2021
· Around 7 minutes to read
Tanımsal olarak baktığımızda RADIUS, baş harflerini "Remote Authentication Dial-in User Service" tanımından alan ve uygulama katmanlı protokollerden biridir. İletişim yöntemi olarak Network UDP protolünü kullanır. Server (Sunucu) / Client (İstemci) mamirisini kullanır.
RADIUS server kullanıcıdan aldığı temel authentication (oturum), authorization (yetkilendirme) ve accounting (gerçekleştirme) işlemlerini uygular. Basit olarak bir "Secret" (gizli anahtar bilgi) ile iletişimi şifreler. Bir uyuşmazlık probleminde ise iletişimi devam ettirmez.
RADIUS'un en temel kullanım amaçlarından biri network cihazlarındaki oturum işlemlerinin tekilleştirilmesi, Active Directory/LDAP sunucuları üzerinden oturum açmaya olanak sağlaması olarak kullanılır. Çoğunlukla network cihazları üzerinde gördüğümüz RADIUS uygulama protokolü desteği sayesinde, yönetilmesi zor ortamları basit konfigürasyonlar ile yönetilebilmesine olanak sağlar.
Tanımsal kısmı atlamadan, RADIUS'un UDP protokolü üzerindeki 1812 ve 1813 (bazı sistemler 1645 ve 1646) portlarını kullandığını belirtelim.
RADIUS Standart İletişim Mesajları
RADIUS Server Attribute'ler kullanılarak genişletilebilen bir mekanizmaya sahip. Fakat burada aklımıza istediğimiz gibi esnetebileceğimiz bir yapı mekanizma gelmememli. RADIUS'u daha basite indirgeyerek talep ve cevap için kullanmış olduğu mesajları inceleyebiliriz.
Access-Request (Client) - Erişim İsteği
Bu standart olarak istemcinin sunucuya yapmış olduğu taleptir. İstemci RADIUS'e erişim talebini dile getirir. Burada paket tanımı olarak "Erişim Talebi" aklımızda yer edebilir.
Access-Reject (Server) - Erişim Reddi
İlk olarak ret mesajı üzerinden gidelim. Sunucu yapılan talebi reddetmek istediğinde bu mesajı gönderir. Mesela Kullanıcı Adı veya Parola yanlış girildiğinde bu mesaj gönderilir. Veya sunucunun talep etmiş olduğu yükümlülükleri karşılamıyorsa yine aynı mesaj dönülür.
Bu iletişim paketine aynı zamanda bilgilendirme için Reply-Message
eklenebilir. Bu mesaj içerisinde neden bu isteğin reddedildiği belirtebilir.
Access-Accept (Server) - Erişim Onayı
Bütün talepler karşılandığında sunucu cevap olarak bu mesajı döner. Bu mesajı alan Client (İstemci) artık bütün işlemlerin doğru olduğunu kabul ederek talebi ilerletebilir. Bu noktada kişi kendisinden istenen oturum bilgilerini doğru girmiş kabul edilir.
Access-Challenge (Server) - Erişim İtirazı
Sunucu yapılan erişim talebinin ikincil (veya bu süreç sürekli arttırılabilir) bir doğrulamaya daha ihtiyacı olduğunu ifade edebilir. Veya bir durum söz konusu olduğunda Access-Challenge
üzerinden Reply-Message
ile birlikte kullanıcı bilgilendirilebilir.
İkincil veya çok faktörlü doğrulama yöntemleri için Access-Challenge mesajı gönderilir. Bu noktada Reply-Message
içerisinde olan bilgi doğrudan kullanıcıya gösterilir.
Örneğin; "5XX XXX XX 45 telefon numarasına gönderilen doğrulama kodunuzu giriniz."
RADIUS'un İki Faktörlü veya Çok Faktörlü Doğrulama Yöntemi olarak kullanılması
RADIUS'un bir çok kullanım alanı bulunuyor. Bu alanlardan biri ise ikincil veya çok faktörlü doğrulamada bize yardımcı olması. RADIUS server bu aşamada bize yine authentication (oturum) esnasında birincil seçenek sonrasında (kullanıcı adı ve parola) karşımıza çıkan aktif veya pasif olarak nitelendirebileceğimiz bir doğrulama mekanizması sunuyor.
Bir örnekle şekillendirecek olursak, SSL VPN cihazının Active Directory / LDAP üzerinden konfigüre edildiğini düşünelim. Bütün birincil oturum isteklerimiz ilk olarak Active Directory / LDAP tarafından karşılanıyor. Bu kısımdan onay geldiğinde (kullanıcı adı ve parolanız doğru), ikincil doğrulama olarak konfigüre edilmiş olan seçeneği kullanıcının karşısına çıkarıyor. Burada tabii ki interaktif bir ekrandan bahsetmiyoruz. Basit olarak kullanıcının karşısına çıkan ve doğrulama kodunu girebilecekleri bir giriş kutusundan bahsediyoruz.
Bir önceki başlıkta bahsettiğimiz Access-Challenge
ve Reply-Message
bu işlem için yeterlidir fakat sunucu bir şekilde mevcut isteğin devamı olduğu konusunda bilgilendirilmelidir. Bu bilgilendirmeyi yapmak için State
özelliği kullanılır. Mevcutta bulunan bir süreç konusunda RADIUS Server bilgilendirilir.
RADIUS'u MFA Push Notification (Anlık Bildirim) Kullanmak
RADIUS yapı itibari ile aktif-aktif bir iletişim gerçekleştiren veya daha doğrusu Event-Driven (Olay-Güdümlü) bir mimariye sahip değildir. Push Notification (Anlık Bildirim) veya Telefon Çağrısı üzerinden MFA gibi işlemler aktif bir iletişim gerektirir. Küçük bir örnek vericek olursak şöyle bir mimari maalesef RADIUS üzerinde mevcut özellikleri kullanarak kurulması pek mümkün değildir.
[CLIENT] -> Kullanıcı Adı ve Parola girilir [SERVER] -> Kullanıcı Adı ve Parola sunucuya gönderilir [SERVER] -> Lütfen telefonunuza gelen bildirime dokunun [CLIENT] -> Bildirim'e dokunulana kadar bekle [SERVER] -> Bildirim Onaylandı/Reddedildi, tekrar CLIENT'ı bilgilendir. [CLIENT] -> Cevabı aldım, kullanıcı oturum açabilir.
Bu noktada dikkat edersek sunucu, istemciyi onayı aldığına dair bilgilendirmesi gerekiyor. Ama maalesef böyle bir bilgilendirme yalnızca aktif iletişimde yapılabilir gibi görünüyor. Fakat bu yöntemi Timeout
değeri üzerinden manipüle etmek mümkün. Bu noktada bazı ürünler (MonoSign da bu ürünlerden biri) cevap alana kadar isteği bekletip, cevap geldikten sonra ilgili işlemleri yürütebilir. Dilerseniz bu kısma MonoSign üzerinden örnekleyerek devam edelim.
MonoSign üzerinde Radius Server Kullanımı
MonoSign içerisinde (built-in) RADIUS Server barındıran Kimlik ve Erişim Yönetimi uygulaması. MonoSign ile tüm kimlik doğrulama, yetki, rol, çok adımlı kimlik doğrulama (MFA), tekil oturum açma (Single Sign-On) işlemlerini gerçekleştirebiliyoruz.
MonoSign ile RADIUS Server üzerinden kimlik doğrulama işlemini gerçekleştirmek için ilk olarak bir uygulama oluşturuyoruz. Bu noktada ben uygulamaya Radius Server ismini veriyorum.
Uygulama oluşturduktan sonra bir erişim anahtarı (Access Key) tanımlamam gerekiyor. Tanımladıktan sonra sistem bana sadece uygulama için özel üretilen iki anahtar değeri üretiyor.
MonoSign-AppId
: Anahtar KimliğiMonoSign-AppKey
: Anahtar Değeri
Bu değerleri MonoSign Radius Server için kurulumunu yaptığımız uygulamanın Environment Variables (Ortam Değişkenleri) kısmında kullanacağız.
Örnek ortam değişkenlerimiz aşağıdaki gibi olsun;
# RANDOM GENERATED SECRET
MONOSIGN_RADIUS_SECRET=beb84da9-dbf5-420b-b86f-e7ed90a50f28
# MONOSIGN API URL
MONOSIGN_RADIUS_API_URL=https://monosign-api.eu.ngrok.io/
# MONOSIGN APPID and APPKEY
MONOSIGN_RADIUS_APPID=19c68120-4ba7-44cf-825d-7b44f4482892
MONOSIGN_RADIUS_APPKEY=91d4b0b1-9385-4079-81cf-da8ee64b9be1
# YOU CAN PROVIDE CUSTOM PORTS IF YOU WANT
MONOSIGN_RADIUS_AUTHENTICATION_PORT=1812
MONOSIGN_RADIUS_ACCOUNTING_PORT=1813
Bu bilgileri yazdıktan sonra artık RADIUS Server bilgilerimizi herhangi bir uygulamaya yazabiliriz. Örneğin Pulse Secure SSL VPN tanımında bu değerleri yapıyor olalım (burada uygulama olarak RADIUS destekleyen herhangi bir uygulamayı da kullanabilirsiniz).
Buradaki bilgilerin tamamını MonoSign bize sağlıyor. Bu noktada bu bilgileri girmemiz yeterli. Şimdi test işlemimizi yapalım.
Önce yöntemimi seçiyorum;
Sonrasında talep ettiği bilgileri giriyorum;
İlk olarak Kullanıcı Adı ve Parolamızı girdik. Burada kullandığımız kullanıcının hesabında MFA tanımı bulunuyor. Seçmiş olduğu metod ise "Google Authenticator". Şimdi giriş yaptıktan sonra bizi karşılayan ekranı inceleyelim.
Dikkat edersek bizim karşımıza bir bilgi yazabileceğimiz kutucuk çıkardı. Bu kutucukta ise talep ettiği bilgiyi yukarıda yazıyor.
Type your Google Authenticator Token/Code.
Burada SMS token istiyor olsaydı onu yazacaktı. Fakat Push Notification için gelen süreçte bu ekranı hiç görmüyoruz. Ekran bizi bekletiyor ve Push Notification'ı (Anlık Bildirim) onaylamamızı bekliyor. Sonrasında direk bizi içeri alıyor. Aynı durum tabii ki Telefon Çağrısı için de geçerli.
MonoSign aynı zamanda akıllı saatinizi kullanarak da oturum bilgilerinizi saatinizden onaylamanıza imkan sağlıyor.
Nasıl Yaparım?
MonoSign ile hızlıca RADIUS Server bağlantısı yapıp tüm Kimlik ve Erişim Yönetimi (IAM) sürecinizi yönetebilirsiniz. Daha detaylı bilgi almak için https://monosign.com adresini ziyaret edebilirsiniz.