FreeRADIUS LDAP bağlantısı (Microsoft AD ve PFSense)

Selamlar millet bir önceki yazımda FreeRADIUS kurduk ayarlarımızı sağlayarak Local testler yaptık. Bu yazımda ise lab ortamımda bulunan Microsoft AD ile bağlantı sağlayacağız ve PFSense‘de de test edeceğiz.

İşletim sistemlerimiz Windows Server 2022 ile Ubuntu 24.04 ve aşağıdaki ip adreslerini manuel olarak atadım. Windows server‘da Domain yapımı kurdum ve sistemdostu.local olarak adlandırdım. İçerisinde bir kaç kullanıcı oluşturdum. Kullanıcıyı domain admin yetkileri olması gerekiyor bunu unutmayın.

Ubuntu FreeRADIUS : 192.168.1.10
Windows AD 2022 : 192.168.1.20
PFSense : 192.168.1.30

– Ubuntu tarafında yapılacak olan kurulum ve ayarlamalar :

İlk olarak LDAP bağlantısı için gerekli bileşenleri aşağıdaki komutlar ile kuruyoruz.

> sudo apt update
> sudo apt install freeradius freeradius-ldap ldap-utils -y

Ardından mods-available altında bulunan ldap dosyasını açıp gerekli olan ayarlamaları yapıyoruz.

Aşağıdaki bold olarak işaretlediğim alanları bularak lab ortamınıza uygun bir şekilde düzenlemelisiniz. Ardından dosyayı kayıt edip kapatmalısınız.

> nano /etc/freeradius/3.0/mods-available/ldap

