G Suite Secure LDAP, Freeradius dan WPA2-Enterprise (Multiple baseDN)

Tentang G Suite Secure LDAP atau Google Cloud Identity

Kurang lebih sebulan yang lalu tepatnya 26 November 2018, Google merilis fitur Secure LDAP untuk pengguna G Suite Enterprise, G Suite Enterprise for Education, G Suite for Education dan Cloud Identity Premium editions. Kebetulan di tempat saya bekerja , kami juga mengunakan layanan G Suite for Education. Layanan Secure LDAP ini sangat dibutuhkan untuk untuk sentralisasi data pengguna terutama bagi instansi dengan jumlah user yang banyak seperti sekolah dan perguruan tinggi.

Kali ini saya mencoba memanfaatkan Secure LDAP dari G Suite ini sebagai sumber data pengguna yang berhak mengakses jaringan WLAN. Service yang kami gunakan adalah Freeradius sebagai radius server bagi akses poin. Nantinya, semua pengguna yang memiliki akun G Suite dengan domain yang kami miliki akan memiliki izin mengakses jaringan WLAN dengan login menggunakan WPA2-Enterprise 802.1x-EAP dengan metode TTLS dan PAP.

Mengaktifkan Secure LDAP client, konfigurasi izin akses dan download sertifikat

