Pluggable Authentication Modules (PAM)

1.    Introduction
PAM atau yang lebih dikenal dengan Pluggable Authentication Module adalah suatu library yang terdapat di dalam linux yang membuat seorang administrator mampu menambahakan authentication method baru dengan menginstall modul-modul yang ada di dalam library PAM tersebut. Selain menambahkan, seorang system administrator juga bisa mengedit authentication policies yang sudah ada dengan mengubah konfigurasi filenya.

2.    PAM Essentials
2.1.    Facilities and primitives
API dari PAM menyediakan 6 macam dari authentication primitives yang terbagi ke dalam 4 facilities,
–    auth
Authentication, facilities ini focus terhadap pembuatan otentikasi terhadap applicant dan juga mengestablish account credentials. Di dalam facility authentication, terdapat dua buah primitives diantaranya
o    pam_authenticate(3) : mengotentikasi applicant, biasanya dengan meminta authentication token untuk dibandingkan dengan value ID yang tersimpan dalam database server. Contoh : Login
o    pam_setcred(3) : menetapkan account credentials, seperti ID, group, dan resource limits.
–    Account
Account Management, facility ini akan mengurus mengenai masalah ketersediaan dari suatu account, seperti larangan akses tertentu pada hari dan jam tertentu. Account Management memilikki satu primitive :
o    Pam_acct_mgmt(3) : primitive ini digunakan memastikan bahwa account yang direquest tersedia.
–    Session
Session management, facility ini digunakan untuk menghandle mengenai masalah kapan suatu fitur dapat dijalankan dan kapan fitur tersebut tidak bisa diajalankan. Contoh : mengatur waktu kapan fitur ssh dapat dijalankan atau tidak dapat dijalankan. Session menyediakan dua buah primitives :
o    pam_open_session(3) : digunakan mengset session set-up atau kapan fitur tersebut dapat mulai dijalankan
o    pam_close_session(3) : digunakan untuk menset session tear-down atau kapan fitur tersebut tidak bisa digunakan lagi.
–    Password
Password Management, digunakan untuk mengatur kompleksitas dari password atau mengenai kekadaluarsaan dari password tersebut, Password Management menyediakan satu primitive :

2.2.    Modules
Modul di dalam PAM merupakan konsep yang paling utama dalam pembelajaran PAM, karena memang kepanjangannya adalah (Pluggable Authentication Module). Modul dari PAM berisi sepoton kode program yang isinya mengimplmentasikan suatu primitives di dalam satu atau lebih facilities yanbg membentuk suatu mekanisme untuk authentication facility seperti UNIX password database, NIS, LDAP, dan Radius.  Untuk direktori dari path, tidak ada yang umum untuk menyimpan modul PAM, untuk PAM versi FreeBSD modul – modul tersebut berada di dalam direktori /usr/lib dan untuk versi NetBSD dapat dilihat pada direktori /usr/lib/security
2.3.    Chains and Policies
Ketika server menginisiasi PAM, PAM akan meloading seluruh policy yang terdapat pada pam_start(3). Policy ini akan memproses request yang masuk dari klien dan menentukan bagaimana request ini berjalan sesuai dengan ketentuan policy yang telah didefinisikan.

Policy yang ada di dalam PAM terbagi ke dalam 4 chains, dimana satu facility mendapatkan masing-masing satu chain. Setiap chain berisi pernyataan konfigurasi yang berisi modul yang dijalankan, parameter yang dibutuhkan untuk melewati modul tersebut dan control flag yang menjelaskan seberapa penting suatu modul harus mampu dijalankan secara tepat agar dapat memberikan akses ke dalam suatu service.

Control Flag terbagi ke dalam 4 jenis diantaranya adalah :
–    Required. Control Flag ini menyatakan bahwa suatu modul harus dijalankan dengan sukses agar otentikasi yang direquest dapat dijalankan dan diberikan akses. Jika modul tersebut gagal dijalankan, maka otentikasi akan langsung ditolak dan akan langsung masuk ke dalam modul berikutnya.
–    Requisite. Hampir sama seperti required, apabila terjadi kesalahan otentiksasi juga akan ditolak, tetapi perbedaanya adalah kesalahan ini akan dikontrol oleh aplikasi sehingga ketika terjadi kesalahan tidak akan berlanjut ke modul berikutnya.
–    Sufficient. Control flag ini akan membuat suatu modul hanya akan dijalankan pada saat modul di atasnya yang bersifat required gagal, namun jika modul req    uired tersebut berhasil dijalankan, maka modul yang sufficient ini tidak akan dijalankan lagi.
–    Optional. Control flag merupakan suatu pilihan apakah mau dijalankan atau tidak. Jika modul tersebut gagal dijalankan, maka tidak aka nada pengaruhnya terhadap otenbtikasi user, begitu juga ketika modul ini berhasil dijalankan, maka modul ini tidak memberikan pengaruh terhadap kesuksesan dari suatu modul interface. Modul optional akan menjadi penting hanya saat di dalam suatu interface tersebut tidak modul lain selain modul optional.
Untuk lebih jelansnya dapat dilihat pada table PAM chain execution summary dibawah ini.
PAM_SUCCESS    PAM_IGNORE    Other

