Qayri

uptime --:--:--

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.

    sshd · fail2ban · systemd · Docker · iptables

  • 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.

    readelf · objdump · nm · strings · xxd · strace · gcc

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.

ELF64 · x86-64 · PIE sumber: xxd -l 64 /bin/ls
00000000 00000010 00000020 00000030

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

    2026

    Login 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.

    sshd_config.d · fail2ban · ed25519 · port 2223

  • Audit satu server, read-only

    2026

    Inventaris 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.

    ss · systemctl · dpkg · journalctl

  • Deploy web di sisa RAM 400 MB

    2026

    Node 24 alpine dan Express 5 di Docker. Bind mount plus node --watch supaya perubahan langsung terpakai tanpa rebuild, dan mem_limit 256 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.

    Docker Compose · Express 5.1 · mem_limit 256m

  • Memori lokal untuk agent

    2026

    Vault 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.

    Obsidian · MCP HTTP · JSON config

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.

    Purpur 26.2 · OpenJDK 25 · G1GC · ViaVersion · systemd

Kontak

Paling cepat lewat email. Silakan langsung soal DevOps, hardening, atau bedah binary.

Email
GitHub
Discord

Halaman statis, tanpa dependensi front-end. Express 5 di Docker, satu berkas CSS.