https://mfirhas.com/rss.xml

Linux Server Administration

14 Dec 2024

Di post ini saya akan menjelaskan secara sederhana beberapa administrasi awal yang biasa dilakukan pada server/VPS linux. Post ini mengasumsikan Anda sudah memiliki VPS secara remote dan public IP nya bisa dicapai. Pada kasus ini kita akan menggunakan Ubuntu 22.04.

VPS provider menyediakan akses dalam berbagai macam bentuk di antaranya: ssh, remote desktop(GUI), VNC, cPanel, internal dashboard, web gui, ftp, etc. Metode akses ini memiliki cara yang berbeda-beda dalam pengaksesan. Pada post ini kita akan fokus pada administrasi linux server menggunakan SSH. Hal ini karena SSH merupakan cara paling umum untuk mengakses server linux yang interfacenya kebanyakan cuma terminal. Kita membutuhkan VPS ini untuk hal-hal khususnya yang memiliki backend/server processing dan database.

Berikut beberapa hal-hal yang pertama kali Anda perlu lakukan untuk VPS Linux:

Tes Koneksi

Setelah mendapatkan VPS Linux baru, Anda tentunya mendapatkan IP Publik dari server tersebut. Hal pertama yang mungkin bisa Anda coba adalah mencoba ping IP tersebut, untuk memastikan server reachable. Jikapun terlihat tidak reachable, belum tentu benar-benar tidak reachable, karena bisa jadi konfigurasi VPS nge-block ICMP request.

Login

Berbagai VPS provider menyediakan cara interaksi yang berbeda-beda, di antaranya ada dengan terminal/shell, GUI, atau file system(FTP). Karena kali ini kita berinteraksi dengan VPS menggunakan SSH, maka interface yang akan kita hadapi adalah terminal/shell.

VPS bisa memiliki metode otentikasi yang berbeda-beda, seperti menggunakan password, key-pair, SSO(kerberos), dan lainnya. SSO login biasanya digunakan untuk environment enterprise karena otentikasi terpusat dan bisa dikendalikan. Pada kali ini kita akan fokus pada 2 metode yaitu password-based dan key-pair, karena metode ini paling lumrah untuk login VPS secara umum.

Sebagian VPS provider menyediakan password-based SSH untuk akses pertama kali. Sebagian meminta Anda menyediakan public key untuk di-upload pada saat pembelian VPS. Apapun itu, Kita bertujuan untuk melakukan login menggunakan key-pair karena lebih aman dari password-based. Untuk akses pertama, Anda seharusnya mendapat akses root.

Jika Anda mendapat akses pertama menggunakan password, maka Anda bisa mencoba meng-akses VPS menggunakan password dengan cara:

ssh root@<public-ip>

Anda akan diminta memasukkan password ssh.

Jika berhasil login, Anda akan masuk ke session SSH dengan user root pada $HOME dari root yaitu /root.

Update & Upgrade

Hal yang perlu dilakukan setelah login adalah mengupdate dan mengupgrade packages yang terinstall.

apt update && apt upgrade -y

Membuat User Baru

Kita sebagai root hanya untuk akses pertama. Untuk administrasi dan manajemen VPS selanjutnya, kita melakukannya menggunakan user baru yang bukan root. Hal ini karena root memiliki banyak privilege yang memungkinkan kita menyenggol sistem karena kesalahan. Selain itu juga untuk alasan security dengan melimitasi attack surface.

Pertama kita harus membuat user baru terlebih dahulu dengan cara:

adduser your-username

Setelah user baru terbuat, kita harus memasukkan user tersebut ke dalam sudo group, untuk memberikan user baru tersebut root privilege ketika kita butuh operasional yang membutuhkan root privilege. Berikut untuk menambahkan user baru ke sudo group:

usermod -aG sudo your-username

Pastikan user baru masuk ke dalam sudo group dengan memeriksanya melalui:

getent group sudo

Anda harusnya melihat username yang baru saja dibuat pada list.

Setelah berhasil membuat user baru, saatnya login menggunakan user baru tersebut dengan cara:

su - your-username

Untuk administrasi seterusnya kita akan melakukan menggunakan user baru ini.

Mengubah SSH Default Port

Koneksi SSH secara default memiliki port 22. Kita akan mengubah menjadi port lain untuk alasan keamanan. Ada yang bilang Security by obscurity, ada juga yang bilang semacam High pass filter. Untuk mengganti SSH port kita butuh edit file /etc/ssh/sshd_config dengan sudo karena write permission file ini berada pada sudo privilege:

sudo vim /etc/ssh/sshd_config

Cari entry Port 22, uncomment kalo ter-comment-ed dan ganti menjadi port lain yang belum digunakan, misal 2244;

Port 2244

Setelah itu save :wq

Disable Root Login

Karena kita sudah memiliki user baru untuk login, kita tidak membutuhkan login sebagai root lagi, sehingga kita bisa meng-non-aktifkan root login dengan mengedit file /etc/ssh/sshd_config:

PermitRootLogin no

Untuk selanjutnya kita akan login menggunakan user baru. Kita akan mencoba login dengan user baru setelah me-restart ssh service.

Restart SSH Daemon

Restart SSH daemon untuk memberikan efect terhadap perubahan di atas:

sudo systemctl restart ssh

Login dengan user dan port baru

Setelah berhasil restart dan exit dari ssh session. Coba login kembali menggunakan user dan port baru:

ssh -p <port> <your-username>@<vps-ip>

Jika kita coba login menggunakan port lama atau menggunakan user root, akan terlihat kita tidak bisa login.

