Freeradius üzerinde PEAP ve LDAP ayarları

Freeradius üzerinde PEAP kullanarak LDAP üzerindeki kullanıcılarla giriş yapılabilmesine yönelik düzenli bir içeriğin olmadığını fark ettim. Aslında geçmiş zamanlı Ubuntu üzerinde çeşitli yazılar olmasına rağmen özellikle CentOS ve RPM tabanlı sistemlerde hiç bulamadığımı söylemek isterim. Bu belge boyunca için CentOS 7 ve benzerleri üzerinde örnekler yapacağımı belirtmek isterim.

Belge süresince yapacaklarımızı anlatırsam, Öncelikle LDAP kaynağına (örneğin Aktif Dizin) kendimizi dahil ediyoruz. Sonrasında başka bir yazıda bahsettiğim sertifikaları hazırlıyoruz. Sonrasında freeradius üzerinde ayarları tamamlıyoruz.

Bu adım için önelikle freeradius paketinin yüklenmesi ile başlayabiliriz.

yum set up freeradius freeradius-ldap
Enter fullscreen mode

Exit fullscreen mode

Daha sonrasında domaine eklenme konusunda domainin adresini /and so on/resolv.conf dosyası içerisinde “nameserver IPADRES” olarak ekledikten sonra gerekli paketleri kurabiliriz.

yum set up samba winbind krb5-workstation samba-winbind-clients
Enter fullscreen mode

Exit fullscreen mode

Paketler yüklendikten sonra samba ayarlarını yapmak gerekmektedir. /and so on/samba/smb.conf dosyası içeriğini aşağıdaki gibi yapmanız gerekmektedir.

Bu dosya içinde sadece ACIKLAB yazan yerleri area workgrup adı, ACIKLAB.LAB yazan yerleri de kendi domaininize göre düzenlemeniz gerekiyor. 4 yerde area, 1 yerde workgrup bulunduğunu belirtmek isterim.

[global]
        workgroup = ACIKLAB
        safety = adverts
        realm = ACIKLAB.LAB
        area grasp=no
        native grasp=no
        most popular grasp=no
        load printers=no
        printing=bsd
        printcap identify=/dev/null
        disable spoolss=sure

        idmap config * : backend = tdb
        idmap config * : vary = 300000-301000

        idmap config ACIKLAB.LAB:backend = advert
        idmap config ACIKLAB.LAB:schema_mode = rfc2307
        idmap config ACIKLAB.LAB:vary = 500-200000

        winbind enum customers=sure
        winbind enum teams=sure
        winbind use default area=sure 
        winbind nested teams=sure
        winbind refresh tickets=sure
        winbind offline logon=sure
        template shell=/bin/false
        consumer use spnego=sure
        consumer ntlmv2 auth=sure
        encrypt passwords=sure
        prohibit nameless=2
        log file=/var/log/samba/samba.log
        log stage=2
        dcerpc endpoint servers=distant
        ntlm auth = mschapv2-and-ntlmv2-only
Enter fullscreen mode

Exit fullscreen mode

Bu ayarı yaptıktan sonra aşağıdaki komut ile servisleri yeniden başlatıp domainde bildiğiniz bir kullanıcının çekilip çekilemediğini kontrol etmeniz gerekmektedir.

systemctl restart smb winbind
kinit administrator@ACIK.LAB 
web adverts be part of -k
wbinfo -i ali
Enter fullscreen mode

Exit fullscreen mode

Eğer bir sorun yoksa ilk ve en önemli aşamayı geçtiğimizi söyleyebilirim. AYrıca kerberos ile ilgili dosya hakkında bilginiz varsa o kısmı kendinize göre doldurmanızı da önermekteyim ama çok detaya girmemek için bu başlığa girmiyorum.

Kısaca bir take a look at yapılması istenirse aşağıdaki komut ile operation accomplished efficiently mesajını almak da arada güzel olabilir:

ntlm_auth --request-nt-key --domain=ACIKLAB.LAB --username=ali --password=Passw0rd
Enter fullscreen mode

Exit fullscreen mode

