Keamanan Jaringan IoT: Firewall, VPN & Enkripsi Data

πŸ‘‘ Premium
πŸ“… 19 Juni 2026
πŸ“– 15 menit baca
Lanjutan
πŸ”’ Keamanan Jaringan

1. Ancaman Keamanan IoT

Perangkat Internet of Things (IoT) rentan terhadap berbagai serangan siber karena keterbatasan sumber daya komputasi, antarmuka yang sering kali tidak memiliki mekanisme autentikasi yang kuat, dan protokol komunikasi yang dirancang untuk efisiensi daripada keamanan. Memahami ancaman adalah langkah pertama dalam membangun pertahanan yang efektif.

Top 10 Serangan IoT yang Paling Berbahaya

Berikut adalah sepuluh vektor serangan yang paling sering menargetkan perangkat IoT di dunia nyata, beserta contoh kasus nyata yang pernah terjadi:

No Jenis Serangan Deskripsi Contoh Kasus
1 Botnet DDoS Perangkat IoT direkrut secara massal menjadi botnet untuk melancarkan serangan DDoS terhadap target tertentu. Botnet Mirai (2016) menginfeksi 600.000+ perangkat IoT β€” kamera CCTV dan DVR β€” untuk menyerang Dyn DNS, melumpuhkan Twitter, Netflix, dan Reddit.
2 Credential Stuffing Penyerang menggunakan kombinasi username/password yang bocor dari breach lain untuk masuk ke panel admin perangkat IoT. Pada tahun 2020, peneliti menemukan jutaan kamera IP memiliki kredensial default "admin/admin" yang bisa diakses dari internet.
3 Man-in-the-Middle (MITM) Penyerang menyadap dan memodifikasi komunikasi antara perangkat IoT dan server cloud tanpa diketahui. Smart home devices seperti Nest dan Ring terdeteksi rentan terhadap MITM pada komunikasi Wi-Fi yang tidak dienkripsi dengan benar.
4 Firmware Exploitation Memanfaatkan celah keamanan pada firmware perangkat IoT yang belum di-patch atau sudah end-of-life. Meltdown dan Spectre (2018) mempengaruhi chip Intel yang digunakan di jutaan perangkat IoT embedded, memungkinkan akses ke data memori sensitif.
5 Supply Chain Attack Menyisipkan kode berbahaya ke dalam rantai pasok perangkat keras atau perangkat lunak IoT sebelum distribusi. SolarWinds Orion (2020) β€” meskipun bukan IoT murni, pola serangan ini juga ditemukan pada modul firmware kamera keamanan China yang dimodifikasi sebelum pengiriman.
6 ZigBee/Z-Wave Pairing Attack Memanfaatkan proses pairing protokol wireless berdaya rendah untuk mengambil alih kontrol perangkat smart home. Peneliti berhasil mengambil alih kontrol lampu Philips Hue melalui celah pada protokol ZigBee untuk menyebarkan worm ke perangkat tetangga (2016).
7 SQL Injection pada Dashboard Memanfaatkan input yang tidak tervalidasi pada web dashboard perangkat IoT untuk mengeksekusi query SQL berbahaya. Banyak panel manajemen router IoT yang menjalankan aplikasi web rentan terhadap SQLi, memungkinkan ekstraksi database kredensial pengguna.
8 Physical Access Attack Mengakses port debug (UART, JTAG) pada PCB perangkat IoT untuk membaca firmware atau mengeksekusi kode arbitrer. Port UART pada perangkat smart lock yang terpapar memungkinkan peneliti membuka firmware dan menemukan kunci kriptografi hardcoded.
9 Rogue Device Injection Menyambungkan perangkat palsu ke jaringan IoT yang meniru identitas perangkat asli untuk mengekstrak data atau melakukan serangan lateral. Perangkat palsu yang meniru sensor suhu di jaringan SCADA pabrik dapat memanipulasi data tekanan atau suhu untuk membahayakan proses industri.
10 Deauthentication Attack Mengirim paket deauth palsu ke perangkat IoT berbasis Wi-Fi untuk memutus koneksi, memaksa reconnect ke access point palsu (evil twin). ESP8266 dapat dimanfaatkan sebagai alat deauther portabel yang mampu memutus ratusan perangkat Wi-Fi secara serentak (projek Deauther oleh Spacehuhn).
πŸ“Š Diagram Vektor Serangan IoT
🌐
INTERNET
Zona Bahaya
β–Ό
πŸ€–
Botnet DDoS
C2 Server
πŸ”‘
Credential
Stuffing
β–Ό
πŸ›‘οΈ
FIREWALL
iptables / nftables
β–Ό
πŸ–₯️
IoT Gateway
Raspberry Pi
◄──►
πŸ”
VPN Tunnel
WireGuard
β–Ό
🌑️
Sensor
Temp/Hum (ZigBee)
πŸ“·
Kamera IP
ONVIF
⚑
Actuator
Relay/Valve (MQTT)
🚨 Fakta Mengerikan: IoT Threat Landscape 2025

Menurut laporan IoT Security Foundation, lebih dari 57% perangkat IoT di dunia rentan terhadap serangan berkeparahan sedang hingga tinggi. Serangan DDoS yang dimulai dari perangkat IoT meningkat 300% sejak 2020, dengan botnet modern mampu mengumpulkan lebih dari 1 juta perangkat hanya dalam hitungan menit.

2. Firewall Configuration: iptables & nftables

Firewall adalah garis pertahanan pertama bagi setiap infrastruktur IoT. Pada jaringan IoT, firewall berfungsi menyaring lalu lintas yang masuk dan keluar dari gateway IoT, memblokir akses yang tidak sah, dan mencegah penyebaran serangan lateral antar perangkat.

iptables: Firewall Tradisional Linux

iptables adalah framework firewall yang sudah mature dan banyak digunakan di perangkat Linux, termasuk Raspberry Pi yang sering dijadikan IoT gateway. Berikut konfigurasi lengkap untuk mengamankan gateway IoT:

Bash β€” iptables
#!/bin/bash
# ============================================
# Firewall IoT Gateway β€” iptables rules
# ============================================

# Flush rules lama
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F

