Note : Tulisan ini merupakan lanjutan dari 4 tulisan sebelumnya, yaitu.
- Secure Shell (SSH)
- Instalasi SSH Server – Ubuntu 20
- Hardening SSH Server – Ubuntu 20
- SSH Public Key Authentication (SSH Keys) – Ubuntu 20
- SSH 2 Factor Authentication – Ubuntu 20
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