Nilianza na daftari. Sio programu ya kuhariri maandishi au faili ya markdown, bali daftari la karatasi lenye mzunguko (spiral-bound) lililojaa amri ambazo sikuelewa. Niliandika ls, grep, find, chmod, na nmap. Niliweka kurasa baada ya kurasa zikiwa zimejaa sintaksi, nikichukulia Linux na usalama wa mtandao kama mitihani ya msamiati, kana kwamba kujua 'flags' nyingi kuliko mtu mwingine kunanifanya niwe stadi. Niliweza kunakili sintaksi kwa ufasaha. Lakini, uniombe nieleze kwa nini amri ilitoa matokeo fulani, ningekuwa mnyamavu. Kimya hicho ndicho kilikuwa tatizo.

Mtego wa Daftari

Daftari lilionekana kama ishara ya maendeleo. Kila ukurasa uliongeza wino zaidi: find / -name "*.conf", nmap -sV, grep pamoja na 'pipes' na 'regular expressions'. Katika mafunzo (tutorials), mbinu hii inaonekana kufanya kazi. Mwasilishaji anachapa amri, skrini inaonyesha matokeo yanayotarajiwa, na wewe unaitikia kwa kichwa. Unajihisi una uwezo kwa sababu terminal yako inafanana na yake sawia. Lakini uwezo huu ni wa mkopo. Unamilikiwa na mtu aliyesanifu njia ya mafunzo hiyo.

Mazingira halisi hayafuati 'scripts'. Seva inakataa muunganisho wako wa SSH ingawa 'port' iko wazi. 'Script' inafeli kwa kusema "permission denied" baada ya wewe tayari kuendesha chmod +x. 'Scan' inaripoti 'port' kama 'filtered' badala ya 'open', na sasa unapaswa kuamua ikiwa hiyo inamaanisha sheria ya 'firewall', udhibiti wa kwenye 'host', au mfumo wa kuzuia uingiliaji (intrusion prevention system) unaofuta 'probes' zako kimyakimya. Katika nyakati hizo, kukariri sintaksi hukwama kwa sababu tatizo si amri uliyosahau. Ni mfumo ambao huelewi.

Kunakili Si Kujifunza

Kuna tofauti kati ya kufuata mafunzo na kutatua tatizo. Unaponakili, unahamia kutoka Hatua A kwenda Hatua B kwenye ramani ya mtu mwingine. Kitu kinapopotoka, unakwama kwa sababu mfumo wako wa kiakili ni mtupu. Unajua kwamba chmod 755 inabadilisha ruhusa, lakini huwezi kueleza kwa nini mfumo bado unazuia ufikiaji wakati faili lipo kwenye 'mount' yenye 'flag' ya noexec. Unajua nmap inaweza kufanya 'scan' ya 'ports', lakini huwezi kutafsiri kwa nini 'SYN scan' inarudisha matokeo tofauti na 'connect scan' wakati 'stateful inspection' inahusika.

Huku hukuwa unajifunza Linux au mitandao. Ulikuwa unajifunza kuiga tu.

Badili Swali

Nilibadilisha kitu kimoja. Niliacha kuuliza "ni amri gani inayotatua hili?" na nikaanza kuuliza "mfumo unafanya nini hasa?" Mabadiliko hayo yalikuwa magumu kwa sababu yalinifanya nitembee polepole. Lakini yalikaa.

Chukulia ruhusa za faili. chmod si ombi la namba za ajabu. Ni tabaka la juu la jinsi 'kernel' inavyosimamia ufikiaji wa 'inodes'. Unapoelewa kwamba mfumo wa uendeshaji unakagua 'effective user ID' yako dhidi ya mmiliki wa faili, kikundi, na wengine, namba hizo zinaeleweka. Unapojifunza kwamba ruhusa za diziti (directory permissions) zinadhibiti ikiwa unaweza kupita kwenye njia fulani au kuorodhesha maudhui yake, unaacha kujiuliza kwa nini unaweza kusoma faili lakini huwezi kuifikia. Unagundua kwamba ruhusa ya kutekeleza (execute permission) kwenye diziti si kuhusu kuendesha programu; ni kuhusu kuruhusiwa kufikia 'inodes' zilizomo ndani. Ghafla, chmod haihitaji kukaririwa. Inahitaji muktadha.

Misingi ya mitandao hufanya vivyo hivyo kwa nmap. 'Port scan' si orodha ya milango iliyo wazi; ni mazungumzo yanayoundwa na 'packets'. Unapoelewa 'TCP three-way handshake', unaelewa kwa nini 'SYN scan' inahitaji 'raw socket privileges' na kwa nini 'port' iliyofungwa inajibu kwa 'RST' wakati 'filtered' inaweza kukupa kitu chochote. Unaacha kukariri mchanganyiko wa 'flags' na unaanza kufikiria kuhusu 'packets' unazotuma na maana ya ukimya au kelele.

Hata zana za tabaka la programu (application-layer) kama Burp Suite zinaeleweka mara tu unapoelewa HTTP. Ni 'proxy' tu iliyopo kati yako na seva ya wavuti. Ikiwa huelewi mbinu za HTTP, 'headers', 'status codes', na jinsi maombi (requests) yanavyohusiana na mantiki ya upande wa seva, Burp Suite ni dashibodi ya vitufe inayochanganya. Mara tu unapojua jinsi ombi linavyosafiri na jinsi seva inavyounda jibu, zana hiyo inakuwa dhahiri. Hujajifunza Burp Suite. Unachunguza HTTP kwa kutumia Burp Suite.

Jenga Msingi

Ikiwa unaanza, zuia hamu ya kukusanya 'cheatsheets'. Lenga maeneo matatu ambayo hayatazamwi kuwa ya kizamani.

Kwa misingi ya Linux, jifunze jinsi 'kernel' inavyopanga michakato (processes), jinsi 'shell' inavyochanganua amri, na jinsi 'environment variables' zinavyoathiri tabia ya programu. Elewa stdin, stdout, na stderr si kama maarifa ya ziada bali kama mifumo ya mabomba (plumbing) inayofanya 'pipes' zifanye kazi.

Kwa itifaki za mitandao (networking protocols), soma 'TCP/IP stack' bila kuharakisha