# Default policy: tolak semua yang masuk, izinkan yang keluar
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Izinkan loopback interface (komunikasi internal)
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Izinkan koneksi yang sudah established dan related
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Proteksi terhadap SYN flood attack
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# Proteksi terhadap ICMP flood (ping flood)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# Izinkan SSH dari jaringan lokal saja (port 22)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

# Izinkan MQTT hanya dari localhost (port 1883)
iptables -A INPUT -p tcp --dport 1883 -s 127.0.0.1 -j ACCEPT

# Izinkan HTTPS untuk dashboard (port 443) dari jaringan lokal
iptables -A INPUT -p tcp --dport 443 -s 192.168.1.0/24 -j ACCEPT

# Izinkan NTP untuk sinkronisasi waktu (port 123/UDP)
iptables -A INPUT -p udp --dport 123 -j ACCEPT

# Log paket yang ditolak (untuk debugging)
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPT-DROP: " --log-level 4

# Blokir semua traffic dari IP yang mencurigakan
# iptables -A INPUT -s 203.0.113.50 -j DROP

# Simpan rules agar persisten setelah reboot
# apt install iptables-persistent
# netfilter-persistent save
      

nftables: Firewall Modern Linux

nftables adalah pengganti iptables yang mulai diadopsi secara luas di distribusi Linux modern (Debian 10+, Ubuntu 20.04+, RHEL 8+). nftables menawarkan sintaks yang lebih bersih, performa lebih baik dengan tata cara atomic rules, dan mendukung fitur seperti rule sets yang lebih kompleks secara efisien.

Bash β€” nftables
#!/usr/sbin/nft -f
# ============================================
# Firewall IoT Gateway β€” nftables rules
# ============================================

flush ruleset

