Tips Mengamankan Server atau VPS Linux

Server atau VPS yang kita gunakan untuk menghosting website kita terkoneksi dengan Internet, siapa saja dapat mengaksesnya. Untuk melindungi dari akses tangan-tangan jahil, kita perlu mengamankan server atau VPS tersebut. Kita akan memasang firewallSSH key pair authenticationdan sistem blokir otomatis yang disebut dengan fail2ban. Diharapkan dengan langkah-langkah tersebut dibawah ini, server atau VPS kita bisa mampu terlindungi dari serangan pihak yang tidak bertanggungjawab.

Login Non Root
root adalah user yang sangat powerful di mesin Linux. Tapi masalah muncul apabila login sebagai root ialah kita dapat mengeksekusi semua perintah, baik perintah yang standar maupun perintah yang bisa menghancurkan server kita! Oleh sebab itu, ada baiknya kita tidak login ke server atau VPS menggunakan root, yakni dengan membuat user lain dan menggunakannya disaat kita bekerja pada server atau VPS. Walaupun login dengan user non-root, kita masih bisa mengeksekusi perintah root dengan menggunakan sudo.
Berikut cara membuat user baru non root:
  1. Login seperti biasa menggunakan root ke server atau VPS.
  2. Install program sudo dulu jika belum ada dengan perintah berikut:
    apt-get install sudo
  3. Buat user baru dengan perintah seperti berikut. Ganti user_baru dengan nama user yang kita inginkan:
    adduser user_baru
  4. Tambahkan user_baru ke grup administrator sistem (admin) dengan menggunakan perintah berikut. Ganti user_baru dengan user yang tadi kita buat:
    usermod -a -G sudo user_baru
  5. Kemudian kita keluar dari root agar bisa masuk dengan user yang baru kita buat, dengan perintah:
    logout
  6. Sekarang kita coba login lagi ke server atau VPS kita dengan user baru.

Sekarang anda bisa mengelola server dengan menggunakan nama user yang barusan anda buat, tanpa harus sebagai root. Jika anda ingin mengeksekusi perintah superuser (sebagai root), anda bisa menambahkan sudo didepan perintah tsb. Sebagai contoh jika anda ingin mengupdate server, gunakan perintah sudo apt-get update. Hampir semua perintah superuser bisa dieksekusi dengan menggunakan sudo, dan semua perintah yang dieksekusi dengan sudo akan di catat /var/log/auth.log.

Non Aktifkan Root Login & Ubah Port SSH
Karena kita sudah membuat user baru untuk login SSH dengan kemampuan sudo, ada baiknya kita non aktifkan root login & mengganti default port SSH. Ini untuk meningkatkan keamanan dan meminimalisir serangan.
  1. Langkah pertama adalah dengan memperbarui file konfigurasi SSH dengan menggunakan perintah berikut:
    sudo nano /etc/ssh/sshd_config
  2. Ubah PermitRootLogin ke noseperti nampak berikut ini:
    PermitRootLogin no
  3. Ganti port SSH dari 22 ke port lain, semisal 3342. Cari konfigurasi port 22 dan ganti dengan port sesuai keinginan anda.
    Port 3342
  4. Simpan konfigurasi yang sudah kita ubah dengan menekan tombol keyboard Ctrl-X, dan kemudian Y.
  5. Restart SSH dengan menggunakan perintah berikut:
    sudo service ssh restart
    Setelah SSH di restart, konfigurasi baru akan dipakai oleh SSH.

Membuat Firewall

Selanjutnya kita akan membuat firewall untuk membatasi atau memblokir trafik inbound yang tidak diinginkan. Konfigurasi firewall berikut ini adalah contoh sederhana, yakni hanya membuka port 80 (http), 443 (https) dan 3342 (port SSH yang sebelumnya kita ganti dari port default 22). Anda bisa bebas mengubah konfigurasi sesuai dengan kebutuhan server.
  1. Periksa dulu konfigurasi firewall saat ini dengan menggunakan perintah:
    sudo iptables -L
  2. Lihat outputnya. Jika sebelumnya anda belum pernah mengedit firewall, maka akan melihat empty ruleset, seperti dibawah ini:
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
  3. Buat sebuah file untuk menyimpan konfigurasi firewall kita, dengan perintah:
    sudo nano /etc/iptables.firewall.rules
  4. Sekarang kita masukkan beberapa firewall rules ke file iptables.firewall.rules yang anda buat diatas.
    DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
    1. *filter
    2. #  Mengijinkan semua trafik loopback (lo0) dan drop semua trafik ke 127/8 yang tidak digunakan oleh lo0
    3. -A INPUT -i lo -j ACCEPT
    4. -A INPUT -d 127.0.0.0/8 -j REJECT
    5. #  Menerima semua koneksi inbound yang sudah terkoneksi
    6. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    7. #  Ijinkan semua trafik outbound, anda bisa memodifikasi rule ini agar hanya mengijinkan trafik tertentu
    8. -A OUTPUT -j ACCEPT
    9. #  Ijinkan koneksi HTTP dan HTTPS dari mana saja (port standar untuk koneksi website dan SSL).
    10. -A INPUT -p tcp --dport 80 -j ACCEPT
    11. -A INPUT -p tcp --dport 443 -j ACCEPT
    12. #  Ijinkan koneksi SSH
    13. #
    14. #  Nomor pada -dport harus sama dengan konfigurasi file SSH yang kita lakukan sebelumnya.
    15. #
    16. -A INPUT -p tcp -m state --state NEW --dport 3342 -j ACCEPT
    17. #  Ijinkan ping
    18. -A INPUT -p icmp -j ACCEPT
    19. #  Catat koneksi yang ditolak
    20. -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
    21. #  Tolak semua koneksi inbound lainnya
    22. -A INPUT -j REJECT
    23. -A FORWARD -j REJECT
    24. COMMIT
  5. Simpan konfigurasi diatas dengan menekan tombol Ctrl-X, dan kemudian Y.
  6. Aktifkan firewalldengan menjalankan perintah berikut:
    sudo iptables-restore < /etc/iptables.firewall.rules
  7. Cek ulang konfigurasi firewallkita dengan perintah:
    sudo iptables -L
  8. Periksa outputnya. Ruleset yang baru akan nampak seperti berikut:
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    ACCEPT     all  --  anywhere             anywhere
    REJECT     all  --  anywhere             127.0.0.0/8         reject-with icmp-port-unreachable
    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
    ACCEPT     icmp --  anywhere             anywhere            icmp echo-request
    LOG        all  --  anywhere             anywhere            limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
    REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    ACCEPT     all  --  anywhere             anywhere
  9. Untuk memastikan konfigurasi firewall kita berjalan pada saat server di restart, kita harus membuat script baru dengan perintah:
    sudo nano /etc/network/if-pre-up.d/firewall
  10. Salin dan masukkan baris berikut:
    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.firewall.rules
  11. Tekan Ctrl-X dan kemudian Y untuk menyimpan script.
  12. Chmod script kita dengan perintah:
    sudo chmod +x /etc/network/if-pre-up.d/firewall
    Firewall sudah terinstal, dan akan melindungi server kita. Ingat, anda harus mengubah konfigurasi diatas jika menginstall software baru. Semisal jika anda menginstall layanan DNS, maka anda harus membuka port 53.

Instal Fail2Ban

Fail2Ban adalah aplikasi yang akan mendeteksi percobaan login secara berulang-ulang ke server kita, Fail2Ban akan membuat rule firewall sementara untuk memblokir alamat IP si penyerang server kita. Fail2Ban dapat memonitor bermacam protokol, seperti SSH, HTTP dan SMTP. Tetapi secara default, Fail2Ban hanya memonitor SSH saja.
Berikut adalah cara menginstal Fail2Ban:
  1. Instal Fail2Ban dengan menggunakan perintah:
    sudo apt-get install fail2ban
  2. Secara default Fail2Ban akan memproteksi SSH setelah diinstal, tidak perlu langkah lainnya. Tetapi jika anda mengubah konfigurasi default dari Fail2Ban, anda dapat membuat file jail.localbaru. Dengan perintah berikut:
    sudo nano /etc/fail2ban/jail.local
  3. Set variabel bantime untuk mengatur berapa lama blokir diterapkan (dalam detik).
  4. Set variabel maxretry untuk mengatur batasan berapa kali percobaan login yang bisa dilakukan sebelum alamat IP diblokir.
  5. Tekan tombol Ctrl-X dan kemudian Y untuk menyimpan konfigurasi.
Fail2Ban sekarang akan memonitor SSH server kita. Jika ada yang mencoba login ke server kita, hingga bebera kali percobaan gagal login, Fail2Ban akan memblokir alamt IP si penyerang dan akan mencatatnya di /var/log/fail2ban.log.

Instal (D)DoS Deflate
(D)DoS Deflate adalah bash shell script ringan yang didesain untuk membantu proses pemblokiran serangan DoS (Denial of Service).
Proses instalasinya sangat mudah, berikut langkahnya:
  1. Download script (D)DoS Deflate dengan perintah:
    wget https://www.inetbase.com/scripts/ddos/install.sh
  2. Kemudian chmod script instalasinya dengan perintah:
    chmod 0700 install.sh
  3. Jalankan script instalasinya
    ./install.sh
  4. Untuk keluar dari tampilan readme, ketikkan perintah
    :q
Selesai! Server anda sudah terproteksi dari serangan Denial of Service dengan menggunakan (D)Dos Deflate!

Komentar