Episode ini menerapkan security hardening pada Alpine: update rutin dengan apk upgrade, penguatan SSH dan firewall, kebijakan doas dan umask default, serta alat bantu lynis dan fail2ban untuk audit dan deteksi serangan brute force.

Alpine memang dirancang aman sejak awal, tapi keamanan tidak berhenti pada desain — ia adalah proses berkelanjutan. Episode 13 menyusun checklist hardening yang bisa kalian terapkan di setiap server Alpine: update rutin, penguatan SSH dan firewall, kebijakan doas dan umask, serta audit otomatis dengan lynis.
Topik-topik di episode 9 dan 10 akan dirangkai di sini menjadi satu kebijakan keamanan yang utuh. Setelah episode ini, kalian punya prosedur hardening yang bisa dijalankan berulang kali dan dijadikan checklist produksi.
Patch keamanan tidak berguna jika tidak diinstall. Jadikan update sebagai kebiasaan terjadwal:
apk update
apk upgrade
apk info -uapk update menyegarkan indeks paket.apk upgrade memperbarui semua paket ke versi terbaru.apk info -u menampilkan daftar paket yang memiliki update.Untuk server produksi, otomatiskan dengan cron:
apk add cronie
crontab -eContoh baris cron yang menjalankan update setiap malam:
0 2 * * * apk update && apk upgradeJadwal 0 2 * * * apk update && apk upgrade menjalankan update pukul 02.00 setiap hari. Perhatikan output update — untuk produksi, uji di staging sebelum menerapkan otomatisasi penuh.
Gabungkan hardening SSH dari episode 9 dan firewall dari episode 10:
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers armanPastikan firewall hanya membuka port yang dibutuhkan:
ss -tlnp
nft list rulesetOutput ss -tlnp menampilkan semua port yang mendengarkan. Setiap port yang terbuka tanpa keperluan adalah permukaan serangan — tutup yang tidak dipakai dengan memblokirnya di aturan nft.
Terapkan prinsip akses paling minimal:
Konfigurasi doas yang lebih ketat dari default:
permit nopass :wheel apk
permit persist :wheel
deny :guestBaris permit nopass :wheel apk mengizinkan group wheel menjalankan apk tanpa password, sementara deny :guest memblokir user guest. Atur umask default di /etc/profile:
echo "umask 027" >> /etc/profile
umaskumask 027 menghasilkan file dengan izin yang lebih ketat — hak baca grup saja, tanpa izin untuk yang lain.
lynis adalah tool audit open-source yang memindai sistem dan memberi skor hardening:
apk add lynis
lynis audit systemOutput lynis menampilkan skor hardening dan daftar rekomendasi. Simpan laporan untuk perbandingan antar waktu:
lynis audit system --report-file /root/lynis-$(date +%F).txt
cat /var/log/lynis-report.dat | grep "hardening_index"grep "hardening_index" menampilkan indeks hardening numerik dari laporan terakhir.
fail2ban memantau log dan memblokir IP yang melakukan percobaan login berulang:
apk add fail2ban
rc-service fail2ban start
rc-update add fail2ban defaultKonfigurasi jail untuk SSH di /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
bantime = 3600
findtime = 600Periksa status jail:
fail2ban-client status
fail2ban-client status sshdfail2ban-client status sshd menampilkan IP yang sedang diblokir beserta statistik pelanggaran.
Info
Hardening bukan acara sekali jalan. Jadikan lynis dan apk upgrade sebagai rutinitas bulanan, dan catat skor hardening dari waktu ke waktu agar perubahan yang melemahkan keamanan cepat terdeteksi.
Episode 13 merangkai security hardening Alpine menjadi satu kebijakan utuh: update rutin dengan apk upgrade, penguatan SSH dan firewall, kebijakan doas dan umask, audit dengan lynis, serta deteksi brute force dengan fail2ban.
Inti yang harus dibawa pulang:
Di episode 14 selanjutnya kita akan membahas musl libc: implikasi dan kompatibilitas — perbedaan binary dengan glibc, mengapa sebagian aplikasi prebuilt tidak jalan, serta penggunaan gcompat sebagai lapisan kompatibilitas.