Saya memulai dengan sebuah buku catatan. Bukan editor teks atau file markdown, melainkan buku catatan kertas berjilid spiral yang penuh dengan perintah yang tidak saya mengerti. Saya menuliskan ls, grep, find, chmod, dan nmap. Saya menumpuk halaman demi halaman dengan sintaks, memperlakukan Linux dan keamanan siber seperti tes kosakata, seolah-olah mengetahui lebih banyak flag daripada orang lain membuat saya kompeten. Saya bisa menyalin sintaks dengan lancar. Namun, jika Anda meminta saya menjelaskan mengapa sebuah perintah memberikan hasil tertentu, saya akan terdiam. Keheningan itulah masalahnya.
Jebakan Buku Catatan
Buku catatan itu tampak seperti sebuah kemajuan. Setiap halaman menambah lebih banyak tinta: find / -name "*.conf", nmap -sV, grep dengan pipe dan ekspresi reguler. Dalam tutorial, pendekatan ini tampak berhasil. Seorang presenter mengetikkan perintah, layar menunjukkan output yang diharapkan, dan Anda mengangguk setuju. Anda merasa mampu karena terminal Anda persis sama dengan milik mereka. Namun, kompetensi ini hanyalah pinjaman. Itu milik orang yang merancang jalur tutorial tersebut.
Lingkungan nyata tidak mengikuti skrip. Sebuah server menolak koneksi SSH Anda meskipun portnya terbuka. Sebuah skrip gagal dengan pesan "permission denied" padahal Anda sudah menjalankan chmod +x. Sebuah pemindaian melaporkan port sebagai filtered alih-alih open, dan sekarang Anda harus memutuskan apakah itu berarti aturan firewall, kontrol berbasis host, atau sistem pencegahan intrusi yang secara diam-diam menjatuhkan probe Anda. Di saat-saat seperti itu, menghafal sintaks akan gagal karena masalahnya bukan pada perintah yang Anda lupakan. Masalahnya adalah sistem yang tidak Anda pahami.
Meniru Bukanlah Belajar
Ada perbedaan antara mengikuti tutorial dan memecahkan masalah. Saat Anda menyalin, Anda berpindah dari Langkah A ke Langkah B pada peta milik orang lain. Ketika sesuatu menyimpang, Anda membeku karena model mental Anda kosong. Anda tahu bahwa chmod 755 mengubah izin, tetapi Anda tidak dapat menjelaskan mengapa sistem tetap memblokir akses ketika file tersebut berada pada mount dengan flag noexec. Anda tahu nmap dapat memindai port, tetapi Anda tidak dapat menafsirkan mengapa pemindaian SYN memberikan hasil yang berbeda dari pemindaian connect saat inspeksi stateful terlibat.
Anda tidak sedang mempelajari Linux atau jaringan. Anda sedang belajar meniru.
Balikkan Pertanyaannya
Saya mengubah satu hal. Saya berhenti bertanya "perintah mana yang memperbaiki ini?" dan mulai bertanya "apa yang sebenarnya dilakukan oleh sistem?" Perubahan ini terasa tidak nyaman karena memperlambat saya. Namun, perubahan itu bertahan.
Ambil contoh izin file. chmod bukanlah doa angka ajaib. Itu adalah lapisan permukaan dari bagaimana kernel memediasi akses ke inode. Ketika Anda memahami bahwa sistem operasi memeriksa ID pengguna efektif Anda terhadap pemilik, grup, dan orang lain pada file tersebut, angka-angka itu menjadi masuk akal. Ketika Anda mempelajari bahwa izin direktori mengontrol apakah Anda dapat menelusuri jalur atau mencantumkan isinya, Anda berhenti bertanya-tanya mengapa Anda dapat membaca file tetapi tidak dapat menjangkaunya. Anda menyadari bahwa izin eksekusi pada direktori bukan tentang menjalankan program; ini tentang diizinkan untuk mengakses inode di dalamnya. Tiba-tiba, chmod tidak perlu dihafal. Ia membutuhkan konteks.
Dasar-dasar jaringan melakukan hal yang sama untuk nmap. Pemindaian port bukanlah daftar pintu yang terbuka; itu adalah percakapan yang terdiri dari paket-paket. Ketika Anda memahami TCP three-way handshake, Anda mengerti mengapa pemindaian SYN memerlukan hak istimewa raw socket dan mengapa port yang tertutup merespons dengan RST sementara port yang terfilter mungkin tidak memberikan respons sama sekali. Anda berhenti menghafal kombinasi flag dan mulai menalar tentang paket apa yang Anda kirim dan apa arti dari keheningan atau kebisingan tersebut.
Bahkan alat lapisan aplikasi seperti Burp Suite akan terasa masuk akal setelah Anda memahami HTTP. Ia hanyalah sebuah proxy yang duduk di antara Anda dan server web. Jika Anda tidak memahami metode HTTP, header, kode status, dan bagaimana permintaan dipetakan ke logika sisi server, Burp Suite hanyalah dasbor tombol yang membingungkan. Begitu Anda tahu bagaimana sebuah permintaan melakukan perjalanan dan bagaimana server membangun respons, alat tersebut menjadi jelas. Anda tidak sedang mempelajari Burp Suite. Anda sedang memeriksa HTTP dengan Burp Suite.
Bangun Fondasinya
Jika Anda baru memulai, tahanlah keinginan untuk mengumpulkan cheatsheet. Fokuslah pada tiga bidang yang tidak akan pernah usang.
Untuk dasar-dasar Linux, pelajari bagaimana kernel menjadwalkan proses, bagaimana shell mengurai perintah, dan bagaimana variabel lingkungan memengaruhi perilaku program. Pahami stdin, stdout, dan stderr bukan sebagai trivia, melainkan sebagai sistem perpipaan yang membuat pipe berfungsi.
Untuk protokol jaringan, pelajari tumpukan TCP/IP tanpa terburu-buru
