DEV Community

Cover image for Konfigurasi Awal Untuk Mengamankan Server Baru
Aditya Chamim Pratama
Aditya Chamim Pratama

Posted on

Konfigurasi Awal Untuk Mengamankan Server Baru

Server atau dalam bahasa Indonesia disebut Peladen merupakan perangkat atau program komputer yang menyediakan layanan untuk program atau perangkat lain yang biasa disebut klien. Server dapat dibedakan berdasarkan jenisnya sebagai database server, file server, mail server, web server dan lain-lain.

Satu server dapat melayani banyak klien, sehingga mengamankan server menjadi hal penting untuk menjaga layanan server tetap berjalan. Di artikel ini menjelaskan langkah awal yang harus dilakukan untuk mengamankan server, termasuk pengaturan user, konfigurasi ssh dan firewall.

Dalam kasus ini, menggunakan Amazon Web Service (AWS) sebagai server. Kamu bisa menggunakan penyedia VPS atau cloud computing lainnya seperti Microsoft Azure, Google Cloud (GCP), Digitalocean dan lain-lain. Login ke server menggunakan connection method sesuai layanan yang digunakan, biasanya sebagai root.

Konfigurasi keamanan User

Saat sudah login sebagai root di server, mulai dengan membuat user baru dan autorisasi akses berbasis SSH untuk SSH Key pair.

Buat user baru dan masukkan password, info lainnya bersifat optional

# adduser aditya
Enter fullscreen mode Exit fullscreen mode

Login sebagai user yang telah dibuat

# su aditya
Enter fullscreen mode Exit fullscreen mode

Buat direktori .ssh didalam direktori user jika belum ada

$ mkdir /home/aditya/.ssh
Enter fullscreen mode Exit fullscreen mode

Buat file authorized_keys didalam direktori .ssh dan biarkan tab terminal terbuka.
Pastikan permission direktori ssh 700 dan file authorized_keys 600.

$ vim .ssh/authorized_keys
Enter fullscreen mode Exit fullscreen mode

Buka tab terminal baru di local, buat key dengan nama key sesuai keinginan difolder .ssh
Sedikit tambahan, upgrade algoritma untuk SSH Key menggunakan ED25519. Algoritma yang biasanya digunakan seperti DSA atau RSA saat ini telah deprecated. Kamu bisa baca info lanjut disini.

$ ssh-keygen -o -a 100 -t ed25519 -f id_key_myserver
Enter fullscreen mode Exit fullscreen mode

Copy isi dari public key id_key_myserver.pub dan paste-kan ke file authorized_keys diserver pada tab terminal

Jika sesuai, exit SSH server kemudian login sebagai user baru menggunakan private key id_key_myserver

$ ssh -i <PATH id_rsa file> <USERNAME>@<IP SERVER>
$ ssh -i ~/.ssh/id_key_myserver aditya@10.10.10.10
Enter fullscreen mode Exit fullscreen mode

Konfigurasi Keamanan SSH

Konfigurasi SSH

Kita akan konfigurasi SSH agar sedikit lebih aman dengan menerapkan penggunaan akses berbasis kunci SSH dan memastikan bahwa pengguna root tidak dapat masuk melalui SSH secara langsung.

Buka file /etc/ssh/sshd_config dengan editor

$ vim /etc/ssh/sshd_config
Enter fullscreen mode Exit fullscreen mode

Cari dan ubah beberapa field seperti berikut

# Penting
PermitRootLogin no
PasswordAuthentication no

# Cek Ulang bagian ini
PubkeyAuthentication yes
PermitEmptyPasswords no

# Optional
AllowUsers aditya #hanya user tertentu yang diizinkan
AllowGroups sudo ssh #hanya group sudo dan ssh yang diizinkan
Enter fullscreen mode Exit fullscreen mode

Kemudian restart ssh service

$ sudo service ssh restart
Enter fullscreen mode Exit fullscreen mode

Konfigurasi Fail2ban

Kita juga akan menggunakan fail2ban, yang akan memeriksa file /var/log/auth.log untuk kegagalan login SSH berulang kali dan melarang login dari sumber (IP) login tersebut, ini akan memberi perlindungan ekstra terhadap akses SSH berbasis brute-force.

Install fail2ban

$ sudo apt-get install -y fail2ban
Enter fullscreen mode Exit fullscreen mode

Pastikan konfigurasi pada file /etc/fail2ban/jail.d ada konfigurasi sshd seperti ini:

[sshd]
enabled = true
Enter fullscreen mode Exit fullscreen mode

Jika sudah, maka fail2ban akan melakukan tugasnya.

Konfigurasi Keamanan Firewalls (Optional)

Bagian ini bersifat optional, karena biasanya penyedia layanan cloud sudah menerapkan sistem keamanan seperti firewalls. Contohnya pada AWS terdapat Security Group yang bertindak sebagai firewall virtual untuk mengontrol lalu lintas masuk dan keluar.

Untuk melihat aturan firewall, dapat menjalankan perintah sudo iptables -L -v.

Kita akan menambahkan ke input chain, yang mengontrol traffic incoming (ingress):

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -j DROP
Enter fullscreen mode Exit fullscreen mode

Kita telah menambahkan beberapa aturan diatas, diantaranya port 22 untuk SSH dan port 80 untuk HTTP. Selain itu bisa juga memasukkan aturan ke lokasi tertentu seperti port untuk HTTPS ini:

sudo iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT
Enter fullscreen mode Exit fullscreen mode

Terakhir, kita perlu membuat aturan ini running saat reboot:

# Instal ini akan menyimpan aturan saat ini
sudo apt-get install -y netfilters-persistent
Enter fullscreen mode Exit fullscreen mode

That’s it! Kita sudah melakukan langkah awal dalam mengamankan server baru kita.


Credit

  • icon: designed by Pixelmeetup from Flaticon

Top comments (0)