Sehingga untuk login selanjutnya kita akan menggunakan port dan user baru ini.

Login menggunakan Key-pair

Login menggunakan password VPS tidak disarankan karena kurang aman. Cara yang lebih aman adalah login menggunakan key-pair yang kita generate sendiri dan kita register-kan ke VPS.

Logout dari VPS jika masih logged-in. Kali ini kita akan membuat key-pair di local.

Membuat key-pair

Kita akan menggunakan ssh-keygen untuk meng-generate keygen:

ssh-keygen -t rsa -b 4096 -C "[email protected]" -f $HOME/.ssh/vps_key

Perintah ini akan menciptakan 2 keys: public key(vps_key.pub) dan private key(vps_key). Yang kita taruh ke VPS adalah yang public key(.pub).

Konfigurasi SSH client config

Masih di local, kita butuh mengkonfigurasi login credential ssh untuk VPS dengan meng-edit file $HOME/.ssh/config:

Host vps_ssh
    HostName vps-ip
    User <vps-username>
    Port <vps-ssh-port>
    AddKeysToAgent yes
    # UseKeychain yes # add this for macos user
    IdentityFile ~/.ssh/vps_key # your private key

Copy public key ke VPS

Copy public key(.pub) dengan cara:

ssh-copy-id -i $HOME/.ssh/vps_key.pub -p <vps-ssh-port> <vps-username>@<vps-ip>

Jika berhasil, selanjutnya kita akan mencoba login menggunakan SSH.

Login menggunakan SSH key-pair

Selanjutnya kita mencoba login dengan SSH key yang telah dibuat dan diupload. Jika ini pertama kali, maka mungkin password prompt masih akan ke-trigger. Kita bisa meng-disable password login nanti. Gunakan metode login yang sama dengan di atas ssh -p <port> <vps-username>@<vps-ip> atau kita bisa menggunakan config yang telah kita set di $HOME/.ssh/config dengan perintah ssh vps_ssh. Nama vps_ssh tergantung yang kita configure di atas.

Disable Password Login

Setelah berhasil login dengan ssh atau password, kita harus meng-disable password login karena telah memiliki SSH key untuk login. Edit file sudo vim /etc/ssh/sshd_config.

PasswordAuthentication no 
PubkeyAuthentication yes

Config tersebut akan me-non-aktifkan login menggunakan password dan menyalakan login menggunakan SSH key.

Public key yang telah kita buat dan upload tadi terdapat pada $HOME/.ssh/authorized_keys.

Sekarang kita butuh me-restart daemon ssh: sudo systemctl restart ssh

Setelah itu coba logout dari VPS dan login kembali dengan metode yang sama: ssh -p <port> <vps-username>@<vps-ip>, jika berhasil, kita tidak akan dimintai password lagi karena sekarang metode login menggunakan ssh key.

Untuk seterusnya kita akan login menggunakan SSH key ini.

Konfigurasi Firewall

Firewall merupakan layer filter terhadap trafik masuk dan keluar pada VPS kita. Di antara kegunaannya adalah Packet filtering, NAT, Port forwarding, konfigurasi port dan services, etc. Untuk tahap awal ini, kita akan menggunakan tool ufw untuk memfilter trafik yang masuk untuk port-port tertentu.

Pertama cek dulu apakah ufw sudah terinstall:

which ufw

Install jika belum ada sudo apt install ufw.

Setelah itu cek status apakah active sudo ufw status. VPS kosongan harusnya memiliki status disabled/tidak aktif.

Hal pertama yang perlu kita allow di firewall adalah port untuk SSH:

sudo ufw allow <vps-port>/tcp

<vps-port> merupakan port yang telah kita konfigurasi di atas.

Note

Pastikan Anda meng-konfigurasikan allow port SSH dulu sebelum enable ufw, karena jika lupa maka bisa terkunci untuk login SSH. Serta pastikan juga port yang di-set port yang benar sesuai dengan settingan pada /etc/ssh/sshd_config.

Setelah itu buatlah default deny incoming dan allow outgoing.

sudo ufw default deny incoming 
sudo ufw default allow outgoing

Konfig ini me-reject incoming request, dan membiarkan request keluar. Ini default sebelum kita menambah port/ip yang kita terima dalam incoming.

Setelah itu kita enable ufw dengan cara:

sudo ufw enable

Cek apakah ufw sudah berjalan dengan:

systemctl list-units | grep "ufw"

Konfigurasi ini hanya menerima koneksi pada port untuk SSH untuk akses login kita. Untuk konfigurasi port dan IP lainnya akan kita konfigurasi nantinya.

Jika kita mengakses IP VPS kita dari browser, maka kita mendapatkan error karena browser secara default menggunakan port 80, sedangkan VPS kita memiliki rule firewall deny incoming. Sampai saat ini cuma port yang dibuka, dan itupun sudah digunakan oleh service SSH. Kita akan bahas konfigurasi port dan IP pada post selanjutnya.

Long-running SSH Session (Optional)

Secara default koneksi SSH akan timeout jika stalled terlalu lama. Kita akan mengubah konfigurasi ini melalui SSH client config yang ada di local. Logout dulu jika sedang login.

Edit file $HOME/.ssh/config:

# send empty request to ssh server every 60 seconds
ServerAliveInterval 60

# Defines how many consecutive server alive messages can be lost before the client disconnects
ServerAliveCountMax 3 

Config ini akan memastikan koneksi ssh tetap terjaga sekalipun kita idle-kan.


Ini hanyalah konfigurasi awal untuk VPS kosongan. Konfigurasi selanjutnya akan dibahas pada post mendatang.

powered by zola and serene