Unutulmaması gereken ve CentOS için çok kaynak bulamadığım en önemli adım da aşağıdaki komutların da uygulanması. Ubuntu’da farklı isimlerde oluşturulduğu için dokümanlarda bu kısım karışmaktadır.

usermod -a -G wbpriv radiusd
chown root:wbpriv /var/lib/samba/winbindd_privileged/
Enter fullscreen mode

Exit fullscreen mode

Bu kısım da oldukça önemli bir kısım olup ayrı bir dosyada bahsettim. Fakat bu kısımda var olan bir sertifika otoritesini kullanmaya yönelik başka bir yazı da hazırlayacağım.

https://style-tricks.com/aciklab/freeradius-uzerinde-sertifika-olusturulmasi-nm

PEAP için en önemli kullanacağımız 3 mod bulunmakta. ldap, mschap ve eap modları.



LDAP modu

LDAP modu “/and so on/raddb/mods-enabled/ldap” adresinde olup eğer oluşturulmamışsa siz oluşturabilirsiniz. İçeriği aşağıdaki gibi olmalıdır.

ldap {
        server="ldaps://192.168.1.180"
        identification = "cn=administrator,cn=Customers,dc=aciklab,dc=lab"
        password = "Passw0rd"
        basedn = "cn=Customers,dc=aciklab,dc=lab"
        base_filter = "(objectclass=person)"
#       filter = "(&(sAMAccountName=%{Stripped-Consumer-Identify:-%{Consumer-Identify}})(memberOf:1.2.840.113556.1.4.1941:=CN=wireless_corp,OU=Networks,DC=aciklab,DC=lab))"
        ldap_connections_number = 5
        timeout = 4
        timelimit = 3
        net_timeout = 1
        dictionary_mapping = ${confdir}/ldap.attrmap
        keepalive {
                idle = 60
                probes = 3
                interval = 3
        }
}
Enter fullscreen mode

Exit fullscreen mode

Bu dosyada en önemli kısım server adresini düzgünce yazmak, identification ve parolasını doğru şekilde yazmaktır. Ve tabi ki basedn ve base_filter da temel kullanım olarak düzenlenmelidir. Bu konuları bilmiyorsanız LDAP ile ilgili çeşitli yazılarımızı inceleyebilirsiniz.



MSCHAP modu

MSCHAP modu “/and so on/raddb/mods-enabled/mschap” adresinde olup eğer oluşturulmamışsa siz oluşturabilirsiniz. İçeriği aşağıdaki gibi olmalıdır.