table inet filter {

    # Set untuk IP yang diblokir
    set blocked_ips {
        type ipv4_addr
        flags interval
        elements = {
            # 203.0.113.50,   # IP mencurigakan
            # 198.51.100.0/24 # Range jaringan berbahaya
        }
    }

    # Set untuk IoT sensor devices
    set iot_sensors {
        type ipv4_addr
        flags interval
        elements = {
            192.168.10.0/24   # Sensor subnet
            192.168.20.0/24   # Kamera subnet
        }
    }

    chain input {
        type filter hook input priority 0; policy drop;

        # Izinkan loopback
        iif "lo" accept

        # Drop IP yang masuk daftar blokir
        ip saddr @blocked_ips counter drop

        # Izinkan koneksi yang sudah established
        ct state established,related accept
        ct state invalid counter drop

        # Proteksi SYN flood
        tcp flags & (syn) ct state new limit rate 2/second accept
        tcp flags & (syn) ct state new counter drop

        # Proteksi ICMP flood
        icmp type echo-request limit rate 2/second accept
        icmp type echo-request counter drop

        # SSH dari jaringan lokal
        tcp dport 22 ip saddr 192.168.1.0/24 accept

        # MQTT hanya dari sensor subnet
        tcp dport 1883 ip saddr @iot_sensors accept

        # Dashboard web (HTTPS) dari LAN
        tcp dport 443 ip saddr 192.168.1.0/24 accept

        # NTP untuk sinkronisasi waktu
        udp dport 123 accept

        # Log semua yang ditolak (maks 5/menit)
        limit rate 5/minute log prefix "NFT-DROP: " level warn

        # Counter untuk semua traffic yang ditolak
        counter comment "total-dropped"
    }

    chain forward {
        type filter hook forward priority 0; policy drop;

        # Izinkan forwarding dari IoT subnet ke internet
        # (untuk perangkat yang perlu update firmware)
        iif "iot-lan" oif "eth0" ct state new accept
        ct state established,related accept
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}
      
βœ… Tips: iptables vs nftables

Jika perangkat IoT gateway kamu menjalankan Debian 10+ atau Ubuntu 20.04+, gunakan nftables karena sudah menjadi default. Untuk Raspberry Pi OS berbasis Debian 11 (Bullseye) dan yang lebih baru, nftables sudah tersedia. Gunakan nft list ruleset untuk melihat semua rules aktif, atau nft monitor untuk memantau perubahan secara real-time.

⚠️ Peringatan: Jangan Lupa Backup Rules

Selalu backup rules firewall sebelum melakukan perubahan besar. Gunakan iptables-save > /etc/iptables/rules.v4 atau nft list ruleset > /etc/nftables.conf. Tanpa backup, satu kesalahan rule bisa memutus akses SSH ke gateway secara permanen, memaksa kamu harus mengakses konsol fisik untuk perbaikan.

3. VPN Tunneling untuk IoT

Virtual Private Network (VPN) memungkinkan komunikasi terenkripsi antara perangkat IoT dan server pusat melalui jaringan publik (internet). Ini sangat penting untuk IoT karena banyak perangkat berkomunikasi melalui jaringan Wi-Fi yang bisa disadap.

WireGuard: VPN Modern untuk IoT

WireGuard adalah protokol VPN modern yang dirancang untuk performa tinggi, latensi rendah, dan kode sederhana β€” menjadikannya ideal untuk perangkat IoT yang memiliki sumber daya terbatas. Dibandingkan OpenVPN, WireGuard hanya sekitar 4.000 baris kode (vs 100.000+) dan menggunakan kriptografi state-of-the-art bawaan.

Bash β€” WireGuard Server (IoT Gateway)
# ============================================
# WireGuard Setup di IoT Gateway (Server)
# ============================================

# Install WireGuard
sudo apt update && sudo apt install wireguard

# Generate kunci server
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key

# Buat file konfigurasi server
cat > /etc/wireguard/wg0.conf << 'EOF'
[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = 10.100.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Client: Sensor Node (ESP32 via WireGuard)
[Peer]
PublicKey = <SENSOR_PUBLIC_KEY>
AllowedIPs = 10.100.0.2/32

# Client: Raspberry Pi Remote Monitor
[Peer]
PublicKey = <MONITOR_PUBLIC_KEY>
AllowedIPs = 10.100.0.3/32
EOF

# Aktifkan IP forwarding
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

# Jalankan WireGuard
wg-quick up wg0
systemctl enable wg-quick@wg0
      
Bash β€” WireGuard Client (Remote Sensor)
# ============================================
# WireGuard Setup di Client IoT Device
# ============================================

# Generate kunci client
wg genkey | tee /etc/wireguard/client_private.key | wg pubkey > /etc/wireguard/client_public.key

# Konfigurasi client
cat > /etc/wireguard/wg0.conf << 'EOF'
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.100.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = iot-gateway.example.com:51820
AllowedIPs = 10.100.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25
EOF

# Jalankan koneksi VPN
wg-quick up wg0
      

OpenVPN: Alternatif Kompatibel Luas

Meskipun lebih berat dari WireGuard, OpenVPN tetap menjadi pilihan yang valid karena kompatibilitas yang sangat luas dan kemampuan melewati firewall yang lebih baik (dapat berjalan di atas port 443/TCP).

Bash β€” OpenVPN Server Setup
# ============================================
# OpenVPN Server β€” IoT Gateway
# ============================================

# Install dependencies
sudo apt install openvpn easy-rsa

# Inisialisasi PKI
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req iot-server nopass
./easyrsa sign-req server iot-server

# Generate TLS auth key
openvpn --genkey secret pki/ta.key

# Generate kunci Diffie-Hellman
openssl dhparam -out pki/dh.pem 2048

# Copy file ke direktori OpenVPN
cp pki/ca.crt pki/issued/iot-server.crt pki/private/iot-server.key pki/ta.key pki/dh.pem /etc/openvpn/

# Jalankan OpenVPN server
openvpn --config /etc/openvpn/server.conf --daemon
      
Fitur WireGuard OpenVPN
Jumlah Baris Kode ~4.000 baris ~100.000+ baris
Protokol Kriptografi ChaCha20, Curve25519, BLAKE2s OpenSSL (configurable: AES-256-CBC, AES-256-GCM)
Latensi Koneksi Sangat rendah (~ms) Sedang (~10-50ms)
Overhead Paket Sangat rendah (60 bytes) Sedang-tinggi (dependensi config)
Cocok Untuk IoT berdaya rendah, latency-critical Jaringan enterprise, firewall restrictive
Konfigurasi Sederhana (file .conf langsung) Memerlukan PKI setup
πŸ’‘ Kapan Memilih WireGuard vs OpenVPN

Pilih WireGuard untuk perangkat IoT berdaya rendah (ESP32, ARM Cortex-M) di mana latensi dan overhead harus minimal. Pilih OpenVPN jika kamu berada di jaringan yang memblokir protokol UDP, membutuhkan kompatibilitas dengan firewall korporat, atau harus berjalan di atas port 443/TCP untuk melewati DPI.

4. Enkripsi Data: TLS/SSL, AES & HashiCorp Vault

Enkripsi data adalah pilar utama keamanan informasi. Dalam konteks IoT, enkripsi harus diterapkan pada tiga lapisan: data in transit (saat dikirim melalui jaringan), data at rest (saat disimpan di perangkat), dan data di memori (saat diproses oleh aplikasi).

TLS/SSL untuk Komunikasi IoT

Transport Layer Security (TLS) adalah protokol yang mengamankan komunikasi antara perangkat IoT dan server. TLS 1.3 adalah versi terbaru yang menawarkan handshake lebih cepat (hanya 1-RTT) dan keamanan yang lebih kuat.

Python β€” TLS/SSL Client untuk IoT
# ============================================
# TLS/SSL Client untuk IoT β€” Python
# ============================================

import ssl
import socket
import paho.mqtt.client as mqtt

def create_iot_ssl_context():
    """Membuat SSL context yang aman untuk IoT device."""
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)

    # Gunakan hanya TLS 1.2 dan 1.3 (tolak versi lama yang lemah)
    context.minimum_version = ssl.TLSVersion.TLSv1_2

    # Load CA certificate untuk verifikasi server
    context.load_verify_locations('/etc/ssl/certs/ca-certificates.crt')

    # Verifikasi sertifikat server wajib aktif
    context.verify_mode = ssl.CERT_REQUIRED

    # Load sertifikat client (mutual TLS / mTLS)
    context.load_cert_chain(
        certfile='/etc/iot/certs/device.crt',
        keyfile='/etc/iot/certs/device.key'
    )

    # Cipher suite yang aman saja
    context.set_ciphers(
        'ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20'
    )

    return context

# Konfigurasi MQTT over TLS
client = mqtt.Client(client_id="sensor-suhu-001")
client.tls_set_context(create_iot_ssl_context())
client.tls_insecure_set(False)  # Selalu verifikasi sertifikat

client.username_pw_set("sensor-001", password="token-rahasia-123")
client.connect("mqtt.example.com", port=8883, keepalive=60)

# Publish data sensor terenkripsi
import json, time
while True:
    data = {
        "device_id": "sensor-suhu-001",
        "temperature": 28.5,
        "humidity": 65.2,
        "timestamp": int(time.time())
    }
    client.publish("iot/suhu/data", json.dumps(data), qos=1)
    time.sleep(10)
      

Enkripsi Data at Rest dengan AES-256

Data yang disimpan pada perangkat IoT harus dienkripsi menggunakan algoritma simetris seperti AES-256-GCM. Mode Galois/Counter (GCM) memberikan enkripsi sekaligus autentikasi data (authenticated encryption), sehingga mencegah modifikasi data yang disimpan.

Python β€” AES-256-GCM Encryption
# ============================================
# AES-256-GCM untuk Enkripsi Data IoT
# ============================================

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import os
import base64
import json

class IoTDataEncryptor:
    """Enkripsi data sensor IoT menggunakan AES-256-GCM."""

    def __init__(self, master_key: str, salt: bytes = None):
        if salt is None:
            salt = os.urandom(16)

        # Derive encryption key dari master password
        kdf = PBKDF2HMAC(
            algorithm=hashes.SHA256(),
            length=32,           # 256-bit key
            salt=salt,
            iterations=480000    # OWASP recommended minimum
        )
        key = kdf.derive(master_key.encode())
        self.aesgcm = AESGCM(key)
        self.salt = salt

    def encrypt_sensor_data(self, data: dict) -> dict:
        """Enkripsi data sensor dengan nonce unik."""
        nonce = os.urandom(12)  # 96-bit nonce untuk GCM
        plaintext = json.dumps(data).encode('utf-8')

        # Enkripsi + autentikasi
        ciphertext = self.aesgcm.encrypt(nonce, plaintext, None)

        return {
            "nonce": base64.b64encode(nonce).decode(),
            "ciphertext": base64.b64encode(ciphertext).decode(),
            "salt": base64.b64encode(self.salt).decode()
        }

    def decrypt_sensor_data(self, encrypted: dict) -> dict:
        """Dekripsi data sensor dan verifikasi integritas."""
        nonce = base64.b64decode(encrypted["nonce"])
        ciphertext = base64.b64decode(encrypted["ciphertext"])

        # Dekripsi + verifikasi autentikasi
        plaintext = self.aesgcm.decrypt(nonce, ciphertext, None)
        return json.loads(plaintext.decode('utf-8'))


# Contoh penggunaan
encryptor = IoTDataEncryptor(master_key="r4h4s1a_k3y_i0t_2026!")

# Data asli dari sensor
sensor_reading = {
    "device_id": "sensor-kelembaban-003",
    "soil_moisture": 42.7,
    "temperature": 26.3,
    "battery_pct": 78
}

# Enkripsi
encrypted = encryptor.encrypt_sensor_data(sensor_reading)
print(f"Encrypted: {json.dumps(encrypted, indent=2)}")

# Dekripsi
decrypted = encryptor.decrypt_sensor_data(encrypted)
print(f"Decrypted: {json.dumps(decrypted, indent=2)}")
      

HashiCorp Vault untuk Secrets Management

HashiCorp Vault menyediakan secrets management terpusat yang ideal untuk infrastruktur IoT berskala besar. Vault mengelola API keys, sertifikat TLS, kredensial database, dan rahasia lainnya dengan mekanisme audit logging dan akses terkontrol.

Bash β€” HashiCorp Vault Setup
# ============================================
# HashiCorp Vault untuk IoT Secrets Management
# ============================================

# Start Vault server (development mode untuk testing)
vault server -dev -dev-root-token-id="iot-root-token"

# Export Vault address
export VAULT_ADDR='http://127.0.0.1:8200'

# Enable KV secrets engine v2
vault secrets enable -path=iot kv-v2

# Simpan kredensial MQTT
vault kv put iot/mqtt/production \
    host="mqtt.example.com" \
    port=8883 \
    username="iot-broker-user" \
    password="sup3r_s3cr3t_p@ss!" \
    ca_cert="@/etc/iot/certs/ca.pem"

# Simpan kredensial database sensor
vault kv put iot/database/sensors \
    host="db.internal.iothub.local" \
    port=5432 \
    username="sensor_writer" \
    password="db_p@ssw0rd_2026" \
    dbname="iot_sensor_data"

# Baca secrets (dari aplikasi Python/Node.js)
vault kv get -field=password iot/mqtt/production
      
Key Value --- ----- password sup3r_s3cr3t_p@ss! port 8883 username iot-broker-user host mqtt.example.com ca_cert -----BEGIN CERTIFICATE----- MIIDbzCCAlegAwIBAgIJAN... -----END CERTIFICATE-----
⚠️ Peringatan: Jangan Hardcode Secrets

Jangan pernah menyimpan kunci enkripsi, password, atau API key langsung di dalam kode sumber perangkat IoT. Gunakan environment variables atau secrets manager seperti HashiCorp Vault. Kode yang mengandung secrets yang di-hardcode merupakan salah satu celah keamanan IoT yang paling sering ditemukan oleh peneliti keamanan.

5. Authentication & Access Control

Autentikasi memastikan bahwa hanya perangkat dan pengguna yang sah yang dapat mengakses sistem IoT. Dalam ekosistem IoT, kita perlu mengelola autentikasi pada beberapa level: perangkat ke cloud, pengguna ke dashboard, dan antar-service.

OAuth 2.0 untuk Aplikasi IoT

OAuth 2.0 adalah protokol otorisasi yang memungkinkan aplikasi IoT mengakses resource atas nama pengguna tanpa berbagi kredensial. Flow yang paling umum untuk IoT adalah Client Credentials Grant (untuk device-to-device) dan Authorization Code Flow (untuk device-to-user).

Python β€” OAuth2 Client Credentials
# ============================================
# OAuth2 Client Credentials untuk IoT Device
# ============================================

import requests
import json
import time

class IoTOAuth2Client:
    """OAuth2 client untuk autentikasi device-to-service."""

    def __init__(self, client_id, client_secret, token_url):
        self.client_id = client_id
        self.client_secret = client_secret
        self.token_url = token_url
        self._token = None
        self._token_expiry = 0

    def get_access_token(self) -> str:
        """Dapatkan access token dengan auto-refresh."""
        if self._token and time.time() < self._token_expiry - 60:
            return self._token

        response = requests.post(self.token_url, data={
            "grant_type": "client_credentials",
            "client_id": self.client_id,
            "client_secret": self.client_secret,
            "scope": "iot:read iot:write telemetry:publish"
        })

        if response.status_code == 200:
            data = response.json()
            self._token = data["access_token"]
            self._token_expiry = time.time() + data["expires_in"]
            return self._token
        else:
            raise Exception(f"OAuth2 token error: {response.status_code}")

    def publish_telemetry(self, endpoint, payload):
        """Kirim data telemetri dengan OAuth2 token."""
        token = self.get_access_token()
        headers = {
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json"
        }
        return requests.post(endpoint, json=payload, headers=headers)


# Penggunaan
client = IoTOAuth2Client(
    client_id="iot-sensor-fleet-001",
    client_secret="client_secret_rahasia",
    token_url="https://auth.example.com/oauth/token"
)

result = client.publish_telemetry(
    "https://api.example.com/iot/telemetry",
    {"device_id": "sensor-001", "value": 42.5}
)
      

JWT (JSON Web Token) untuk Autentikasi Perangkat

JWT adalah format token yang ringan dan self-contained, ideal untuk komunikasi antara perangkat IoT dan API server. Setiap JWT berisi claims (pernyataan) yang ditandatangani secara kriptografis, sehingga server dapat memverifikasi keaslian token tanpa mengakses database.

Python β€” JWT Authentication
# ============================================
# JWT Authentication untuk IoT API
# ============================================

import jwt
import datetime
from functools import wraps
from flask import Flask, request, jsonify

app = Flask(__name__)
SECRET_KEY = "jwt-secret-key-yang-sangat-panjang-dan-aman"
ALGORITHM = "HS256"

# ============================================
# Token Generation (dilakukan saat device provisioning)
# ============================================

def generate_device_token(device_id: str, role: str = "sensor") -> str:
    """Buat JWT token untuk perangkat IoT."""
    payload = {
        "sub": device_id,              # Subject: ID perangkat
        "role": role,                   # Role: sensor, actuator, admin
        "iat": datetime.datetime.utcnow(),
        "exp": datetime.datetime.utcnow() + datetime.timedelta(days=30),
        "iss": "iot-gateway",          # Issuer
        "permissions": {
            "publish": ["telemetry", "status"],
            "subscribe": ["commands"]
        }
    }
    return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)