required    –    –    fail=true;
requisite    –    –    fail=true;break;
sufficient    if (!fail) break;    –    –
optional    –    –    –

3.    Manfaat PAM
Ada beberapa manfaat ketika menggunakan PAM, diantaranya
•    Meminimalkan kesalahan konfigurasi untuk sebuah applikasi.
•    Memudahkan untuk maintenance suatu aplikasi sehingga salah konfigurasi tidak menggangu aplikasi lain lain.
•    Memungkinan adanya link simbolik antar file konfigurasi yang berbeda menjadi satu file.
•    Memudahkan dan menghemat waktu konfigurasi.
•    Memungkinkan untuk membatasi akses individu menggunakan proteksi file system
•    Manajemen paket lebih sederhana karena setiap aplikasi baru dapat dilekatkan di /etc/pam.d/

4.    Konfigurasi PAM
•    Konfigurasi berbasis File (/etc/pam.conf)
Konfigurasi untuk setiap service PAM yang ada di simpan pada satu file /etc/pam.conf. Namun karena alasan pemeliharaan dan penggunaan, konfigurasi berbasis file ini tidak lagi digunakan. Untuk saat ini, konfigurasi untuk setiap service disimpan pada direktori /etc/pam.d/
Berikut tampilan isi dari file konfigurasi PAM /etc/pam.conf :

•    Konfigurasi berbasis direktori (/etc/pam.d/)
Setiap service atau program yang menggunakan PAM memiliki file konfigurasi sendiri yang disimpan dalam direktori /etc/pam.d/ . Beberapa file konfigurasi yang ada dalam direktori /etc/pam.d/ berbeda untuk semua host.
Berikut tampilan beberapa file konfigurasi yang ada dalam direktori /etc/pam.d/ :


Dalam debian, terdapat 5 konfigurasi default yang ada di dalam PAM, diantaranya adalah :

  •     /etc/pam.d/common-auth

  •     /etc/pam.d/common-account

  •   /etc/pam.d/common-password

  •   /etc/pam.d/common-session

  •   /etc/pam.d/common-session-noninteractive

5.    Implementasi PAM

5.1.    Membatasi Jumlah Kegagalan Login
Salah satu cara untuk menyusup ke dalam sistem adalah dengan mencoba kombinasi username dan password untuk login. Dengan menggunakan PAM kita dapat mengurangi resiko sistem disusupi oleh orang-orang luar. Untuk mengimplementasikannya, kita menggunakan modul pam_tally.so.

Contoh :
Tambahkan baris berikut ini ke file /etc/pam.d/login dengan cara
Vi /etc/pam.d/login

Ket:
Deny = 3, toleransi untuk kegagalan 3 kali
Unlock_time = 120, akun akan di unlock setelah 120 s kemudian.

Skenario :
User budi telah 3 kali melakukan kesalahan, sehingga pada kesempatan keempat akan muncul warning bahwa accountnya telah dikunci, sehingga harus menunggu selama 120 detik agar dapat melakukan login

5.2.    Membatasi waktu login
Dengan menggunakan PAM kita juga dapat membatasi waktu login untuk masing-masing user.
Contoh:
Untuk user budi hanya dapat login pada hari sabtu minggu pada jam 08:00 – 18.00.
Pertama tambahkan baris berikut pada file /etc/security/time.conf

Kemudian tambahkan baris berikut pada file /etc/pam.d/login

Skenario :
Budi tidak diizinkan login karena hari ini adalah hari selasa.

5.3.    Membatasi resource untuk user atau group
Dengan menggunakan PAM kita juga dapat membatasi resource untuk user ataupun group. Dan juga kita bisa membatasi jumlah maksimum seorang user dapat login kedalam sistem.

Contoh :
Untuk user budi dibatasi maksimum login kedalam sistem 2 kali.
Caranya tambahkan baris berikut pada file /etc/security/limits.conf

Kemudian tambahkan baris berikut kedalam file /etc/pam.d/login

Skenario :
Karena telah lebih dari 2 kali login, maka budi tidak dapat login lagi kedalam sistem

5.4.    Keamanan Password menggunakan pam_cracklib
Dengan menggunakan pam_cracklib admin dapat memastikan agar setiap user memiliki password yang sesuai dengan ketentuan. Misalnya dengan mewajibkan setiap user memiliki password dengan panjang minimal 8 karakter, terdiri dari kombinasi angka, huruf atau simbol, dan ketentuan lainnya.

Contoh :
Sebelumnya pastikan anda telah menginstall modul libpam-cracklib. Jika anda belum menginstall, install libpam-cracklib dengan cara :
Aptitude install libpam-cracklib

setelah itu tembahkan baris berikut pada /etc/pam.d/passwd dengan cara :
Vi /etc/pam.d/common-password

Sumber :
http://uw714doc.sco.com/en/SEC_pam/pam-6.html



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s