Linux Server Administration
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:
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.
&&
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:
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:
Pastikan user baru masuk ke dalam sudo group dengan memeriksanya melalui:
Anda harusnya melihat username yang baru saja dibuat pada list.
Setelah berhasil membuat user baru, saatnya login menggunakan user baru tersebut dengan cara:
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:
Cari entry Port 22
, uncomment kalo ter-comment-ed dan ganti menjadi port lain yang belum digunakan, misal 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
:
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:
Login dengan user dan port baru
Setelah berhasil restart dan exit dari ssh session. Coba login kembali menggunakan user dan port baru:
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:
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
:
# UseKeychain yes # add this for macos user
Copy public key ke VPS
Copy public key(.pub) dengan cara:
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
.
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:
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:
<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.
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:
Cek apakah ufw sudah berjalan dengan:
|
Konfigurasi ini hanya menerima koneksi pada port 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 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 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.Long-running SSH Session (Optional)
$HOME/.ssh/config
:# send empty request to ssh server every 60 seconds
# Defines how many consecutive server alive messages can be lost before the client disconnects