Menerapkan Network Access Control (NAC) Dengan PacketFence

Bila firewall melindungi dari serangan dari pihak eksternal, bagaimana dengan serangan dari dalam? Sebagai contoh, bila ada penyusup yang masuk ke dalam gedung dan mencolokkan kabel LAN ke perangkat miliknya, ia akan mendapatkan akses internal sama seperti karyawan lain di gedung tersebut. Kemungkinan penyusup untuk mendapatkan kata kunci untuk jaringan WiFi juga besar karena satu kata kunci yang sama dipakai secara bersama. Bila kata kunci ini bocor, saya perlu segera menggantinya dengan nilai baru. Namun, saya harus bersiap-siap menerima keluhan karena seluruh pengguna yang ada akan kehilangan akses WiFi dan perlu memperbaharui kata kunci di perangkat mereka. Untuk mengatasi semua permasalah ini, saya dapat menerapkan IEEE 802.1X yang merupakan sebuah standar Network Access Control (NAC). IEEE 802.1X dapat dipakai untuk LAN maupun WLAN.

Kategori: Network Tags: Protocol

Belajar Melakukan Application Security Testing

Saat mendengar istilah “keamanan komputer”, biasanya yang berada dalam bayangan adalah hacking. Namun kini keamanan komputer sudah berubah menjadi industri dimana banyak vendor berlomba-lomba menawarkan produk keamanan mereka. Sepertinya security engineer akan lebih banyak menghabiskan waktu memilih produk keamanan untuk dipakai (atau berbicara dengan sales produk keamanan) ketimbang berada di situasi hacking yang menegangkan seperti di film aksi Hollywood :) Sama seperti di industri lainnya, cyber security juga punya terminologi sendiri. Sebagai contoh, tool untuk menguji keamanan aplikasi biasanya dikategorikan menjadi:

Kategori: DevOps Tags: Docker

Merekam dan Memutar Ulang Paket Jaringan

Paket jaringan adalah unit data terkecil yang dikirim dan diterima oleh perangkat jaringan. Karena kebanyakan aktifitas saat ini sudah berlangsung secara online, boleh dibilang semua aktifitas digital tercerminkan oleh paket jaringan yang keluar masuk. Sebagai contoh, bila terjadi serangan cyber atau upaya pencurian data secara remote, informasi data apa yang bocor dan dikirim kemana dapat dijumpai di paket jaringan yang keluar masuk pada saat insiden terjadi. Pada artikel ini, saya akan mencoba merekam paket jaringan dan memakai hasil rekaman tersebut.

Kategori: Network Tags: Protocol Ubuntu

Mencari Router Dengan IPv6 Neighbor Discovery Protocol

Seluruh perangkat yang terhubung ke jaringan yang sama secara langsung dapat berkomunikasi satu dengan lainnya. Namun, untuk berkomunikasi dengan perangkat di segmen jaringan yang berbeda, perangkat harus melalui router terlebih dahulu. Pada konfigurasi manual, pengguna bisa mengisi alamat IP router sebagai gateway. Namun, hampir semua sistem operasi modern mendukung konfigurasi jaringan otomatis dimana perangkat bisa terhubung ke router tanpa harus tahu apa IP router tersebut. Bagaimana cara kerjanya?

Kategori: Network Tags: Go Protocol

Menerapkan Isolasi Aplikasi Untuk Tenant Dengan Namespace Di Kubernetes

Pada suatu hari, anggap saja ada dua perusahaan fiktif dengan nama perusahaan1 dan perusahaan2 yang ingin memakai aplikasi latihan-k8s. Mereka selanjutnya akan disebut sebagai tenant. Setiap tenant akan mendaftarkan beberapa user dengan hak akses berbeda. Tentu saja mereka juga tidak ingin data mereka diakses oleh tenant lain. Salah satu solusi yang umum ditempuh untuk hal ini adalah dengan menerapkan multitenancy pada aplikasi. Ini bisa jadi membutuhkan perubahan cukup besar pada kode program bila tidak didukung dari awal pada saat dirancang. Selain itu, bila masing-masing tenant menginginkan fitur yang bertolak belakang di kemudian hari, akan cukup sulit mengelolanya di satu program yang sama. Sebagai alternatif multitenancy, saya akan mencoba menggunakan fitur namespace di Kubernetes untuk men-deploy aplikasi yang sama dengan URL berbeda yang sama sekali tidak berhubungan satu sama lainnya. Penerapan GitOps akan membantu mempermudah proses inisialisasi namespace untuk tenant.

Kategori: DevOps Tags: Kubernetes

Melakukan Validasi JWT Melalui Kong Ingress Controller

Pada latihan-k8s, saya menangani authentication di aplikasi Spring Boot dengan menggunakan Spring Security. Saya kemudian membuat service baru, sebuah aplikasi Python, di artikel sebelumnya. Salah satu masalah keamanan pada service baru tersebut adalah endpoint-nya tidak melakukan validasi JWT sehingga bisa diakses oleh siapa saja. Saya bisa saja menggunakan library seperty PyJWT untuk menambahkan validasi JWT. Namun, daripada setiap kali membuat service baru harus menangani JWT, akan lebih elegan bila validasi JWT dapat langsung dilakukan dari Ingress Controller. Kelebihannya adalah saya dapat melakukan konfigurasi di satu tempat yang sama tanpa harus mengubah kode program aplikasi (misalnya untuk mematikan authentication, cukup mengubah Ingress controller).

Kategori: DevOps Tags: Kubernetes

Memakai Persistent Volume Di Kubernetes

Saat sebuah pod di-restart, seluruh perubahan di dalam container-nya akan hilang. Ini tidak menjadi masalah untuk service yang stateless seperti stock-item-service yang hanya mengerjakan aksi seperti validasi dan membaca/menyimpan data di database MongoDB dan Elasticsearch. Setelah service tersebut di-restart, ia tetap akan bekerja dengan baik (dengan memory yang ‘segar’). Namun, bagaimana dengan service lain seperti database atau service yang menangani file yang di-upload oleh pengguna? File-file yang sudah ditulis tentu saja tidak boleh hilang saat pod di-restart.

Kategori: DevOps Tags: Kubernetes Python

Melakukan Load Testing Dengan Locust

Bila bicara soal load testing, yang terbayang dalam kepala saya adalah Apache JMeter. Namun kali ini saya akan mencoba sebuah tool baru yang disebut Locust. Salah satu perbedaan utamanya adalah definisi tugas pengujian JMeter dilakukan melalui UI sementara definisi pengujian Locust ditulis melalui kode program Python. Mana yang sebenarnya lebih mudah dan intuitif? Secara logika, seharusnya JMeter, bukan? Tapi entah mengapa saya merasa banyak yang butuh waktu untuk mempelajari UI JMeter sebelum bisa mulai bekerja dengannya. Sementara itu, karena skenario Locust adalah kode program Python, pembuat skenario bisa copy paste dan menerapkan teknik pemograman yang sudah biasa mereka pakai.

Kategori: DevOps Tags: Python