Mengelola user secara baik pada Linux akan membantu system administrator dalam melakukan audit dan membuat linux tersebut lebih aman. Beberapa hal yang perlu diperhatikan dalam mengelola user yaitu:

  • Membuat sudo user
  • Disable user root
  • Policy dan Privilege User
  • Menghapus user dan group

Membuat sudo user

Mendaftarkan group super user ke user yang telah ada

$ sudo usermod -a -G wheel userA
Membuat user baru sekaligus menambahkan ke group super user
$ sudo useradd -G wheel userB
Super user group untuk redhat-based adalah wheel dan untuk debian-based adalah sudo

Disable User root

Biasanya ketika mengaktifkan vps pada cloud, kita diberikan user root dan sebaiknya user root ini segera di-disable. Caranya:

  • Buat sudo user terlebih dahulu dengan user root
  • Logout dari user root dan masuk ke sudo user yang baru dibuat
  • Dalam sudo user disable user root
$ sudo passwd -l root

Sudo Policy File

Policy file adalah file yang mengatur kebijakan dalam sudo user. Jika kita menggunakan banyak server dan ingin menambahkan beberapa user untuk dijadikan super user, bisa dengan cara mengedit policy file di /etc/sudoers

$ sudo visudo
Dalam file policy, hilangkan komentar baris berikut
# User_Alias ADMINS = userA, userB
Masukkan nama user yang akan didaftarkan sebagai super user. Berikan user alias di atas dengan full sudo power dengan menambahkan baris berikut
ADMINS ALL=(ALL) ALL
Jika hanya spesifik terhadap satu user bisa dengan menambah baris berikut
userA ALL=(ALL) ALL
Mengedit file /etc/sudoers dengan text editor tidak akan berfungsi, oleh karena itu cara yang terbaik adalah dengan sudo visudo

Privilege Khusus pada Sudo User

Terkadang ketika membuat user kita hanya ingin user tersebut melakukan pekerjaan-pekerjaan khusus. Sebagai contoh di sini userA dan userB hanya dapat melakukan update dan install paket.

User_Alias SOFTWAREADMINS = userA, userB
Kemudian hilangkan komentar pada command alias untuk SOFTWARE
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Terakhir assign tugas dari software ke softwareadmins
SOFTWAREADMINS ALL=(ALL) SOFTWARE
Sebagai contoh sebuah skenario ketika ingin mendeploy sebuah webserver
Host_Alias    WEBSERVERS = webserver1, webserver2
User_Alias    WEBADMINS = userA, userB
Cmnd_Alias    WEBCOMMANDS = /usr/bin/systemctl status httpd, /usr/bin/systemctl start httpd, /usr/bin/systemctl stop httpd, /usr/bin/systemctl restart httpd

WEBADMINS    WEBSERVERS=(ALL) WEBCOMMANDS

Membatasi Password Sudo

Secara default ketika mengerjakan perintah sudo pertama kalinya akan diminta untuk memasukkan password dan sebelum 5 menit ketika menjalankan perintah sudo lainnya (kedua, ketiga) kita tidak akan diminta memasukkan password. Fitur ini bisa di-disable dengan menambahkan baris berikut.

$ sudo visudo
...
Defaults     timestamp_timeout = 0
...
Jika hanya user tertentu yang ingin untuk memasukkan password setiap kali melakukan perintah sudo
...
Defaults:userA     timestamp_timeout = 0
...

Mencegah Shell Escape

Shell Escape memungkinkan user melakukan perintah sudo dari dalam perintah lainnya. Aplikasi yang mendukung shell escape ini antara lain vim, emacs, less, view, more dan lainnya. Untuk menghindari hal tersebut bisa pada policy file bisa menggunakan sudoedit Berikut contoh ketika userA hanya bisa mengedit file sshd_config

userA     ALL=(ALL)     sudoedit /etc/ssh/sshd_config

Membatasi Perintah Sudo User

Terkadang kita hanya ingin memberikan user tertentu dengan perintah tertentu. Misalnya userB hanya bisa bekerja dengan servis sshd, jika hanya diberikan perintah systemctl maka userB tersebut dapat pula melakukan reboot server. Oleh karena itu perintah nya harus bisa lebih spesifik.

userB     ALL=(ALL) /usr/bin/systemctl * sshd
atau lebih spesifik lagi
userB     ALL=(ALL) /usr/bin/systemctl status sshd, /usr/bin/systemctl restart sshd

Mengunci Direktori Home User - RedHat based

Ketika membuat user, secara otomatis centos akan membuat direktori home dengan permission 700. Hal ini bisa dicek pada file /etc/login.defs dan perhatikan baris berikut

...
CREATE_HOME     yes
UMASK 077
...
UMASK 077 akan menghasilkan permission 700 dimana user lain tidak dapat melihat hingga mengeksekusi file-file yang berada di dalam direktori home user masing-masing.

Mengunci Direktori Home User - Debian based

Secara default ketika menambahkan user pada debian based, tidak akan membuat secara langsung direktori home user tersebut. Jika ingin membuat user seperti pada centos-based bisa dengan perintah berikut

sudo useradd -m -d /home/userC -s /bin/bash userC
Akan tetapi ketika melihat permission dari direktori tersebut hasilnya adalah 755ecryptfs-utils.
Hal ini bisa diubah dengan cara edit file /etc/login.defs dan ubah nilai dari UMASK 022 menjadi UMASK 077 seperti pada centos-based.

Fitur Adduser - Debian based

Kelebihan adduser dari useradd adalah adduser dapat langsung mengenkripsi direktori home.
Install terlebih dahulu paket ecryptfs-utils.

$ sudo apt install ecryptfs-utils
Kemudian buat user dengan parameter encrypt
$ sudo adduser --encrypt-home userD
Ketika login pertama kali sebagai userD, jalankan perintah
$ ecryptfs-unwrap-passphrase
Passphrase akan dibuat dan disimpan pada tempat yang aman

Enforcing Password Policy

Pwquality adalah modul dari PAM (Pluggable Authentication Module) teknologi terbaru dari modul cracklib. Edit file konfigurasi di /etc/security/pwquality.conf

...
minlen = 20
...
minclass = 3
...
maxclassrepeat = 5

  • minlen = minimum karakter dari password
  • minclass = multiple character (jenis karakter)

Mengatur masa aktif Akun

mengatur masa aktif akun bisa dengan perintah chage

$ sudo chage -E 2021-02-28 -I 4 -m 3 -M 90 -W 4 userA

$ sudo chage -l userA
Last password change : Oct 06, 2017
Password expires : Jan 04, 2018
Password inactive : Jan 08, 2018
Account expires : Feb 28, 2021
Minimum number of days between password change : 3
Maximum number of days between password change : 90
Number of days of warning before password expires : 4

Mengunci Akun

Mengunci akun bisa dengan dua cara yaitu:

  • usermod
  • passwd

Untuk mengunci akun dengan usermod bisa dengan perintah berikut

$ sudo usermod -L userB
Membuka kunci (unlock) akun
$ sudo usermod -U userB
Menggunakan passwd untuk mengunci akun
$ sudo passwd -l userB
Membuka kunci dari akun userB
$ sudo passwd -u userB

Menghapus user dan group

Menghapus user dapat menggunakan perintah

$ sudo userdel userB
Jika ingin menghapus secara keseluruhan (-r) dan dengan paksa (-f)
$ sudo userdel -r -f userB
Untuk menghapus group dapat menggunakan perintah
$ sudo groupdel -f groupA

Menghapus user dari Group

Mengeluarkan user dari salah satu group. Sebagai contoh menghapus userA dari GroupA

$ sudo deluser userA groupA