<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Agung Sukariman | Digital Marketer &amp; Tech Tinkerer</title><link>https://agungsukariman.com/tags/security/</link><description>Digital marketing specialist sharing stories about cycling, tech DIY, and personal growth. Based in Jakarta.</description><generator>Hugo -- gohugo.io</generator><language>EN</language><lastBuildDate>Thu, 22 Oct 2026 00:00:00 +0700</lastBuildDate><atom:link href="https://agungsukariman.com/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Ada yang Diam-Diam Nambang Monero di VPS Gue — Dan Gue Baru Ngeh Gara-Gara Nanya Iseng ke AI</title><link>https://agungsukariman.com/blog/ada-yang-diam-diam-nambang-monero-di-vps-gue/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0700</pubDate><guid>https://agungsukariman.com/blog/ada-yang-diam-diam-nambang-monero-di-vps-gue/</guid><description>&lt;p&gt;Jadi ceritanya gue lagi santai malem-malem. Harusnya iseng doang. Gue buka obrolan sama Claude Code (iya, partner AI gue yang itu-itu lagi), terus gue nanya hal random soal Docker di VPS gue. Bukan karena curiga apa-apa. Murni kepo.&lt;/p&gt;
&lt;p&gt;Terus gue nyeletuk: &lt;em&gt;&amp;ldquo;eh, cek dong, ada container namanya &lt;code&gt;dockhand&lt;/code&gt; nggak di VPS gue?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dan dari situ&amp;hellip; semuanya berubah. Wkwk.&lt;/p&gt;
&lt;p&gt;Spoiler: &lt;strong&gt;ada orang yang diam-diam numpang nambang crypto di server gue.&lt;/strong&gt; Dan yang bikin gue pengen nyebur ke laut: pintu masuknya gue sendiri yang buka. Mari kita bahas pelan-pelan biar lo semua bisa ketawain gue dengan maksimal.&lt;/p&gt;</description><content:encoded>&lt;p&gt;Jadi ceritanya gue lagi santai malem-malem. Harusnya iseng doang. Gue buka obrolan sama Claude Code (iya, partner AI gue yang itu-itu lagi), terus gue nanya hal random soal Docker di VPS gue. Bukan karena curiga apa-apa. Murni kepo.&lt;/p&gt;&#10;&lt;p&gt;Terus gue nyeletuk: &lt;em&gt;&amp;ldquo;eh, cek dong, ada container namanya &lt;code&gt;dockhand&lt;/code&gt; nggak di VPS gue?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Dan dari situ&amp;hellip; semuanya berubah. Wkwk.&lt;/p&gt;&#10;&lt;p&gt;Spoiler: &lt;strong&gt;ada orang yang diam-diam numpang nambang crypto di server gue.&lt;/strong&gt; Dan yang bikin gue pengen nyebur ke laut: pintu masuknya gue sendiri yang buka. Mari kita bahas pelan-pelan biar lo semua bisa ketawain gue dengan maksimal.&lt;/p&gt;&#10;&lt;h2 id="kronologinya-gimana"&gt;Kronologinya Gimana?&lt;/h2&gt;&#10;&lt;p&gt;VPS ini bukan server sembarangan. Di situ ada CRM gue (Twenty), ada n8n buat nampung lead dari Meta/website/WhatsApp, ada database analytics, pokoknya jantungnya operasi &lt;em&gt;digital marketing&lt;/em&gt; gue di Smart Salary. Server yang kalau mati, kerjaan gue ikut mati.&lt;/p&gt;&#10;&lt;p&gt;Nah pas gue suruh Claude ngecek, nongol lah daftar container. Sebagian emang punya gue. Tapi ada beberapa yang gue nggak kenal:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;dockhand&lt;/code&gt; — panel buat ngatur Docker lewat web&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;rig&lt;/code&gt; — pakai image &lt;code&gt;metal3d/xmrig&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;tm&lt;/code&gt; — pakai image &lt;code&gt;traffmonetizer/cli_v2&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;watch&lt;/code&gt; — &lt;code&gt;watchtower&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Pas liat &lt;code&gt;xmrig&lt;/code&gt;, jantung gue langsung drop. &lt;strong&gt;XMRig itu software buat nambang Monero.&lt;/strong&gt; Alias ada yang mindahin tagihan listrik CPU gue ke dompet dia. &lt;code&gt;traffmonetizer&lt;/code&gt; lebih sopan dikit: dia jualan bandwidth server gue ke orang asing. Dan &lt;code&gt;watch&lt;/code&gt; tadi? Itu yang paling licik — dia disetel buat &lt;strong&gt;ngidupin lagi si penambang tiap 12 jam&lt;/strong&gt; kalau mati. Jadi kalaupun gue bunuh si miner, dia bakal bangkit lagi kayak zombie.&lt;/p&gt;&#10;&lt;p&gt;Gokil. Server gue udah jadi tambang orang, dan gue baru sadar gara-gara nanya iseng. Tahun 2026 emang penuh kejutan.&lt;/p&gt;&#10;&lt;h2 id="terus-masuknya-lewat-mana"&gt;Terus, Masuknya Lewat Mana?&lt;/h2&gt;&#10;&lt;p&gt;Ini bagian yang bikin gue pengen nelen MacBook.&lt;/p&gt;&#10;&lt;p&gt;Gue minta Claude telusurin: masuknya lewat SSH? Ada &lt;em&gt;backdoor&lt;/em&gt;? Ada user asing? Ternyata &lt;strong&gt;nggak ada satupun&lt;/strong&gt;. Nggak ada kunci SSH nyelonong, nggak ada user baru, nggak ada cron jahat. Host-nya bersih.&lt;/p&gt;&#10;&lt;p&gt;Lah terus gimana caranya si miner bisa nangkring?&lt;/p&gt;&#10;&lt;p&gt;Jawabannya: &lt;strong&gt;&lt;code&gt;dockhand&lt;/code&gt;. Yang gue install sendiri. Beberapa jam sebelumnya.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Jadi gini. &lt;code&gt;dockhand&lt;/code&gt; itu panel manajemen Docker yang cakep. Pas gue pasang, gue — dengan penuh percaya diri — expose dia ke internet di port &lt;code&gt;3000&lt;/code&gt; (&lt;code&gt;0.0.0.0&lt;/code&gt;, alias ke seluruh dunia), DAN gue kasih dia akses ke &lt;code&gt;docker.sock&lt;/code&gt;. Buat yang belum paham: ngasih panel akses ke &lt;code&gt;docker.sock&lt;/code&gt; itu sama aja ngasih dia kunci &lt;em&gt;root&lt;/em&gt; server. Dan gue taruh panel itu di pinggir jalan, nyala 24 jam, buat semua orang.&lt;/p&gt;&#10;&lt;p&gt;&amp;ldquo;TapGung, kan lo pasang password?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Iya. Gue pasang. &lt;strong&gt;Dan itu nggak ngaruh sama sekali.&lt;/strong&gt; Panel yang megang &lt;code&gt;docker.sock&lt;/code&gt; tapi nangkring di internet itu, password cuma jadi hiasan. Entah lewat celah di setup awal, entah lewat API yang nggak kejaga — yang jelas dalam hitungan jam, bot &lt;em&gt;scanner&lt;/em&gt; nemu panel gue, bikin container miner lewat situ, dan selamat datang di dunia &lt;em&gt;cryptojacking&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;Pelajaran mahal nomor satu: &lt;strong&gt;jangan pernah expose panel yang megang &lt;code&gt;docker.sock&lt;/code&gt; ke publik. Password bukan tembok. Itu cuma tirai.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="bersih-bersih-bareng-si-hero"&gt;Bersih-Bersih Bareng &amp;ldquo;Si Hero&amp;rdquo;&lt;/h2&gt;&#10;&lt;p&gt;Nah, bagian ini gue harus jujur. Yang bikin malem itu nggak berakhir jadi bencana beneran: gue nggak sendirian.&lt;/p&gt;&#10;&lt;p&gt;Biasanya di tulisan-tulisan gue, gue yang jadi tokoh utama dan AI jadi &lt;em&gt;sidekick&lt;/em&gt;. Kali ini gue balik. &lt;strong&gt;Malem itu, hero-nya si AI. Gue cuma yang panik dan ngasih izin &amp;ldquo;iya, hapus&amp;rdquo;.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Kita beresin satu-satu, rapi, nggak asal gas:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Bunuh &amp;amp; hapus&lt;/strong&gt; si miner, si proxyware, dan si watchtower zombie — plus &lt;code&gt;dockhand&lt;/code&gt; yang jadi biang keroknya.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Verifikasi beneran bersih.&lt;/strong&gt; Ini yang gue salut. Claude nggak cuma bilang &amp;ldquo;udah aman kok&amp;rdquo;. Dia ngejelasin: miner zaman sekarang sengaja ngumpet di dalam container biar lolos dari deteksi level host. Jadi dia cek sampai ke dalam tiap container yang masih jalan, cek CPU-nya, cek &lt;em&gt;image&lt;/em&gt;-nya ketuker atau nggak. Semuanya bersih. Baru dia berani bilang aman.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Pasang firewall&lt;/strong&gt; di host (yang selama ini — malu gue ngakuin — belum ada), yang ngerti Docker, dan permanen biar nggak hilang pas reboot.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;n8n gue kunci&lt;/strong&gt; cuma bisa diakses dari localhost. Nggak ada lagi panel nganga ke internet.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Rotasi semua kredensial&lt;/strong&gt; yang mungkin keintip selama server kebobol. Yang ini drama sendiri.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="drama-rotasi-token-buat-yang-suka-teknis"&gt;Drama Rotasi Token (Buat yang Suka Teknis)&lt;/h2&gt;&#10;&lt;p&gt;Gara-gara server sempet kebuka, gue anggap semua kunci yang ada di situ udah &amp;ldquo;kotor&amp;rdquo;. Yang paling penting: token API Twenty CRM. Gue cabut yang lama, bikin baru.&lt;/p&gt;&#10;&lt;p&gt;Masalahnya, token itu dipakai di mana-mana: di beberapa script Python, dan di &lt;strong&gt;semua workflow n8n&lt;/strong&gt; yang nerima lead. Begitu token lama gue cabut — &lt;em&gt;boom&lt;/em&gt; — lead tetep masuk ke n8n, tapi &lt;strong&gt;nggak nyampe ke CRM.&lt;/strong&gt; Raw-nya ketangkep, tapi nggak ke-update ke Twenty.&lt;/p&gt;&#10;&lt;p&gt;Dan di sini Claude nemu jebakan yang gue sendiri nggak kepikiran: ternyata n8n itu nggak cuma nyimpen workflow di satu tempat. Versi yang &lt;em&gt;aktif jalan&lt;/em&gt; diambil dari tabel &lt;code&gt;workflow_history&lt;/code&gt;, bukan dari kolom yang biasa lo edit. Jadi kita harus benerin &lt;strong&gt;dua-duanya&lt;/strong&gt;, baru restart. Gue mah udah mau nyerah di situ, jujur.&lt;/p&gt;&#10;&lt;p&gt;Puncaknya, biar nggak cuma teori, kita tes beneran: kirim satu lead palsu lewat webhook, pastiin dia &lt;strong&gt;nyampe ke CRM&lt;/strong&gt; lengkap sama &lt;code&gt;leadGateway&lt;/code&gt;-nya, terus hapus lagi si data tes biar nggak ngotorin. Dan&amp;hellip; masuk. Lead-nya nyampe. Gue bisa tidur.&lt;/p&gt;&#10;&lt;h2 id="pelajaran-yang-gue-telen-bulat-bulat"&gt;Pelajaran yang Gue Telen Bulat-Bulat&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;1. Kenyamanan itu ada harganya.&lt;/strong&gt; Gue pasang &lt;code&gt;dockhand&lt;/code&gt; biar gampang. &amp;ldquo;Biar gampang&amp;rdquo; itu sering jadi awal dari &amp;ldquo;biar dibobol&amp;rdquo;. Tiap kali lo expose sesuatu ke internet demi praktis, tanya dulu: ini kalau jatuh ke tangan orang jahat, rugi gue separah apa?&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. Password bukan arsitektur keamanan.&lt;/strong&gt; Kalau desainnya udah salah (panel root nganga ke publik), password cuma nunda yang nggak bisa ditunda.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;3. &amp;ldquo;Bersih&amp;rdquo; itu harus dibuktiin, bukan diasumsiin.&lt;/strong&gt; Gue salut Claude maksa cek sampai ke dalam container, bukan cuma level permukaan. Karena pola serangan sekarang emang sengaja main di celah yang alat biasa nggak liat.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;4. Kolaborasi sama AI itu beneran kepake pas genting.&lt;/strong&gt; Gue sering nulis soal gimana AI bantu gue kerja lebih cepet — kayak yang gue ceritain di &lt;a href="https://agungsukariman.com/blog/gue-menang-q1-mr-whai-award-di-smart-salary/"&gt;artikel Mr. WHAI Award&lt;/a&gt;. Tapi malem itu beda rasanya. Ini bukan soal bikin campaign lebih efisien. Ini soal &lt;em&gt;incident response&lt;/em&gt; jam 2 pagi, pas gue panik, dan ada &amp;ldquo;partner&amp;rdquo; yang tetep tenang, metodis, dan nggak kelewatan satu langkah pun. Gue yang ceroboh masang pintunya; tapi gue ketolong karena gue nggak ngadepin sendirian.&lt;/p&gt;&#10;&lt;h2 id="terus-sekarang-gimana"&gt;Terus Sekarang Gimana?&lt;/h2&gt;&#10;&lt;p&gt;Server udah bersih, firewall udah jalan, token udah dirotasi, lead udah ngalir lagi ke CRM. Masih ada PR sih — beberapa kredensial lain yang harus gue rotasi juga (besok, pas gue nggak ngantuk). Tapi api-nya udah padam.&lt;/p&gt;&#10;&lt;p&gt;Dan gue nulis ini bukan buat pamer — justru kebalikannya. Gue mau lo semua yang suka &lt;em&gt;ngoprek&lt;/em&gt; VPS belajar dari kebegoan gue: &lt;strong&gt;panel manajemen itu jangan pernah lo buka ke publik.&lt;/strong&gt; Titik. Taruh di balik localhost, akses lewat SSH tunnel, atau kasih &lt;em&gt;IP allowlist&lt;/em&gt;. Jangan kayak gue yang mesti kena tambang Monero dulu baru insaf.&lt;/p&gt;&#10;&lt;p&gt;Buat lo yang masih ragu adopsi AI ke workflow: gue makin yakin. Bukan karena AI bikin gue nggak pernah salah — lha wong gue sendiri yang masang lubangnya. Tapi karena pas gue salah, gue punya partner yang bantuin beresin dengan kepala dingin.&lt;/p&gt;&#10;&lt;p&gt;Malem itu gue ketiduran dengan tenang. Dan kali ini, hero-nya bukan gue. Makasih, partner. 🫡&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Cheers (dan sekarang paranoid soal port terbuka),&#10;Agung Sukariman&lt;/strong&gt;&lt;/p&gt;&#10;</content:encoded></item></channel></rss>