def verify_device_token(f):
    """Decorator untuk verifikasi JWT pada endpoint API."""
    @wraps(f)
    def decorated(*args, **kwargs):
        token = request.headers.get("Authorization", "").replace("Bearer ", "")

        if not token:
            return jsonify({"error": "Token tidak ditemukan"}), 401

        try:
            payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
            request.device_id = payload["sub"]
            request.device_role = payload["role"]
        except jwt.ExpiredSignatureError:
            return jsonify({"error": "Token sudah kadaluarsa"}), 401
        except jwt.InvalidTokenError:
            return jsonify({"error": "Token tidak valid"}), 401

        return f(*args, **kwargs)
    return decorated


# ============================================
# Contoh Endpoint API IoT
# ============================================

@app.route("/api/telemetry", methods=["POST"])
@verify_device_token
def receive_telemetry():
    """Endpoint menerima data telemetri dari sensor."""
    data = request.json
    device_id = request.device_id

    # Simpan data ke database
    # db.save(device_id, data)

    return jsonify({
        "status": "received",
        "device_id": device_id,
        "timestamp": datetime.datetime.utcnow().isoformat()
    }), 201


@app.route("/api/commands/", methods=["POST"])
@verify_device_token
def send_command(device_id):
    """Endpoint mengirim perintah ke actuator."""
    if request.device_role != "admin":
        return jsonify({"error": "Akses ditolak"}), 403

    command = request.json
    return jsonify({"status": "sent", "command": command}), 200


