Hardening FreeBSD 10.1 (3)

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, atau pw.

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:

  1. Mengunci akun
    # pw lock username
  2. 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:

  1. Membagikan kata sandi root kepada anggota dari grup wheel. Cara untuk melakukan eskalasi akun adalah dengan menggunakan perintah:
    % su

    Untuk mengakhiri eskalasi akun, gunakan perintah:

    # exit

  2. Menginstal package atau port dari security/sudo (direcomendasikan)
    Aplikasi ini menyediakan audit tambahan, kontrol pengguna yang baik, dan dapat dikonfigurasikan untuk mengunci pengguna dengan menjalankan perintah istimewa tertentu.
    Gunakan visudo 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 berkas file1:
    # 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, gunakan chmod dengan prefiks angka empat (4):
    # chmod 4755 suidexample.sh
  • Untuk menetapkan izin setgid pada sebuah berkas, gunakan chmod 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, gunakan chmod 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 dan N2 digunakan untuk kata sandi yang terdiri dari karakter-karakter dari dua kelas karakter. N2 digunakan untuk passphrasepassphrase harus terdiri dari kata-kata tertentu.
  • N3 dan N4 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:
  1. Stallings, William, dan Lawrie Brown. Computer Security: Principles and Practice. Pearson, edisi ke-2, 2012.
  2. https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
  3. http://freeengineer.org/learnUNIXin10minutes.html
  4. http://www.bsdguides.org/2005/working-with-acls/

Leave a Reply

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