Pada artikel bagian ketiga ini, akan dibahas teknik-teknik dasar untuk melakukan langkah ketiga dan keempat yaitu langkah konfigurasi pengguna, grup, dan otentikasi serta langkah konfigurasi kontrol sumber daya.
Pengguna dan Dasar Manajemen Akun
Dalam sistem operasi berbasis UNIX, terdapat tiga jenis akun: akun sistem, akun pengguna, dan akun superuser.
Pengelolaan akun
- Menambah pengguna baru:
# adduser
adduser
secara otomatis memperbarui/etc/passwd
dan/etc/group
. - Menghapus pengguna:
# rmuser username
- Memodifikasi akun pengguna bisa dengan cara:
chpass, passwd,
ataupw
.
Pengelolaan grup
- Menambah grup baru:
# pw groupadd groupname
- Menambahkan akun user ke sebuah grup baru:
# pw groupmod groupname -M username
- Menambahkan anggota baru ke dalam sebuah grup:
# pw groupmod groupname -m username
- Menampilkan keanggotaan grup:
# pw groupshow groupname # id username
Mencegah Login
Ada dua metode untuk melumpuhkan akun-akun yang tidak membutuhkan akses login:
- Mengunci akun
# pw lock username
- Mengganti
shell
menjadi/sbin/nologin
# chsh -s /usr/sbin/nologin username
Eskalasi Akun yang Diizinkan
Dalam beberapa kasus, administrasi sistem butuh dibagikan dengan pengguna lain. FreeBSD memiliki dua metode untuk menangani hal ini:
- Membagikan kata sandi
root
kepada anggota dari grupwheel
. Cara untuk melakukan eskalasi akun adalah dengan menggunakan perintah:% su
Untuk mengakhiri eskalasi akun, gunakan perintah:
# exit
- Menginstal
package
atauport
darisecurity/sudo
(direcomendasikan)
Aplikasi ini menyediakan audit tambahan, kontrol pengguna yang baik, dan dapat dikonfigurasikan untuk mengunci pengguna dengan menjalankan perintah istimewa tertentu.
Gunakanvisudo
untuk mengubah/usr/local/etc/sudoers
:# visudo username ALL=(ALL) access %groupname ALL=(ALL) access
Perizinan
Untuk melihat daftar direktori dan informasi perizinan berkas, gunakan perintah:
# ls -l drwxr-xr-x 4 cliff user 1024 Jun 18 09:40 WAITRON_EARNINGS -rw-r--r-- 1 cliff user 767392 Jun 6 14:28 scanlib.tar.gz ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | | | | pemilik grup ukuran tanggal jam nama | | | | jumlah tautan ke berkas atau direktori | | | izin untuk dunia | | izin untuk anggota grup | izin untuk pemilik berkas: r = read, w = write, x = execute, - = tidak ada izin tipe berkas: - = berkas normal, d = direktori, l = tautan simbolik, dan lain-lain
Perizinan dalam UNIX
Nilai | Izin | Daftar Direktori |
---|---|---|
0 | Tidak boleh baca, tidak boleh tulis, tidak boleh eksekusi | --- |
1 | Tidak boleh baca, tidak boleh tulis, boleh eksekusi | --x |
2 | Tidak boleh baca, boleh tulis, tidak boleh eksekusi | -w- |
3 | Tidak boleh baca, boleh tulis, boleh eksekusi | -wx |
4 | Boleh baca, tidak boleh tulis, tidak boleh eksekusi | r-- |
5 | Boleh baca, tidak boleh tulis, boleh eksekusi | r-x |
6 | Boleh baca, boleh tulis, tidak boleh eksekusi | rw- |
7 | Boleh baca, boleh tulis, boleh eksekusi | rwx |
Perizinan secara simbolik
Opsi | Huruf | Representasi |
---|---|---|
(siapa) | u | Pengguna (User) |
(siapa) | g | Pemilik grup (Group owner) |
(siapa) | o | Lainnya (Other) |
(siapa) | a | Semua (All) |
(aksi) | + | Menambahkan izin |
(aksi) | – | Menghapus izin |
(aksi) | = | Menetapkan izin secara eksplisit |
(izin) | r | Baca (Read) |
(izin) | w | Tulis (Write) |
(izin) | x | Eksekusi (Execute) |
(izin) | t | Sticky bit |
(izin) | s | Menetapkan UID atau GID |
Contoh:
- blok pengguna dari akses
FILE
:% chmod 700 FILE % chmod go= FILE
- hapus izin tulis grup dan “dunia” pada
FILE
, dan tambah izin eksekusi untuk semua orang:% chmod 755 FILE % chmod go-w,a+x FILE
File flags
untuk menambah keamanan
Sebagai tambahan pada perizinan berkas, FreeBSD mendukung penggunaan file flags
. Flag
meningkatkan tingkat keamanan dan kontrol atas berkas, tapi tidak atas direktori. Dengan file flags, root
bahkan dapat dicegah dari menghapus atau mengubah berkas. Contoh:
- Mengizinkan
system undeletable flag
pada berkasfile1
:# chflags sunlink file1
- Untuk mematikan
system undeletable flag
, tambahkan prefiks “no
”:# chflags nosunlink file1
- Untuk melihat
flags
dari sebuah berkas:# ls -lo file1
Perizinan setuid, setgid,
dan sticky
- Untuk menetapkan izin
setuid
pada sebuah berkas, gunakanchmod
dengan prefiks angka empat (4):# chmod 4755 suidexample.sh
- Untuk menetapkan izin
setgid
pada sebuah berkas, gunakanchmod
dengan prefiks angka dua (2):# chmod 2755 sgidexample.sh
Sticky bit
ditetapkan pada sebuah direktori, berguna untuk mengizinkan penghapusan berkas hanya oleh pemilik berkas. Hal ini berguna untuk mencegah penghapusan berkas dalam direktori publik, seperti/tmp
, oleh pengguna yang bukan pemilik berkas. Untuk menetapkan izin ini, gunakanchmod
dengan prefiks angka satu (1):# chmod 1777 /tmp
Untuk melihat perizinan
sticky bit
, gunakan perintah:# ls -al / | grep tmp
Access Control Lists (ACL)
Secara default, dukungan ACL dinonaktifkan pada semua partisi atau titik-titik mount. Kita dapat memverifikasikannya dengan melihat tabel mounting:
Misalkan kita ingin mengaktifkan ACL pada partisi /usr
. Hal yang pertama dilakukan adalah melakukan unmount partisi tersebut. Unmount hanya bisa dilakukan dalam single-user mode. Perintah untuk langsung boot ke single-user mode adalah:
# shutdown now
Unmount /usr
, aktifkan dukungan ACL, dan mount kembali /usr
:
Seperti kita lihat, dukungan ACL pada titik mount /usr
sekarang sudah aktif. Sekarang reboot ke multi-user mode:
# shutdown -r now
Menggunakan ACL
Untuk melihat informasi ACL pada file.txt
, gunakan getfacl
:
Seperti kita lihat, belum ada yang istimewa dari perizinan tersebut. Misalkan kita batasi akses membaca untuk semua orang, namun mengizinkan pemilik dan csh
untuk membaca:
# setfacl -m u:csh:r,o:: file.txt
Kita dapat melihat efeknya pada daftar perizinan biasa:
Ada tanda tambah (+) pada akhir daftar perizinan. Hal ini mengindikasikan bahwa ASL ditetapkan untuk berkas/direktori tersebut. Sekarang kita verifikasi apakah ACL yang telah ditetapkan sudah benar:
Menghapus ACL
Untuk menghapus seorang pengguna dari daftar, gunakan perintah:
# setfacl -n -x u:csh: file.txt
Izin csh
sekarang telah dihapus. Sekarang misalkan kita ingin menonaktifkan ACL dari berkas, gunakan perintah:
# setfacl -bn file.txt
Penegakan Kebijakan Kata Sandi
Dalam FreeBSD, panjang kata sandi, kekuatan kata sandi, dan kompleksitas kata sandi dapat diimplementasikan menggunakan Pluggable Authentication Modules (PAM). Modul ini ditegakkan ketika pengguna mengganti kata sandinya.
Untuk mengkonfigrasikan modul ini, kita harus menjadi superuser dan hapus simbol komentar pada baris yang berisi pam_passwdqc.so
dalam /etc/pam.d/passwd
. Kemudian, ubah baris tersebut agar sesuai dengan kebijakan kata sandi, misalnya:
password requisite pam_passwdqc.so min=disabled,disabled,disabled,12,10 similar=deny retry=3 enforce=users
min=N0,N1,N2,N3,N4 where N0>N1>N2>N3>N4
N0
digunakan untuk kata sandi yang terdiri dari karakter-karakter dari satu kelas karakter.N1
danN2
digunakan untuk kata sandi yang terdiri dari karakter-karakter dari dua kelas karakter.N2
digunakan untuk passphrase—passphrase harus terdiri dari kata-kata tertentu.N3
danN4
digunakan untuk kata sandi yang terdiri dari karakter-karakter dari tiga dan empat kelas karakter.- Kelas karakter: angka, huruf kecil, huruf kapital, dan karakter lain. Ketika menghitung banyaknya kelas karakter, huruf kapital yang digunakan sebagai karakter pertama dan angka yang digunakan sebagai karakter terakhir tidak akan dihitung.
Sebahian besar kebijakan kata sandi adalah jika kata sandi akan kadaluarsa setelah beberapa hari. Untuk mengatur waktu hidup kata sandi dalam FreeBSD, tetapkan passwordtime
untuk kelas login pengguna dalam /etc/login.conf
:
# :passwordtime=90d:\
Misalkan kita ingin waktu hidup kata sandi adalah 90 hari, hapus simbol komentar pada baris tersebut, simpan, dan jalankan:
cap_mkdb /etc/login.conf
Untuk mengatur tanggal kadaluarsa pada pengguna secara individu, gunakan perintah berikut:
# pw usermod -p 30-apr-2015 -n username
Referensi:
- Stallings, William, dan Lawrie Brown. Computer Security: Principles and Practice. Pearson, edisi ke-2, 2012.
- https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
- http://freeengineer.org/learnUNIXin10minutes.html
- http://www.bsdguides.org/2005/working-with-acls/