# Generate token untuk device provisioning
token = generate_device_token("sensor-suhu-001", role="sensor")
print(f"Device Token: {token}")
      

API Keys untuk Integrasi Sederhana

API keys merupakan metode autentikasi paling sederhana, cocok untuk integrasi antar-service dalam lingkungan IoT yang terkendali. Namun, API keys tidak memiliki mekanisme expiry bawaan, sehingga harus dikelola secara aktif.

Python β€” API Key Management
# ============================================
# API Key Management untuk IoT
# ============================================

import secrets
import hashlib
import time
from datetime import datetime, timedelta

class APIKeyManager:
    """Manajemen API keys untuk perangkat IoT."""

    def __init__(self):
        self.keys_store = {}  # Dalam produksi: gunakan database terenkripsi

    def generate_key(self, device_id: str, scopes: list, expiry_days: int = 90) -> dict:
        """Generate API key baru untuk perangkat IoT."""
        raw_key = f"iot_{secrets.token_hex(32)}"
        key_hash = hashlib.sha256(raw_key.encode()).hexdigest()

        self.keys_store[key_hash] = {
            "device_id": device_id,
            "scopes": scopes,
            "created_at": datetime.utcnow(),
            "expires_at": datetime.utcnow() + timedelta(days=expiry_days),
            "is_active": True
        }

        return {
            "api_key": raw_key,       # Hanya ditampilkan SEKALI
            "key_prefix": raw_key[:12] + "...",
            "device_id": device_id,
            "scopes": scopes,
            "expires_at": self.keys_store[key_hash]["expires_at"].isoformat()
        }

    def validate_key(self, api_key: str, required_scope: str = None) -> dict:
        """Validasi API key dan cek expiry."""
        key_hash = hashlib.sha256(api_key.encode()).hexdigest()

        if key_hash not in self.keys_store:
            return {"valid": False, "error": "Key tidak ditemukan"}

        key_data = self.keys_store[key_hash]

        if not key_data["is_active"]:
            return {"valid": False, "error": "Key sudah dinonaktifkan"}

        if datetime.utcnow() > key_data["expires_at"]:
            return {"valid": False, "error": "Key sudah kadaluarsa"}

        if required_scope and required_scope not in key_data["scopes"]:
            return {"valid": False, "error": f"Akses '{required_scope}' tidak diizinkan"}

        return {"valid": True, "device_id": key_data["device_id"]}

    def revoke_key(self, api_key: str):
        """Nonaktifkan API key."""
        key_hash = hashlib.sha256(api_key.encode()).hexdigest()
        if key_hash in self.keys_store:
            self.keys_store[key_hash]["is_active"] = False


# Contoh penggunaan
manager = APIKeyManager()
key_info = manager.generate_key(
    device_id="actuator-pompa-001",
    scopes=["telemetry:read", "command:write"],
    expiry_days=90
)
print(f"API Key (simpan ini!): {key_info['api_key']}")
      
πŸ’‘ Memilih Metode Autentikasi yang Tepat

Gunakan OAuth 2.0 untuk integrasi dengan layanan pihak ketiga dan user-facing applications. Gunakan JWT untuk autentikasi perangkat ke API server dengan claims yang kaya. Gunakan API keys hanya untuk komunikasi antar-service sederhana dalam lingkungan terkendali. Selalu terapkan mTLS (mutual TLS) sebagai lapisan autentikasi perangkat tambahan.

6. Network Segmentation: VLAN & Microsegmentation

