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
$ sudo useradd -G wheel userB
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
# User_Alias ADMINS = userA, userB
ADMINS ALL=(ALL) ALL
userA ALL=(ALL) ALL
/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
command alias
untuk SOFTWARE
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
SOFTWAREADMINS ALL=(ALL) SOFTWARE
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
...
...
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
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
...
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
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
$ sudo adduser --encrypt-home userD
$ ecryptfs-unwrap-passphrase
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
$ sudo usermod -U userB
$ sudo passwd -l userB
$ sudo passwd -u userB
Menghapus user dan group
Menghapus user dapat menggunakan perintah
$ sudo userdel userB
$ sudo userdel -r -f userB
$ sudo groupdel -f groupA
Menghapus user dari Group
Mengeluarkan user dari salah satu group. Sebagai contoh menghapus userA
dari GroupA
$ sudo deluser userA groupA