Untuk bisa memanfaatkan fitur Secure LDAP dari Gsuite, terlebih dahulu kita harus membuat atau mendaftarkan aplikasi (LDAP Client) yang akan kita gunakan kedalam konsol Admin G Suite (disini kita mengunakan Freeradius. Anda bisa mengikuti langkah berikut :

Login ke konsol Google Admin untuk domain yang anda miliki

Buka menu Aplikasi > LDAP dan klik TAMBAHKAN KLIEN LDAP

Ketikkan nama aplikasi yang akan kita gunakan di kolom Nama Klien LDAP misal : Freeradius Server

Ketikkan deskripsi dari aplikasi anda (opsional) kemudian klik LANJUTKAN

G Suite Secure LDAP - Add LDAP clients

Setelah anda klik LANJUTKAN, akan terbuka halaman izin akses dari aplikasi yang kita daftarkan. Untuk kebutuhan autentikasi penguna di Freeradius, kita akan membutuhkan izin untuk Memverifikasi Kredensial Pengguna, Informasi Pengguna dan Informasi Grup. Untuk dua izin pertama, kita bisa memilih klien yang akan kita gunakan memiliki izin akses untuk seluruh unit organisasi (OU) atau sebagian yang bisa kita tentukan. setelah kita selesai menentukan izin aplikasi klik TAMBAHKAN KLIEN LDAP

G Suite Secure LDAP - Access Permission

Selanjutnya kan muncul halaman sertifikat yang dibuat secara otomatis. Sertifikat ini berfungsi untuk memverifikasi aplikasi anda untuk bisa login dan mengakses Secure LDAP sesuai izin yang telah ditentukan sebelumnya. Silahkan download dan simpan, untuk nantinya kita upload ke server freeradius. Selanjutnya klik LANJUTKAN KE DETAIL KLIEN

G Suite Secure LDAP - Generated Certificate

Saat muncul detail klien LDAP, klik pada kolom kartu Autentikasi. Kemudian klik BUAT KREDENSIAL BARU,  akan muncul username dan password yang dibuat secara otomatis, catat dan simpan untuk kita gunakan pada konfigurasi modul LDAP di Freeradius.

G Suite Secure LDAP - CLIENT DETAILS
G Suite Secure LDAP - Authentication card
G Suite Secure LDAP - Access Credentials

Klik pada kartu Status Layanan, pilih Aktif dan SIMPAN

G Suite Secure LDAP - Service Status

Menginstall dan konfigurasi Freeradius, modul LDAP dengan Multiple baseDN dan autentifikasi EAP-TTLS+PAP

Seperti biasa, server yang saya gunakan disini adalah Ubuntu Linux 16.04. Dalam konfigurasi Freeradius ini, saya mengunakan beberapa instance modul LDAP dengan Multiple baseDN guna mengakomodasi beberapa domain dan subdomain yang kami gunakan. Langkah untuk install dan konfigurasi Freeradius adalah sebagai berikut :

Install paket freeradius dan freeradius-ldap

sudo apt-get install freeradius freeradius-ldap

Pastikan modul ldap sudah aktif dengan adanya symlink pada
/etc/freeradius/mods-enabled/

Edit file /etc/freeradius/mods-available/ldap bagian lain dari file biarkan saja jangan di edit.

ldap domain1 {
	server = 'ldaps://ldap.google.com:636'
	identity = 'JumpyTanta'
	password = PaSsWoRdSuPeRsEcReT
	base_dn = "dc=domain,dc=com"
	tls {
		start_tls = no
		certificate_file = /etc/freeradius/certs/Google_2021_12_21_51950.crt
		private_key_file = /etc/freeradius/certs/Google_2021_12_21_51950.key
		require_cert	= 'allow'
	}
}

ldap subdomain1 {
	server = 'ldaps://ldap.google.com:636'
	identity = 'JumpyTanta'
	password = PaSsWoRdSuPeRsEcReT
	base_dn = "dc=subdomain,dc=domain,dc=com"
	tls {
		start_tls = no
		certificate_file = /etc/freeradius/certs/Google_2021_12_21_51950.crt
		private_key_file = /etc/freeradius/certs/Google_2021_12_21_51950.key
		require_cert	= 'allow'
	}
}

Edit file  /etc/freeradius/sites-available/default dan /etc/freeradius/sites-available/inner-tunnel pada bagian authorize dan authenticate tambahkan :

cattatan : tanda titik tiga ( . . . ) berarti ada baris konfigurasi yang tidak perlu dirubah sampai pada bagian tersebut.

authorize {
	... 
	#
	#  The ldap module reads passwords from the LDAP database.
	-ldap

	switch "%{realm}" { 
   		case "domain.com" {
			domain1
		}
   		case "subdomain.domain.com" {
			subdomain1
		}
	} 
	expiration
	logintime
	pap

	if (Realm == 'domain.com')  {
		update control {
			Auth-Type = domain1
		}
	}
	if (Realm == 'subdomain.domain.com')  {
		update control {
			Auth-Type = subdomain1
		}
	}
}

authenticate {
	...
#	Auth-Type LDAP {
#		ldap
#	}
	Auth-Type domain1 {
		domain1
	}
	Auth-Type subdomain1 {
		subdomain1
	}
	eap
}

Edit file /etc/freeradius/mods-config/files/authorize

File ini untuk mengatur pemberian VLAN sesuai grup user yang telah ditentukan, dalam contoh dibawah ada 4 grup dengan alamat email grup masing-masing adalah [email protected] (VLAN ID 111), [email protected] (VLAN ID 222), [email protected] (VLAN ID 333) dan [email protected] (VLAN ID 444)

DEFAULT realm == "domain.com", domain1-Ldap-Group == "cn=group1,ou=Groups,dc=domain,dc=com"
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802,
        Tunnel-Private-Group-Id = "111"

DEFAULT realm == "domain.com", domain1-Ldap-Group == "cn=group2,ou=Groups,dc=domain,dc=com"
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802,
        Tunnel-Private-Group-Id = "222"

DEFAULT realm == "subdomain1.domain.com", subdomain1-Ldap-Group == "cn=group3,ou=Groups,dc=domain,dc=com"
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802,
        Tunnel-Private-Group-Id = "333"

DEFAULT realm == "subdomain1.domain.com", subdomain1-Ldap-Group == "cn=group4,ou=Groups,dc=domain,dc=com"
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802,
        Tunnel-Private-Group-Id = "444"

Edit file /etc/freeradius/proxy.conf tambahkan baris berikut :

...
realm domain.com {
		Auth-Type := domain1
}
realm subdomain.domain.com {
		Auth-Type := subdomain1
}

Edit file /etc/freeradius/clients.conf tambahkan radius client (biasanya Akses poin, NAS, dll.) :

	...
	
client lantai1 {
	ipaddr		= 192.168.1.0/24	# alamat ip akses poin
	secret		= passwordkonekradius	# password untuk login radius
}

client lantai2 {
	ipaddr		= 192.168.2.0/24	# alamat ip akses poin
	secret		= passwordkonekradius	# password untuk login radius
}

Test konfigurasi radius server

Setelah semua file diatas disimpan, restart service freeradius dan lakukan radtest. Dalam contoh dibawah kita test dengan [email protected] (terdaftar di G suite, dan member dari [email protected] )

radtest [email protected] {passwordemail} localhost 0 testing123

Jika konfigurasi kita sudah benar, kita akan mendapatkan jawaban dengan kalimat Received Access-Accept dengan disertai informasi Tunnel-Private-Group-Id atau VLAN-ID:

Sent Access-Request Id 195 from 0.0.0.0:59934 to 127.0.0.1:1812 length 89
        User-Name = "[email protected]"
        User-Password = "{passwordemail}"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "{passwordemail}"
Sent Access-Request Id 195 from 0.0.0.0:59934 to 127.0.0.1:1812 length 89
        User-Name = "[email protected]"
        User-Password = "{passwordemail}"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "{passwordemail}"
Received Access-Accept Id 195 from 127.0.0.1:1812 to 0.0.0.0:0 length 37
        Tunnel-Type:0 = VLAN
        Tunnel-Medium-Type:0 = IEEE-802
        Tunnel-Private-Group-Id:0 = "222"

Setting radius pada Ubiquiti Unifi Controller

Selanjutnya anda tingal melakukan setting pada akses poin untuk menggunakan WPA2-Enterprise. Berikut ini adalah contoh jika anda menggunakan Ubiquiti Unifi Controller (5.9.32) :

Setting > Profile > Radius > CREATE NEW RADIUS PROFILE

Ubiquity Unifi Controller - Create New Radius Profile

Setting > Wireless Network > CREATE NEW WIRELESS NETWORK

Ubiquity Unifi Controller - Create New Wireless Network

Peringatan : Ini hasil catatan saya selama hampir 6 hari begadang, ilmu tambal sulam, copas sana-sini, terutama pada bagian instantiate ldap modul, proxy realm, authorize dan authenticate dengan multiple baseDN. Kalau ada yang salah atau kurang bener dari konfigurasi diatas mohon dimaafkan, dan jangan sungkan untuk membetulkan _/\_

8 thoughts on “G Suite Secure LDAP, Freeradius dan WPA2-Enterprise (Multiple baseDN)

  1. andri says:

    Bro
    gue gak bisa nemuin directory ini

    Pastikan modul ldap sudah aktif dengan adanya symlink pada
    /etc/freeradius/mods-enabled/
    Edit file /etc/freeradius/mods-available/ldap bagian lain dari file biarkan saja jangan di edit.

  2. wahyu says:

    Cara memberikan simultaneous limit login dimana ya gan, saya alhamdulillah sdh sukses coba tutor diatas dgn beberapa penyesuaian

      • wahyu says:

        Ini saya coba kalau pakai radtest benar user ditolak kalau melebihi 1 login, nah tapi kalau pakai komputer loginnya msh tembus limit simutaneous nya, kira-kira salahnya dimana ya gan ?

      • Wah.. saya sendiri sebenernya jarang oprek freeradius, hanya sebatas mengerjakan kebutuhan di kantor saja sih, jadi belum tau kenapa beda hasil antara di PC dengan radtest

  3. kadek says:

    Saya coba berhasil sampai di radtest saja tapi di implementasinya gak bisa, bagaimana cara setting TTLS PAPnya

    • Jika sampai radtest sudah bisa, berarti tinggal masukkan setting radius di akses poin, pilih security wpa2-enterprise. Jangan lupa menambahkan ip akses poin pada clients.conf

Leave a Reply

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