Network segmentation adalah teknik membagi jaringan fisik atau logis ke dalam beberapa segmen terisolasi. Dalam konteks IoT, ini sangat krusial untuk mencegah penyebaran serangan lateral β€” jika satu perangkat IoT terinfeksi, serangan tidak dapat menyebar ke seluruh jaringan.

πŸ“Š Arsitektur Segmentation Jaringan IoT
πŸ›‘οΈ
FIREWALL / ROUTER GATEWAY
eth0 (Internet) Β· eth1 (DMZ) Β· eth2 (LAN)
β–Ό β–Ό β–Ό
πŸ“‘
VLAN 10 β€” IoT Sensors
10.10.10.0/24
β€’ ESP32 Nodes β€’ ZigBee Gateway β€’ MQTT Broker (local)
βœ“ Allow β†’ MQTT βœ— Block β†’ Internet βœ“ Allow β†’ NTP
πŸ“·
VLAN 20 β€” IoT Cameras
10.10.20.0/24
β€’ IP Cameras β€’ NVR/DVR β€’ Video Stream
βœ“ Allow β†’ RTSP βœ— Block β†’ LAN βœ“ Allow β†’ NTP
πŸ’»
VLAN 30 β€” Trusted LAN
192.168.1.0/24
β€’ Admin Laptop β€’ Dev Machine β€’ Dashboard
βœ“ Allow β†’ All IoT βœ“ Allow β†’ Internet βœ“ Allow β†’ SSH
β–Ό
βš™οΈ
VLAN 40 β€” Management (Out-of-Band)
10.10.40.0/24 Β· MikroTik Mgmt Β· Switch Mgmt Β· UPS Mgmt
πŸ”’ Accessible only from VLAN 30 πŸ“‹ All access logged

Konfigurasi VLAN pada MikroTik

Berikut adalah konfigurasi VLAN untuk memisahkan perangkat IoT berdasarkan fungsi dan tingkat keamanannya:

MikroTik CLI β€” VLAN Configuration
# ============================================
# VLAN Segmentation untuk IoT Network
# ============================================

# Buat VLAN interface di MikroTik
/interface vlan
add name=vlan10-iot-sensors vlan-id=10 interface=bridge comment="IoT Sensors"
add name=vlan20-cameras vlan-id=20 interface=bridge comment="IoT Cameras"
add name=vlan30-trusted vlan-id=30 interface=bridge comment="Trusted LAN"
add name=vlan40-mgmt vlan-id=40 interface=bridge comment="Management"

# Tambahkan IP address ke masing-masing VLAN
/ip address
add address=10.10.10.1/24 interface=vlan10-iot-sensors comment="Gateway VLAN10"
add address=10.10.20.1/24 interface=vlan20-cameras comment="Gateway VLAN20"
add address=192.168.1.1/24 interface=vlan30-trusted comment="Gateway VLAN30"
add address=10.10.40.1/24 interface=vlan40-mgmt comment="Gateway VLAN40"

# DHCP Server untuk setiap VLAN
/ip dhcp-server
add name=dhcp-iot interface=vlan10-iot-sensors address-pool=iot-pool
add name=dhcp-cam interface=vlan20-cameras address-pool=cam-pool

/ip dhcp-server network
add address=10.10.10.0/24 gateway=10.10.10.1 dns-server=10.10.10.1
add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=10.10.20.1

# Firewall rules untuk isolasi antar VLAN
/ip firewall filter

# VLAN 10 (IoT Sensors): hanya boleh akses MQTT broker, NTP, dan DNS
add chain=forward src-address=10.10.10.0/24 dst-address=10.10.10.1 \
    protocol=tcp dst-port=1883 action=accept comment="IoT→MQTT Allow"
add chain=forward src-address=10.10.10.0/24 protocol=udp dst-port=53 action=accept \
    comment="IoT→DNS Allow"
add chain=forward src-address=10.10.10.0/24 protocol=udp dst-port=123 action=accept \
    comment="IoT→NTP Allow"

# VLAN 10: Boleh akses internet untuk firmware update (terbatas)
add chain=forward src-address=10.10.10.0/24 dst-address=104.16.0.0/12 \
    protocol=tcp dst-port=443 action=accept comment="IoT→Cloud Update"

# VLAN 10: BLOKIR semua akses ke VLAN lain
add chain=forward src-address=10.10.10.0/24 dst-address=10.10.20.0/24 action=drop \
    comment="IoT→Cam Block"
add chain=forward src-address=10.10.10.0/24 dst-address=192.168.1.0/24 action=drop \
    comment="IoT→Trusted Block"

# VLAN 20 (Cameras): isolasi total dari LAN
add chain=forward src-address=10.10.20.0/24 dst-address=192.168.1.0/24 action=drop \
    comment="Cam→Trusted Block"

# VLAN 40 (Management): hanya bisa diakses dari VLAN 30
add chain=forward src-address=!192.168.1.0/24 dst-address=10.10.40.0/24 action=drop \
    comment="Block Mgmt from non-trusted"
      

Microsegmentation dengan iptables

Microsegmentation membawa konsep segmentation ke tingkat yang lebih granular β€” bukan hanya memisahkan subnet, tetapi juga mengontrol komunikasi antar individual device atau application workload.

Bash β€” Microsegmentation Rules
# ============================================
# Microsegmentation untuk Perangkat IoT
# ============================================

# Definisikan IP set untuk setiap kategori device
ipset create iot-sensors hash:ip hashsize 1024
ipset add iot-sensors 10.10.10.10   # Sensor suhu
ipset add iot-sensors 10.10.10.11   # Sensor kelembaban
ipset add iot-sensors 10.10.10.12   # Sensor cahaya

ipset create iot-actuators hash:ip hashsize 256
ipset add iot-actuators 10.10.10.50  # Relay pompa
ipset add iot-actuators 10.10.10.51  # Solenoid valve

ipset create iot-critical hash:ip hashsize 64
ipset add iot-critical 10.10.10.100  # Safety controller

# Microsegmentation rules:
# Sensor hanya boleh PUBLISH ke MQTT broker
iptables -A FORWARD -m set --match-set iot-sensors src \
    -d 10.10.10.1 -p tcp --dport 1883 -j ACCEPT
iptables -A FORWARD -m set --match-set iot-sensors src \
    -m set ! --match-set iot-critical dst -j DROP

# Actuator hanya boleh SUBSCRIBE dari MQTT, tidak boleh inisiasi koneksi
iptables -A FORWARD -m set --match-set iot-actuators src \
    -d 10.10.10.1 -p tcp --dport 1883 -j ACCEPT
iptables -A FORWARD -m set --match-set iot-actuators src -j DROP

# Critical devices: diizinkan komunikasi penuh di dalam subnet
iptables -A FORWARD -m set --match-set iot-critical src \
    -m set --match-set iot-critical dst -j ACCEPT

echo "Microsegmentation rules applied successfully."
      
βœ… Tips: Zero Trust untuk IoT

Implementasikan prinsip Zero Trust β€” "never trust, always verify". Setiap perangkat IoT harus mengautentikasi diri sendiri meskipun sudah berada di dalam jaringan. Jangan asumsikan bahwa perangkat di VLAN yang sama bisa saling dipercaya. Gunakan mTLS atau certificate-based authentication untuk setiap komunikasi antar device.

7. Monitoring & Intrusion Detection

Firewall dan VPN hanyalah lapisan pertama pertahanan. Untuk mendeteksi serangan yang berhasil melewati pertahanan awal, diperlukan sistem monitoring dan intrusion detection (IDS/IPS) yang aktif memantau pola lalu lintas jaringan secara real-time.

Snort: IDS Legendaris

Snort adalah sistem IDS/IPS open-source yang sudah mature dan sangat populer. Snort berfungsi mendeteksi serangan dengan melakukan real-time traffic analysis dan packet logging pada jaringan.

Bash β€” Snort Setup untuk IoT Network
# ============================================
# Snort IDS untuk Monitoring IoT Traffic
# ============================================

# Install Snort
sudo apt install snort

# Konfigurasi Snort untuk jaringan IoT
# Edit /etc/snort/snort.conf

# Set network variables
# var HOME_NET 10.10.10.0/24,10.10.20.0/24
# var EXTERNAL_NET !$HOME_NET

# Aktifkan rule categories yang relevan
# include $RULE_PATH/local.rules
# include $RULE_PATH/attack-responses.rules
# include $RULE_PATH/exploit.rules
# include $RULE_PATH/icmp-info.rules
# include $RULE_PATH/malware-backdoor.rules
# include $RULE_PATH/protocol-dns.rules
# include $RULE_PATH/protocol-services.rules

# Custom rules untuk IoT
# cat >> /etc/snort/rules/local.rules << 'RULES'
# alert tcp any any -> $HOME_NET 1883 (msg:"MQTT Brute Force Attempt"; \
#     flags:S,12; threshold:type threshold, track by_src, count 10, \
#     seconds 60; sid:1000001; rev:1;)
#
# alert udp any any -> $HOME_NET any (msg:"Potential IoT Deauth Attack"; \
#     dsize:0; sid:1000002; rev:1;)
#
# alert tcp any any -> $HOME_NET 22 (msg:"SSH Brute Force IoT Gateway"; \
#     flags:S,12; threshold:type threshold, track by_src, count 5, \
#     seconds 30; sid:1000003; rev:1;)
# RULES

# Jalankan Snort dalam mode IDS
snort -c /etc/snorm/snort.conf -i eth1 -A alert_fast -l /var/log/snort/
      

Suricata: IDS/IPS Multithreaded Modern

Suricata adalah IDS/IPS modern yang mendukung multithreading, menjadikannya lebih cepat dari Snort pada jaringan berkecepatan tinggi. Suricata juga mendukung analysis protokol otomatis dan integrasi dengan Elasticsearch (ELK stack).

YAML β€” Suricata Configuration
# ============================================
# Suricata IDS/IPS β€” IoT Network Monitoring
# File: /etc/suricata/suricata.yaml
# ============================================

vars:
  address-groups:
    HOME_NET: "[10.10.10.0/24,10.10.20.0/24,192.168.1.0/24]"
    EXTERNAL_NET: "!$HOME_NET"
    MQTT_SERVER: "[10.10.10.1]"
    IOT_CAMERAS: "[10.10.20.0/24]"

  port-groups:
    MQTT_PORTS: "[1883,8883]"
    SSH_PORTS: "[22]"

# Network Interface Configuration
af-packet:
  - interface: eth1
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    threads: 4

# Rule Management
default-log-dir: /var/log/suricata/

outputs:
  - fast:
      enabled: yes
      filename: fast.log
  - eve-log:
      enabled: yes
      filename: eve.json
      types:
        - alert
        - http
        - dns
        - tls
        - files
        - ssh
  - stats:
      enabled: yes
      filename: stats.log
      interval: 30

# Detection Engine
detect:
  profile: medium
  sgh-mpm-context: auto

# IoT-specific rules (dalam file terpisah)
# include: /etc/suricata/rules/iot-local.rules
      
Suricata Rules β€” IoT Specific
# ============================================
# Custom Suricata Rules untuk IoT
# File: /etc/suricata/rules/iot-local.rules
# ============================================

# Deteksi port scanning ke jaringan IoT
alert tcp $EXTERNAL_NET any -> $HOME_NET any \
    (msg:"IoT NETWORK Scan Detected"; \
    flags:S,12; \
    threshold:type threshold, track by_src, count 20, seconds 60; \
    classtype:attempted-recon; \
    sid:1000101; rev:1;)

# Deteksi percobaan brute force MQTT
alert tcp any any -> $MQTT_SERVER $MQTT_PORTS \
    (msg:"MQTT Brute Force Attempt"; \
    flags:S,12; \
    threshold:type threshold, track by_src, count 10, seconds 30; \
    classtype:attempted-admin; \
    sid:1000102; rev:1;)

# Deteksi data exfiltration dari sensor
alert tcp $HOME_NET any -> $EXTERNAL_NET any \
    (msg:"Possible IoT Data Exfiltration"; \
    dsize:>1000; \
    flow:to_server,established; \
    threshold:type threshold, track by_src, count 5, seconds 60; \
    classtype:attempted-data-leak; \
    sid:1000103; rev:1;)

