00 — Portofolio
Qayri
DevOps · Reverse engineering · 18 tahun
Bikin server jadi layak dipercaya dulu, lalu bongkar binary-nya biar tahu apa yang sebenarnya dijalankan.
- 683 percobaan login gagal / 24 jam sebelum dibenahi
- 1.355 paket diinventarisasi saat audit
- 256 MB batas RAM container ini
- 19 field header ELF dibedah di bawah
Fokus
-
Bikin server layak dipercaya
Hardening dulu, layanan belakangan. Audit port dan service sebelum apa pun dibuka ke internet, lalu tutup jalur yang tidak dipakai. Semua dikerjakan di box 2 vCPU / 1,9 GiB — batasan RAM yang memaksa tiap keputusan dihitung, bukan ditebak.
-
Baca binary sampai byte-nya
Analisis statis dengan binutils: header ELF, program header versus section header, entry point, tabel simbol, string yang tertinggal. Kalau perlu dijalankan, syscall-nya yang dilihat, bukan output-nya.
Spesimen
64 byte pertama /bin/ls di server ini, apa adanya. Pilih satu blok
untuk membaca field-nya — inilah yang dibaca loader sebelum satu instruksi pun jalan.
Belum ada yang dipilih
Pilih satu blok byte di atas.
Mulai dari empat byte pertama — itu satu-satunya bagian yang wajib benar sebelum kernel mau melihat sisanya.
Kerja
-
Hardening server publik
2026Login password dimatikan total, diganti tiga kunci ed25519. fail2ban memblokir pemindai otomatis, port SSH dipindah dari 22 ke 2223. Sebelum dibenahi: 683 percobaan login gagal dalam 24 jam, hanya security group yang jadi penghalang.
-
Audit satu server, read-only
2026Inventaris penuh tanpa mengubah apa pun: 1.355 paket, peta port dan service, pemakaian RAM per proses, sampai paket yang seharusnya tidak ada di sana. Hasilnya lima temuan diurut berdasar dampak, bukan berdasar mudahnya diperbaiki.
-
Deploy web di sisa RAM 400 MB
2026Node 24 alpine dan Express 5 di Docker. Bind mount plus
node --watchsupaya perubahan langsung terpakai tanpa rebuild, danmem_limit256 MB supaya proses yang lepas kendali tidak menjatuhkan layanan lain di box yang sama. Halaman ini jalan di container itu — angka uptime di kiri diambil langsung dari/health. -
Memori lokal untuk agent
2026Vault Markdown dipakai sebagai memori persisten lintas sesi, jadi konteks tidak hilang dan token tidak terbuang. Server MCP dipindah ke user scope setelah ketemu penyebabnya: terdaftar di project scope, sehingga hanya terbaca dari satu direktori.
Hobi
-
Server Minecraft Purpur
Purpur 26.2 di OpenJDK 25 dengan G1GC, heap dipatok 1.350 MB karena box-nya cuma punya 1,9 GiB. ViaVersion dan ViaBackwards supaya client versi lain tetap bisa masuk, TAB untuk tab list, dijalankan lewat screen dengan unit systemd sebagai cadangan. View distance 6 dan simulation distance 4 — hasil kompromi dengan 2 vCPU, bukan angka default.
Kontak
Paling cepat lewat email. Silakan langsung soal DevOps, hardening, atau bedah binary.
- —
- GitHub
- —
- Discord
- —