Lista kroków do nauki cyberbezpieczeństwo:
- Przestać używać słowa
cyber
. Większość (wszyscy?) technicznych ludzi od IT security używa go najwyżej ironicznie. Poważnie, to bardzo głupio brzmi :P.
Alternatywy: bezpieczeństwo IT
, bezpieczeństwo oprogramowania
, bezpieczeństwo teleinformatyczne
, bezpieczeństwo sieciowe
i inne (lepiej brzmią po angielsku though).
- Zdecydowanie się co konkretnie w security chce się robić - albo chociaż byciem świadomym alternatyw.
To szeroka branża i z osób w moim pokoju można spokojnie zebrac 4 osoby z których każda ma zupełnie inne skille i robi zupełnie co innego, a wszystkie technicznie pracują w bezpieczeństwie.
To znaczy wyobrażałem sobie, że praca specjalisty od cyberbezpieczeństwa polega na zarządzaniu sieciami, a dodatkowo dochodzi do tego tzw. "legalny włam"
Przykładowo, największa sieć którą zarządzałem to mój domowy router :P. (ok, na takim 4p jest wirtualna sieć /16, ale to sie nie liczy)
Z ważniejszych nurtów:
-
Reverse Engineering
- niskopoziomowa analiza programów binarnych. Najważniejsza: znajomość asemblera, niskopoziomowych języków typu c, obsługi debuggerów/disasemblerów, działania systemu operacyjnego.
-
Binary Exploitation
- niskopoziomowe szukanie dziur w programach. Najważniejsze: wszystko to co na Reverse Engineering
, plus fuzzowanie i inna automatyzacja, plus techniki exploitacji podatności.
-
Bezpieczeństwo aplikacji webowych
- włamywanie się/naprawianie luk na stronach. Najważniejsze: znajomość protokołów sieciowych (głownie HTTP), javascriptu, modelu bezpieczeństwa web, najlepiej PHP, SQL i całej rodziny.
-
Bezpieczeństwo sieci
- fancy nazwa na admina mającego pojęcie że jest coś takiego jak security :P. Najważniejsze: bycie adminem, plus dobra znajomość linuxa i jego hardeningu (i ratowania systemu w razie ataku)
-
Audyty kodu źródłowego
- przeglądanie kodu źródłowego, często też ustalanie procedur/procesów/norm/takich tam. Najważniejsze: wysokopoziomowe rozumienie jak powstają błędy, dobra znajomość swojego języka, znajomość klas podatnośći i jak powstają błędy
-
Forensics
- informatyka śledcza. Najważniejsze: znajomość formatów plików, orientowanie sie co może się znajdować w RAM/HDD i gdzie (najlepiej: internalsy systemu) no i procedur do obsługiwania się z nimi (typu: obsługa blokera).
-
Kryptografia
- pominę bo nie o to Ci chodzi pewnie :P
I pewnie jeszcze parę rzeczy by sie dało wyróżnić. Każda z tych to spokojnie może być ścieżka kariery i nie da rady się w całości jej nauczyć.
Oczywiście nie trzeba robić jednej (/me by się podpisał pod kilkoma, bo wszystko ciekawe ;], ale nie da się robić wszystkiego.
- Rozpoczęcie nauki
Odnosząc moje specjalizacje do Twoich punktów:
-
nauka systemu operacyjnego Linux
- tylko dla admina w zasadzie ściśle potrzebne. Ale dobra znajomość obsługi linuxa z punktu widzenia użytkownika to coś jak umiejętność czytania bez mówienia na głos u dorosłego - da się jakoś żyć bez, ale bardzo głupio to wygląda. Szczególnie że to nic trudnego ;].
-
programowanie, mam tutaj na myśli głównie język Python, mniej PHP
- umiejętnośc skryptowania w czymś się przydaje w zasadzie zawsze. No i python to dobry wybór niezależnie czy dla programisty czy do security. Polecam niezależnie od wyboru drogi ;].
-
SQL i bazy danych (rzecz jasna ten temat musiałbym umieć bardzo dobrze)
- z tym bardzo dobrze to bym nie przesadzał. Naprawdę ważne tylko dla ludzi od web security (i trochę dla admina ofc).
-
Bardziej szczegółowe działanie Windowsa
- niewiele mówiący punkt ;]. Zupełnie inne rzeczy są ciekawe z punktu widzenia forensics, a inne dla reverse engineera, a inne dla admina. O ile nie planujesz pisać własnego rootkita (spoiler: obecnie bardzo trudne, oraz i tak nie warto) to raczej nie szedłbym w to na początku. Oczywiście podstawy jak procesy, wątki, pamięc wirtualna to podstawa, ale no.
-
sieci komputerowe
- dobrze wiedzieć jak działają sieci, ale nie przesadzałbym na razie. Przy web app security to jest zbyt niskopoziomowe, a przy RE zazwyczaj nieważne.
-
inżynieria wsteczna
- tylko dla inżyniera wstecznego
-
kryptografia
- tylko dla kryptografa
-
poznanie technologii serwerów (Windows Server i tym podobne)
- po co O_o. Chyba że chesz być adminem Windows Serverów, ale nie polecam.
(podaj która specjalizacja Cię interesuje to napiszę więcej)