mschap {
        use_mppe = sure
        require_encryption = sure
        require_strong = sure
        with_ntdomain_hack = sure 
        ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key --domain=ACIKLAB.LAB --username=%{%{Stripped-Consumer-Identify}:-%{%{Consumer-Identify}:-None}} --challenge=%{%{mschap:Problem}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

}
Enter fullscreen mode

Exit fullscreen mode

Bu kısımdaki en önemli nokta da samba-winbind-clients paketi ile birlikte gelen ntlm_auth’in area parametresindeki ACIKLAB.LAB’ı kendi domaininizle değiştirmenizdir.



EAP modu

EAP modu “/and so on/raddb/mods-enabled/eap” adresinde olup eğer oluşturulmamışsa siz oluşturabilirsiniz. İçeriği aşağıdaki gibi olmalıdır.

EAP‘ın PEAP algoritmasını kullanacağımız için süreç aşağıdaki gibi olmalıdır. “private_key_password” kısmı sertifikalarınızı oluştururken girdiğiniz parola olması gerekmektedir. Diğer kısımlar için sertifika adreslerinde bir oynama yapmadıysanız aynı kalmasında bir bahsur bulunmamaktadır.

eap {
        default_eap_type = peap 
        timer_expire     = 60
        ignore_unknown_eap_types = no
        cisco_accounting_username_bug = no
        max_sessions = 4096

        tls {
                certdir = ${confdir}/certs
                cadir = ${confdir}/certs
                private_key_password = birbir
                private_key_file = ${certdir}/server.pem
                certificate_file = ${certdir}/server.pem
                ca_file = ${cadir}/ca.pem
                dh_file = ${certdir}/dh
                random_file = /dev/urandom
                ca_path = ${cadir}
                cipher_list = "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:ECDH+AES128:!aNULL:!MD5"
                #make_cert_command = "${certdir}/bootstrap"
                ecdh_curve = "prime256v1"
        }

        peap {
                default_eap_type = mschapv2
                copy_request_to_tunnel = no
                use_tunneled_reply = no
                virtual_server = "inner-tunnel"
        }

        mschapv2 {
        }
}
Enter fullscreen mode

Exit fullscreen mode

Bazı durumlar için güvenlik nedeniyle aşağıdaki satırların da eklenmesi önerilmektedir:

    tls_min_version = "1.0"
                tls_max_version = "1.2"
Enter fullscreen mode

Exit fullscreen mode

Bu adım için “/and so on/raddb/sites-enabled/” klasörü içerisinde bir dosyada, örneğin default isimli bir dosyada aşağıdaki gibi bir içerik tanımlanması gerekmektedir. Bu kısımda daha detaylı şeyler yapılabilir ama şimdilik detaya girmiyorum. Onun için “/and so on/raddb/sites-enabled/default” dosyası içeriği için aşağıdaki gibi düzenleme yapılması gerekiyor:

    hear {
            kind = auth
            ipaddr = *
            port = 1812
    }


authorize {
        preprocess
        auth_log
        suffix
        eap {
                okay = return
        }
        expiration
        logintime
}

authenticate {
        Auth-Kind MS-CHAP {
                mschap
        }
        eap
}

session {
        radutmp
}

post-auth {
        Publish-Auth-Kind REJECT {
                attr_filter.access_reject
        }
}
Enter fullscreen mode

Exit fullscreen mode

Ayrıca aynı yerde “/and so on/raddb/sites-enabled/inner-tunnel” isimli dosyanın içeriği de aşağıdaki gibi yapılması gerekmektedir:

server inner-tunnel {
        authorize {
                mschap
                suffix
                replace management {
                        Proxy-To-Realm := LOCAL 
                }
                eap {
                        okay = return
                }
                ldap
                expiration
                logintime
        }

        authenticate {
                Auth-Kind MS-CHAP {
                        mschap
                }
                eap
        }

        session {
                radutmp
        }

        post-auth {
                Publish-Auth-Kind REJECT {
                        attr_filter.access_reject
                }
        }
}
Enter fullscreen mode

Exit fullscreen mode

Bu iki dosyanın düzenlenmesi sonrasında artık temel olarak servisimizin ayarları tamamlanmıştır.

Radius servisini kimlerin kullanacağını belirlemek için /and so on/raddb/shoppers.conf dosyası içerisinde muhtemelen en son satırları aşağıdaki gibi subnet aralığı ve secret anahtarı girilebilir. Bu anahtar regular koşullarda router üzerine girilecektir.

consumer 192.168.1.0/24 {
       secret          = bir
       shortname = istemci1
}
Enter fullscreen mode

Exit fullscreen mode

Radius servisini debug yapmak için ayaküstü işlem(course of) olarak çalıştırmak için aşağıdaki komutu kullanabilirsiniz. Denemeniz bittiğinde kapatabilirsiniz ama kapattığınızda servisin çalışmayacağını unutmayın:

radiusd -XXX
Enter fullscreen mode

Exit fullscreen mode

Bu şekilde başlattığınızda “Information: Able to course of requests” isimli bir logu görmezseniz yukarıda bir yerlerde hata logunu aratmanız gerekir. Bu mesajı görüyorsanız yapılandırmada bir hata bulunmamaktadır.

Ayrıca her şeyden eminseniz artık servis olarak da başlatabilirsiniz. Üstteki işlem ayakta ise sizi servis olarak başlatmayacağı için öncelikle işlemi durdurmanız gerekir. Sonrasında aşağıdaki komut ile servisi başlatabilirsiniz ve kontrol edebilirsiniz:

systemctl restart radiusd
systemctl standing radiusd
Enter fullscreen mode

Exit fullscreen mode

EAP ayarlarının take a look at edilmesi için ise aşağıdaki dokümanı inceleyebilirsiniz:

https://style-tricks.com/aciklab/eap-ayarlarinin-kontrol-edilmesi-41lp

Add a Comment

Your email address will not be published. Required fields are marked *