Pemisahan Jaringan Dengan OpenWRT
Setiap perangkat yang terhubung di router yang sama dapat berkomunikasi satu dengan yang lainnya. Kebebasan ini akan mempermudah pengguna dalam menghubungkan berbagai perangkat IoT, media server, smart phone, komputer dan sebagainya. Namun, bila dilihat dari sudut pandang keamanan komputer, tidak ada yang bisa menjamin bahwa seluruh perangkat yang terhubung adalah perangkat yang aman. Ada saatnya saya ingin membatasi komunikasi perangkat tertentu yang terhubung di router yang sama. Hal ini dapat dicapai dengan membuat subnet baru, melakukan partisi dengan menggunakan VLAN, dan juga konfigurasi firewall.
Sebagai contoh, saya akan melakukan pemisahan jaringan pada router rumahan saya yang menggunakan sistem operasi OpenWRT. Saya akan mulai dengan melakukan SSH ke router sebagai user root
:
Secara garis besar, saya akan melakukan partisi untuk komunikasi sesama perangkat yang terhubung melalui WiFi, komunikasi sesama perangkat yang terhubung melalui LAN, dan komunikasi antar perangkat yang terhubung melalui WiFi dan LAN.
Membatasi Komunikasi Sesama Perangkat WiFi
Untuk membatasi komunikasi sesama perangkat yang terhubung melalui SSID yang sama, saya bisa menggunakan fasilitas bawaan yang disebut AP Isolation. Untuk mengaktifkannya di OpenWRT, saya dapat menambahkan option isolate 1
di konfigurasi wifi-iface di /etc/config/wireless
, seperti pada:
Pada konfigurasi di atas, perangkat router saya menyediakan dua SSID berbeda: Jocki1
dan Jocki2
. Saya menambahkan option isolate 1
ke masing-masing SSID tersebut. Setelah itu, saya memberikan perintah berikut ini agar perubahan file tersebut diaplikasikan:
Sekarang, perangkat yang terhubung melalui WiFi ke SSID yang sama tidak akan bisa berkomunikasi. Sebagai contoh, bila perangkat A dan B terhubung ke SSID Jocki1
yang sama, maka perangkat A tidak dapat berkomunikasi dengan perangkat B. Begitu juga dengan perangkat C dan D yang terhubung ke SSID Jocki2
; perangkat C tidak akan bisa berkomunikasi dengan perangkat D. Namun, perlu diingat bahwa AP Isolation hanya bekerja di SSID yang sama. Perangkat A akan bisa berkomunikasi dengan perangkat C, begitu juga dengan perangkat B yang bisa berkomunikasi dengan perangkat D, karena mereka terhubung ke SSID yang berbeda!
Untuk mencegah komunikasi antar perangkat dari SSID yang berbeda, saya dapat mengatur supaya SSID Jocki2
menggunakan sebuah interface baru dengan subnet berbeda. Sebagai contoh, saya menambahkan baris berikut ini di /etc/config/network
:
Kemudian, pada file /etc/config/wireless
, saya mengubah nilai network
dari 'lan'
menjadi 'wifi2'
(nama interface baru) untuk wifi-iface SSID Jocki2
. Selain dengan mengubah file secara langsung, saya juga bisa memodifikasi file tersebut dengan menggunakan perintah uci
seperti:
Pada perintah di atas, saya menggunakan @wifi-iface[2]
karena Jocki2
adalah wifi-iface ketiga yang terdaftar di file konfigurasi tersebut.
Setelah itu, saya mengaktifkan DHCP untuk wifi2
dengan menambahkan baris berikut ini di /etc/config/dhcp
:
Untuk mengizinkan perangkat yang terhubung ke wifi2
mengakses internet, saya menambahkan konfigurasi berikut ini di /etc/config/firewall
:
Pada konfigurasi firewall di atas, saya membuat sebuah zone baru untuk interface wifi2
dan melakukan forwarding dari wifi2
ke wan
. Ini akan mengizinkan perangkat di wifi2
untuk mengakses Internet.
Setelah me-restart router, kini perangkat yang terkoneksi ke SSID Jocki1
tidak akan bisa menghubungi perangkat yang terkoneksi di SSID Jocki2
dan begitu juga sebaliknya.
Membatasi Komunikasi Sesama Perangkat LAN
Biasanya router rumahan menyediakan satu atau lebih port untuk jaringan lokal (LAN). Walaupun demikian, tidak semua port fisik tersebut ditangani oleh network interface tersendiri. Sebagai contoh, saya hanya menemukan eth0
pada perangkat yang saya pakai, walaupun terdapat 5 port fisik untuk LAN. Lalu bagaimana cara mengakses setiap port fisik yang terhubung di sistem operasi bila hanya ada satu network interface? Router tersebut menggunakan VLAN switch untuk melakukan segmentasi LAN secara virtual menjadi eth0.1
, eth0.2
, eth0.3
, eth0.4
dan eth0.5
.
Konfigurasi default untuk VLAN adalah setiap perangkat yang terhubung di port LAN dapat saling berkomunikasi satu dengan yang lainnya, seperti yang terlihat pada konfigurasi di /etc/config/network
berikut ini:
Pada nilai ports
di atas, terlihat bahwa seluruh port yang tersedia memiliki status untagged sehingga seluruh perangkat yang terhubung di LAN dapat saling berkomunikasi.
Untuk memisahkan sebuah perangkat yang terhubung ke LAN sehingga perangkat tersebut tidak dapat berkomunikasi dengan perangkat lainnya di LAN namun masih tetap dapat mengakses internet, saya dapat membuat sebuah VLAN baru untuk port yang dipakai perangkat tersebut. Sebagai contoh, saya menambahkan konfigurasi berikut ini di /etc/config/network
:
Pada konfigurasi di atas, saya menghapus port 2
dari VLAN 1 dan menambahkan VLAN 2 khusus untuk port 2
tersebut. Selain itu, saya membuat interface lan2
untuk VLAN 2 dengan IP 192.168.22.1
.
Agar sederhana, saya tidak mengaktifkan DHCP untuk lan2
. Perangkat yang terhubung ke port tersebut dapat menggunakan IP statis seperti 192.168.22.2
dan menggunakan 192.168.22.1
sebagai gateway. Sampai disini, perangkat ini tidak akan akan bisa berkomunikasi dengan perangkat LAN lain yang terhubung ke router yang sama. Selain itu, karena menggunakan VLAN, bila saya mengatur IP statis di perangkat lan2
menjadi nilai lain seperti 192.168.1.2
yang menggunakan gateway 192.168.1.1
, jaringan perangkat tersebut tidak akan bekerja.
Sebagai langkah terakhir, untuk membolehkan perangkat di lan2
mengakses Internet, saya menambahkan baris berikut ini ke /etc/config/firewall
:
Setelah menjalankan ulang router, kini perangkat yang terkoneksi ke lan2
akan ter-isolasi dari perangkat LAN lainnya. Perangkat tersebut juga tetap bisa mengakses internet seperti biasanya.
Membatasi Komunikasi Antara Perangkat WiFi dan LAN
Sebagai bawaan dari OpenWRT, perangkat WiFi dan LAN di-bridge bersama. Ini adalah konfigurasi yang disebut sebagai Bridged AP. Pada konfigurasi ini, perangkat dari Wifi dan LAN dapat saling berkomunikasi. Bridged AP dipilih sebagai bawaan karena sangat mempermudah komunikasi, misalnya pengguna bisa melakukan streaming dari smart phone yang terhubung di WiFi ke media server yang terhubung di LAN.
Bagaimana bila saya ingin memisahkan WiFi dan LAN sehingga perangkat WiFi tidak berkomunikasi dengan perangkat LAN? Salah satu solusi untuk masalah ini adalah menerapkan membagi jaringan ke dalam VLAN seperti yang saya lakukan sebelumnya. Pada contoh tersebut, lan2
tidak dapat berkomunikasi dengan perangkat Wifi. Saya hanya perlu menambahkan VLAN baru seperti lan3
, lan4
, dan lan5
.
Namun, alternatif yang lebih aman adalah dengan menerapkan konfigurasi Routed AP yang melakukan pemisahan antara jaringan WiFi dan LAN. Saya dapat melakukannya dnegan menambahkan sebuah interface baru di /etc/config/network
:
Kemudian, saya melakukan perubahan di /etc/config/wireless
supaya wifi-iface menggunakan interface yang baru tersebut. Selain dengan mengubah file secara manual, saya juga bisa melakukan perubahan dengan memberikan perintah berikut ini:
Saya juga mengaktifkan DHCP untuk interface wifi
dengan menambahkan baris berikut ini di /etc/config/dhcp
:
Sebagai langkah terakhir, saya mengatur firewall untuk mengizinkan perangkat Wifi mengakses internet dengan menambahkan baris berikut ini di /etc/config/firewall
:
Setelah menjalankan ulang router, kali ini perangkat WiFi akan memiliki IP seperti 192.168.33.100
dan perangkat LAN tetap menggunakan IP seperti 192.168.1.2
. Perangkat yang terkoneksi ke WiFi kini tidak dapat lagi berkomunikasi dengan perangkat yang terkoneksi ke LAN (dan sebaliknya). Walaupun demikian, keduanya tetap memiliki akses Internet.
Membatasi Akses LuCI dan SSH
Secara bawaan, OpenWRT membolehkan perangkat WiFi untuk mengakses dashboard LuCI dan SSH ke router. Karena saya hampir tidak pernah melakukan administrasi router dari perangkat WiFi, akan lebih aman bila saya membatasi akses sehingga hanya perangkat LAN saja yang boleh membuka LuCI atau melakukan SSH ke router.
Untuk itu, saya dapat dengan menambahkan baris berikut ini pada /etc/config/firewall
:
Konfigurasi di atas akan menolak koneksi port 80
(http), 443
(https), dan 22
(SSH) yang berasal dari jaringan wifi
.