ldap {
        #  Note that this needs to match the name(s) in the LDAP server
        #  certificate, if you're using ldaps.  See OpenLDAP documentation
        #  for the behavioral semantics of specifying more than one host.
        #
        #  Depending on the libldap in use, server may be an LDAP URI.
        #  In the case of OpenLDAP this allows additional the following
        #  additional schemes:
        #  - ldaps:// (LDAP over SSL)
        #  - ldapi:// (LDAP over Unix socket)
        #  - ldapc:// (Connectionless LDAP)
        server = '192.168.1.20'
#       server = 'ldap.rrdns.example.org'
#       server = 'ldap.rrdns.example.org'

        #  Port to connect on, defaults to 389, will be ignored for LDAP URIs.
#       port = 389

        #  Administrator account for searching and possibly modifying.
        #  If using SASL + KRB5 these should be commented out.
        identity = 'CN=admin,CN=Users,DC=sistemdostu,DC=local'
        password = 'sis123.,'

        #  Unless overridden in another section, the dn from which all
        #  searches will start from.
        base_dn = 'DC=sistemdostu,DC=local'

user {
                #  Where to start searching in the tree for users
                base_dn = "${..base_dn}"

                #  Filter for user objects, should be specific enough
                #  to identify a single user object.
                #
                #  For Active Directory, you should use
                #  "samaccountname=" instead of "uid="
                #
                filter = "(samaccountname=%{%{Stripped-User-Name}:-%{User-Name}}>
                #filter = '(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}>
                #  For Active Directory nested group, you should comment out the>
                #  and use the below. Where 'group' is the group you are qu
				
				
tls {
                # Set this to 'yes' to use TLS encrypted connections
                # to the LDAP database by using the StartTLS extended
                # operation.
                #
                # The StartTLS operation is supposed to be
                # used with normal ldap connections instead of
                # using ldaps (port 636) connections
                start_tls = no

FreeRADIUS‘a erişecek olan kullanıcıların ayarlamaları için aşağıdaki düzenlemeyi yapmalısınız. conf. dosyasını açtıktan sonra en alt satıra ekleyebilir ve kaydedip çıkarsınız.

> nano /etc/freeradius/3.0/clients.conf
 
client ldap-server {
    ipaddr = 192.168.1.20
    secret = sis123.,
	require_message_authenticator = true
}

Module aktifleştirilmesi için aşağıdaki komutu çalıştırıyoruz. mods-enabled alanına symlink bağlantı oluşturur.

> sudo ln -s /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/

Daha sonra default dosyasını açarak aşağıdaki kalın yazı olan alanları kontrol etmelisiniz ve aynı şekilde ayarlamalasınız. Bu alanlar Authorize alanının altındadır. “if ((ok || updated) &” başlayan satırı bulabilir ve o satır dahil, alt satırları yorumdan çıkartmalısınız. Aynı şekilde “Auth-Type LDAP {” satırlarına da yapmalısınız ve kaydedip çıkmalısınız.

> sudo nano /etc/freeradius/3.0/sites-enabled/default
-ldap

        #
        #  If you're using Active Directory and PAP, then uncomment
        #  the following lines, and the "Auth-Type LDAP" section below.
        #
        #  This will let you do PAP authentication to AD.
        #
        if ((ok || updated) && User-Password && !control:Auth-Type) {
                update control {
                        &Auth-Type := ldap
                }
        }

        #  However, it is necessary for Active Directory, because
        #  Active Directory won't give the passwords to FreeRADIUS.
        #
        Auth-Type LDAP {
                ldap
        }

Inner-tunnel dosyasını açtığınızda authorize { alanında bulunan -ldap yazısının yorum satırında olmadığından emin olmalısınız. Yorumdaysa kaldırıp kaydedip burayıda çıkmalısınız.

> sudo nano /etc/freeradius/3.0/sites-enabled/inner-tunnel

Ayarlamalarımızın hepsini tamamladıktan sonra FreeRADIUS‘u restart edebiliriz.

> systemctl restart freeradius
> freeradius -X 

Ayrıca conf. doğrulamasını aşağıdaki komut ilede yapabilirsiniz.

> freeradius -XC

Artık kullanıcı testimizi yapabiliriz. Bunu ilk olarak local‘de yapacağımdan dolayı radtest kullanıyorum tekrar.

> radtest sistemdostu sis123., 127.0.0.1 0 testing123

Hatasız bir şekilde sonuçlanması durumunda LDAP üzerinden testimiz başarılı olmuştur demektir.

Başarılı olarak doğrulandığı zaman mesaj gönderilmesini istersenizde aşağıdaki adımları uygulayabilirsiniz.

> nano /etc/freeradius/3.0/sites-enabled/default

post-auth {

Satırını buluyoruz ve altına aşağıdakileri ekliyoruz.

update reply {
        Reply-Message := "Hoşgeldin, %{User-Name}!"
}

Radtest‘i çalıştırdığınız zaman takipli olarak bir kaç istekten sonra mesaj cevabını aldığınızı görmüşsünüzdür. Bu LDAP takibini kapatmak isterseniz aşağıdaki ayarı no yapmalısınız. Tavsiye edilne değeri ise yes‘tir.

> nano /etc/freeradius/3.0/mods-enabled/ldap
chase_referrals = no

LDAP testi yapmak istersenizde aşağıdaki komutu kullanabilirsiniz.

ldapsearch -x -H ldap://192.168.1.20 -D "CN=admin,CN=Users,DC=sistemdostu,DC=local" -w "sis123.," -b "DC=sistemdostu,DC=local" "(sAMAccountName=admin)"

Netstat ile portları görmek isterseniz de aşağıdaki komutu kullanın.

> netstat -tulnp | grep freeradius

– PFSense RADIUS ayarı ve Test :

Lab ortamım da birde PFSense‘im vardı ve onda bağlayıp test etmek istedim RADIUS‘u ondan dolayı aşağıdaki ayarları ekleyerek denedim. Sizde uygulayabilirsiniz.

Ubuntu RADIUS tarafında yapılan işlem :

> nano /etc/freeradius/3.0/clients.conf

client 192.168.1.30 {
        ipaddr = 192.168.1.30
        secret = sistemdostu1
        require_message_authenticator = no
}

PFsense tarafında yapılan işlem :

System > User Manager > Authentication Servers yolunu izleriz. Add tuşuna basarak yeni ekleriz.

Descriptive Name : Ad belirlenir
Type : Radius
Protocol : PAP
Hostname or IP address : 192.168.1.10
Shared Secret : Client için belirlenen Shared Secret girilir.
RADIUS NAS IP Attribute : WAN (pfsense ile ubuntu bu adresten haberleşiyorlar.)

Sonrasında Kullanıcımızı test etmek için Diagnostics > Authentication alanına gidiyorum ve Authentication Server alanında eklediğim RADIUS‘u seçiyorum. AD içerisindeki kullanıcı adı ve şifre bilgisini girerek Test diyorum.

Bir yazımın daha sonuna geldik arkadaşlar. Bu şekilde RADIUS‘ta LDAP bağlantısını sağlamış olduk ve en sonunda da PFSense‘de test ettik aynı şekilde radtest komutu ilede. Umarım sizler içinde yararlı olmuştur. Bir sonraki yazımda LDAP MSChapV2 aktif etme işlemlerini yapacağım.

Bana destek olmak isterseniz Youtube, Instagram ve TikTok üzerinden kanallarıma abone olabilir ve videolarımı izledikten sonra like atabilirsiniz. 😛 Soru ve görüşleriniz içinse yorumlar alanını kullanabilirsiniz. Kolaylıklar dilerim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir