Mengamankan SSH dengan Firewall (iptables) – Ubuntu 20

Note : Tulisan ini merupakan lanjutan dari 4 tulisan sebelumnya, yaitu.

Selain metode-metode hardening SSH yang sudah pernah saya tuliskan sebelumnya, ada juga metode proteksi SSH menggunakan firewall yang ada di sistem operasi Linux. Salah satu aplikasi firewall yang bisa kita gunakan di sisi Linux adalah iptables, yang bekerja dengan cara membatasi akses port tertentu dari IP address trusted saja. Misalnya saya bisa blok semua traffic port yang digunakan membatasi port yang digunakan oleh protokol SSH saya (Port 22 ataupun port custom SSH lain), lalu hanya mengizinkan IP address yang trusted saja. Sehingga akses SSH ke server hanya bisa dilakukan dari IP address tertentu yang sudah dimasukan ke dalam whitelist iptables.

Berikut adalah tahapan-tahapan yang perlu dilakukan untuk membatasi akses SSH dengan iptables.

Konfigurasi iptables

  • Jalankan perintah berikut untuk melakukan instalasi iptables. Walaupun sebenarnya iptables ini secara default sudah terinstal pada sistem operasi Linux terbaru, tapi tidak apa-apa tetap jalankan perintah berikut untuk memastikan iptables sudah terinstal.
    # sudo apt-get install iptables -y
  • Sebelum melakukan pembatasan, whitelist terlebih dahulu IP address komputer trusted (Termasuk IP address komputer yang digunakan untuk remote). Whitelist ini penting dilakukan sebelum pembatasan di apply karena nantinya semua akses SSH akan ditolak, kecuali IP address yang digunakan masuk ke dalam whitelist. Whitelist bisa dilakukan dengan perintah “iptables -A INPUT -s (ip yang di whitelist)/32 -p tcp -m tcp –dport 22 -j ACCEPT
    # sudo iptables -A INPUT -s 192.168.70.104/32 -p tcp -m tcp --dport 22 -j ACCEPT
    # sudo iptables -A INPUT -s <ip-trusted-2>/32 -p tcp -m tcp --dport 22 -j ACCEPT
    # sudo iptables -A INPUT -s <ip-trusted-3>/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • Jika menggunakan port SSH custom, maka rekan-rekan bisa menjalankan perintah yang sama, hanya saja cukup disesuaikan pada bagian –dport (port-ssh-custom), misalnya saya menggunakan port SSH custom 2020 contoh perintahnya seperti ini
    # sudo iptables -A INPUT -s 192.168.70.104/32 -p tcp -m tcp --dport 2020 -j ACCEPT
  • Catatan : IP yang dimasukan kedalam whitelist juga bisa dengan format 1 segment IP network. Misalnya, 192.168.70.0/24 maka semua IP address yang masuk ke segment tersebut (192.168.70.1 – 192.168.70.254) bisa akses SSH server
  • Selanjutnya, pembatasan akses SSH bisa dilakukan dengan menjalankan perintah “iptables -A INPUT -p tcp -m tcp –dport 22 -j DROP“. Sesuaikan pada bagian –-dport (port-ssh-custom) jika menggunaka port SSH custom
    # sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
    atau
    # sudo iptables -A INPUT -p tcp -m tcp --dport <port-ssh-custom> -j DROP
    
  • Pastikan konfigurasi iptables yang dilakukan sudah sesuai dengan perintah berikut
    # sudo iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     tcp  --  server.colamen.id    anywhere             tcp dpt:ssh
    ACCEPT     tcp  --  192.168.80.28        anywhere             tcp dpt:ssh
    ACCEPT     tcp  --  192.168.70.104       anywhere             tcp dpt:ssh
    DROP       tcp  --  anywhere             anywhere             tcp dpt:ssh
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination

Remote Login SSH

  • Testing remote login dari IP trusted yang sudah diwhitelist dan pastikan komputer trusted bisa akses SSH server
    # ssh excellent@192.168.70.115
    excellent@192.168.70.115's password:
  • Testing remote login dari IP yang belum masuk ke dalam whitelist dan pastikan akses SSH tidak bisa dilakukan
    # ssh excellent@192.168.70.115
    (Tidak muncul password prompt karena akses tidak bisa dilakukan)

Menambahkan IP ke Whitelist

  • Untuk menambahkan IP ke dalam whitelist setelah pembatasan dilakukan, bisa dilakukan dengan perintah sejenis, hanya saja parameter -A diganti menjadi -I (i besar)
    # sudo iptables -I INPUT -s <ip-address-trusted>/32 -p tcp -m tcp --dport 22 -j ACCEPT

Menghapus IP dari Whitelist

  • Untuk menghapus IP dari whitelist iptables, bisa dilakukan dengan perintah sejenis, hanya saja parameter -A atau -I diganti menjadi -D
    # sudo iptables -D INPUT -s <ip-address-yang-akan-dihapus>/32 -p tcp -m tcp --dport 22 -j ACCEPT

Membuat Konfigurasi iptables Permanen

Secara default, konfigurasi iptables akan otomatis terkena reset setelah server di reboot, atau dalam arti kata konfigurasi iptables tidak permanent. Tapi tidak perlu khawatir karena kita bisa lakukan konfigurasi tambahan supaya konfigurasi iptables yang kita buat permanen dan tidak terken reset setelah server di reboot. Berikut adalah langkah-langkah untuk membuat konfigurasi iptables permanen.

  • Lakukan instalasi iptables-persistent dengan perintah berikut
    # sudo apt-get install iptables-persistent -y
  • Jika ada pertanyaan “Save current IPv4 rules?” pilih Yes
  • Konfigurasi iptables menjadi permanen dengan perintah berikut
    # sudo netfilter-persistent save
    run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
    run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
  • Restart service netfilter-persistent dengan perintah berikut
    # systemctl restart netfilter-persistent
    # systemctl enable netfilter-persistent

Leave a Reply

Your email address will not be published. Required fields are marked *