# Deteksi komunikasi ke IP command & control (C2)
alert ip $HOME_NET any -> $EXTERNAL_NET any \
    (msg:"IoT Device communicating with known C2 server"; \
    ip.dst:; \
    classtype:trojan-activity; \
    sid:1000104; rev:1;)

# Deteksi aktivitas DNS tunneling (sering digunakan di IoT malware)
alert dns any any -> any any \
    (msg:"DNS Tunneling attempt from IoT device"; \
    dns.query; \
    pcre:"/^[a-zA-Z0-9]{60,}\./"; \
    classtype:attempted-dos; \
    sid:1000105; rev:1;)
      

Monitoring Dashboard dengan ELK Stack

Mengintegrasikan IDS dengan Elasticsearch, Logstash, dan Kibana (ELK Stack) memungkinkan visualisasi traffic dan alert secara real-time, memudahkan analisis forensik dan respons terhadap insiden keamanan.

πŸ“Š Arsitektur Monitoring IoT Security
Monitoring & Detection Pipeline
1
🌐
IoT Gateway
Traffic Capture
β†’
2
πŸ”
Suricata
IDS/IPS Β· eve.json
β†’
3
βš™οΈ
Logstash
Parse & Enrich
β†’
4
πŸ—„οΈ
Elasticsearch
Store & Index
+
πŸ“Š
Netflow Export
Flow Data
β†’
+
πŸ“¦
Filebeat
Log Shipper
β†’
5
πŸ“ˆ
Kibana
Dashboard & Visualize
β†’
6
πŸ“‰
Grafana
Optional Analytics
βœ… Tips: Respons Otomatis dengan fail2ban

Kombinasikan IDS dengan fail2ban untuk respons otomatis. fail2ban membaca log Snort/Suricata dan secara otomatis memblokir IP yang melakukan aktivitas mencurigakan menggunakan iptables rules. Konfigurasi: fail2ban-client set snort maxretry 3 && fail2ban-client set snort bantime 3600

8. Checklist Keamanan IoT

Gunakan checklist berikut sebagai panduan komprehensif untuk memastikan infrastruktur IoT kamu telah terlindungi dengan baik dari berbagai ancaman keamanan.

Kategori Prioritas Tindakan yang Harus Dilakukan
Firewall πŸ”΄ Kritis Terapkan default DROP policy. Blokir semua port yang tidak digunakan. Implementasikan rate limiting untuk SYN flood protection. Gunakan nftables untuk performa optimal.
VPN Tunneling πŸ”΄ Kritis Gunakan WireGuard atau OpenVPN untuk semua komunikasi remote. Nonaktifkan akses langsung dari internet ke perangkat IoT. Gunakan mTLS untuk autentikasi mutual.
Enkripsi πŸ”΄ Kritis Gunakan TLS 1.2+ untuk semua komunikasi in-transit. Enkripsi data at rest dengan AES-256-GCM. Kelola secrets menggunakan HashiCorp Vault atau platform serupa. Rotasi kunci secara berkala.
Autentikasi πŸ”΄ Kritis Implementasikan OAuth 2.0 atau JWT untuk autentikasi API. Gunakan certificate-based authentication untuk perangkat. Nonaktifkan semua kredensial default. Terapkan principle of least privilege.
Network Segmentation 🟑 Penting Gunakan VLAN untuk memisahkan IoT, kamera, dan trusted LAN. Implementasikan microsegmentation dengan firewall rules. Buat network khusus management (out-of-band). Isolasi perangkat IoT dari jaringan utama.
IDS/IPS Monitoring 🟑 Penting Deploy Suricata atau Snort pada IoT gateway. Konfigurasi custom rules untuk serangan IoT-specific. Integrasikan dengan ELK stack untuk visualisasi. Siapkan alerting otomatis ke Slack/Email.
Update & Patching 🟑 Penting Daftarkan semua perangkat ke vendor advisory. Automate firmware update pipeline. Buat rencana rollback jika update gagal. Monitoring CVE untuk stack yang digunakan.
Physical Security 🟒 Standar Kunci port JTAG/UART pada PCB. Gunakan secure boot dan signed firmware. Nonaktifkan port debug di production. Pasang enclosure yang terkunci untuk perangkat outdoor.
Incident Response 🟒 Standar Buat runbook respons insiden IoT. Tetapkan tim on-call 24/7. Latihan tabletop exercise secara berkala. Dokumentasikan semua perubahan konfigurasi dengan timestamp.
Compliance & Audit 🟒 Standar Audit keamanan quarterly. Terapkan logging selama minimal 90 hari. Implementasikan centralized log management. Pastikan compliance dengan standar (e.g. ETSI EN 303 645 untuk consumer IoT).
πŸ’‘ Framework Keamanan: Defense in Depth

Prinsip Defense in Depth (Pertahanan Berlapis) adalah filosofi utama keamanan IoT. Setiap lapisan pertahanan harus berdiri sendiri β€” jika satu lapisan ditembus, lapisan berikutnya harus tetap melindungi. Lapisan yang disarankan: Physical Security β†’ Network Segmentation β†’ Firewall β†’ VPN β†’ Encryption β†’ Authentication β†’ Monitoring β†’ Incident Response.

9. Quiz: Uji Pemahamanmu

Jawab pertanyaan berikut untuk menguji pemahaman kamu tentang keamanan jaringan IoT. Pilih satu jawaban terbaik untuk setiap pertanyaan.

πŸ“ Quiz Keamanan Jaringan IoT

1. Serangan IoT yang berhasil melumpuhkan layanan Twitter dan Netflix pada tahun 2016 menggunakan mekanisme apa?

2. Mengapa WireGuard lebih direkomendasikan daripada OpenVPN untuk perangkat IoT berdaya rendah?

3. Mode enkripsi AES mana yang memberikan enkripsi sekaligus autentikasi data (authenticated encryption)?

4. Dalam arsitektur network segmentation IoT, VLAN yang sebaiknya digunakan untuk isolasi perangkat sensor IoT adalah:

5. Keuntungan utama mengintegrasikan Suricata IDS dengan ELK stack adalah: