APRAŠYMAS
Pirma diena naujame serveryje. Prisijungiate per SSH — ir priešais jus juodas ekranas su mirksančiu žymekliu. Jokių mygtukų, jokių meniu, jokio failų naršyklės. Tik komandinė eilutė. Būtent čia prasideda tikras darbas su Linux. Komandinė eilutė nėra nepatogus praeities reliktas — tai greičiausias ir tiksliausias serverio valdymo įrankis. Per 15 minučių naršysite sistemą kaip savo namuose.
KO IŠMOKSITE
Kaip naršyti failų sistemoje
Kaip dirbti su failais ir direktorijomis
Kaip skaityti failų turinį
Kaip ieškoti failų ir teksto juose
Kaip gauti pagalbą tiesiai terminale
Kurios komandos yra kritiškai svarbios saugumo analizei
NAVIGACIJA
Pirmas dalykas, kurį reikia žinoti — kur esate. Linux sistemoje visada esate kažkokioje direktorijoje — tai vadinama darbo direktorija.
pwd — parodo kur esate dabar. Print Working Directory. Paleiskite šią komandą kaskart kai prarandate orientaciją.
cd — keičia direktoriją. Change Directory. Pagrindinė navigacijos komanda.
pwd # kur aš esu?
cd /etc # eiti į /etc
cd .. # eiti vienu lygiu aukštyn
cd ~ # eiti į namų direktoriją
cd - # grįžti į ankstesnę direktoriją
cd /var/log/nginx # eiti absoliučiu keliu
ls — failų ir direktorijų sąrašas. Dažniausiai naudojama komanda Linux sistemoje.
ls # paprastas sąrašas
ls -l # išsamus sąrašas su teisėmis, dydžiu, data
ls -la # įskaitant paslėptus failus (pradedančius tašku)
ls -lh # dydžiai žmonėms suprantamu formatu (KB, MB, GB)
ls -lt # rūšiavimas pagal modifikavimo laiką
ls -ltr # rūšiavimas pagal laiką, seniausi pirmi
ls /etc/ssh # konkrečios direktorijos sąrašas
Paslėpti failai Linux sistemoje prasideda tašku — .bashrc, .ssh, .config. Jie nerodomi naudojant paprastą ls. Žymė -a rodo juos visus. Užpuolikai dažnai slepia savo įrankius būtent šiuose paslėptuose failuose ir direktorijose.
DARBAS SU FAILAIS IR DIREKTORIJOMIS
mkdir logs # sukurti direktoriją
mkdir -p /opt/app/logs # sukurti visą direktorijų grandinę
touch file.txt # sukurti tuščią failą
cp file.txt backup.txt # kopijuoti failą
cp -r /etc/nginx /tmp/nginx-backup # kopijuoti direktoriją rekursyviai
mv file.txt newname.txt # pervadinti failą
mv file.txt /tmp/ # perkelti failą
rm file.txt # ištrinti failą
rm -rf /tmp/old-dir # ištrinti direktoriją su visu turiniu
Apie rm -rf reikia kalbėti atskirai. Tai viena pavojingiausių komandų Linux sistemoje. Šiuolaikinėse sistemose rm -rf / yra apsaugota — sistema išmes klaidą „Operation not permitted”. Tačiau rm -rf /tmp/mydir/ arba rm -rf /var/www/ — ištrina viską be klausimų ir be galimybės atkurti. Vienas papildomas tarpas ar pasvirasis brūkšnys — ir galite sunaikinti svarbius duomenis. Visada patikrinkite kelią prieš vykdydami — paleiskite ls tame kelyje, kurį ketinate ištrinti.
FAILŲ SKAITYMAS
cat /etc/hostname # išvesti visą failą
cat /etc/ssh/sshd_config # perskaityti SSH konfigūraciją
less /var/log/auth.log # puslapinis peržiūra (q išeiti)
head /var/log/syslog # pirmosios 10 failo eilučių
head -20 /var/log/syslog # pirmosios 20 eilučių
tail /var/log/auth.log # paskutinės 10 eilučių
tail -50 /var/log/auth.log # paskutinės 50 eilučių
tail -f /var/log/auth.log # stebėti failą realiuoju laiku
tail -f — komanda, kurią nuolat naudosite stebėjimui. Ji rodo naujas log eilutes realiuoju laiku, kai tik jos atsiranda. Paleiskite tail -f /var/log/auth.log ir stebėkite prisijungimo bandymus dabar pat.
FAILŲ IR TEKSTO PAIEŠKA
# failų paieška
find / -name "sshd_config" # rasti failą pagal pavadinimą
find /etc -name "*.conf" # rasti visus .conf failus /etc
find /tmp -type f -newer /tmp/marker # failai naujesni nei marker
find / -perm -4000 -type f # rasti visus SUID failus (svarbu saugumui!)
find /home -name "*.key" -o -name "*.pem" # rasti raktus ir sertifikatus
# teksto paieška failuose
grep "Failed password" /var/log/auth.log # rasti nesėkmingus prisijungimus
grep -r "password" /etc/ # rekursinė paieška direktorijoje
grep -i "error" /var/log/nginx/error.log # neatsižvelgiant į registrą
grep -n "root" /etc/passwd # su eilučių numeriais
grep -v "^#" /etc/ssh/sshd_config # išskirti komentarų eilutes
find / -perm -4000 — komanda, kurią verta įsiminti. SUID failai vykdomi su savininko teisėmis, o ne vartotojo, kuris juos paleido. Užpuolikai ieško SUID failų norėdami gauti root teises. Turite žinoti, kokie SUID failai yra jūsų sistemoje ir kodėl.
PRIEIGOS TEISĖS IR NUOSAVYBĖ
ls -la /etc/ssh/sshd_config # peržiūrėti failo teises
chmod 600 ~/.ssh/id_rsa # nustatyti teises privačiam raktui
chmod 755 /usr/local/bin/script.sh # padaryti scenarijų vykdomą
chown user:group file.txt # pakeisti failo savininką
chown -R www-data:www-data /var/www # rekursyviai direktorijai
ls -la išvestis skaitoma taip: -rwxr-xr-- — pirmas simbolis yra failo tipas (- failas, d direktorija, l nuoroda), tada trys teisių grupės savininkui, grupei ir visiems kitiems. r — skaitymas, w — rašymas, x — vykdymas.
PAGALBOS GAVIMAS
Nereikia atmintinai žinoti visų kiekvienos komandos žymių. Reikia žinoti kaip rasti reikiamą informaciją tiesiai terminale.
man ls # pilna komandos dokumentacija
man ssh # SSH dokumentacija
ls --help # trumpa pagalba
info ls # alternatyvus dokumentacijos formatas
whatis ls # viena eilutė — ką daro komanda
which nginx # kur yra vykdomasis failas
type cd # komandos tipas (integruota, išorinė, alias)
man — jūsų geriausias draugas. Bet kokia problema su komanda — pirmiausia man. Man viduje: tarpas — kitas puslapis, b — ankstesnis, /žodis — paieška, q — išeiti.
NAUDINGOS KOMBINACIJOS
# konvejeris — vienos komandos išvesties perdavimas kitai
ls -la /etc | grep "ssh" # rasti ssh failus /etc
cat /var/log/auth.log | grep "Failed" | wc -l # suskaičiuoti nesėkmingus prisijungimus
ps aux | grep nginx # rasti nginx procesus
# išvesties nukreipimas
ls -la /etc > /tmp/etc-list.txt # išsaugoti išvestį į failą
grep "error" /var/log/nginx/error.log >> /tmp/errors.txt # pridėti prie failo
cat /etc/nonexistent 2>/dev/null # slopinti klaidas
KOMANDŲ ISTORIJA
history # visų vykdytų komandų sąrašas
history | grep ssh # paieška istorijoje
!! # pakartoti paskutinę komandą
!grep # pakartoti paskutinę komandą pradedančią grep
Ctrl+R # interaktyvi paieška istorijoje
Komandų istorija saugoma ~/.bash_history. Tiriant incidentus — tai vertingas informacijos šaltinis apie tai, ką darė vartotojas. Užpuolikai dažnai išvalo istoriją komanda history -c arba ištrina ~/.bash_history. Tuščia vartotojo istorija — priežastis susirūpinti.
DAŽNIAUSIOS KLAIDOS
/ ir ~ painiojimas. / — failų sistemos šaknis. ~ — dabartinio vartotojo namų direktorija. cd / ir cd ~ veda į visiškai skirtingas vietas.
rm be kelio patikrinimo. Visada paleiskite ls tame kelyje, kurį ketinate ištrinti — įsitikinkite, kad ten yra būtent tai, ką norite ištrinti. rm -rf yra neatšaukiama.
man ignoravimas. Pusė klausimų „kaip padaryti X Linux sistemoje” išsprendžiama per 30 sekundžių skaitant man. Įpratinkite save skaityti dokumentaciją tiesiai terminale.
Darbas / arba /etc be reikalo. Visada žinokite kur esate (pwd) prieš vykdydami komandas su rm, mv, cp.
SVARBU ŽINOTI
Tab — automatinis papildymas. Pradėkite vesti kelią ar komandą ir paspauskite Tab. Linux papildys automatiškai. Dvigubas Tab — parodys visus variantus. Naudokite nuolat — taupo laiką ir neleidžia padaryti klaidų rašant.
Ctrl+C — sustabdyti vykdomą komandą. Ctrl+D — išeiti iš dabartinės sesijos ar interpretatoriaus. Ctrl+L — išvalyti ekraną.
Rodyklės aukštyn/žemyn — judėjimas per komandų istoriją. Niekada neveskite to paties du kartus.
Taškas failo pavadinimo pradžioje daro jį paslėptu. .bashrc, .ssh, .config — normalūs paslėpti failai. .malware, .backdoor — raudonos vėliavėlės, kurių reikia ieškoti atliekant auditą.
PATIKRINKITE SAVE
1. Kuri komanda parodo dabartinę darbo direktoriją?
2. Kaip rodyti paslėptus failus naudojant ls?
3. Kuo skiriasi tail nuo tail -f?
4. Ką daro komanda find / -perm -4000 ir kodėl ji svarbi saugumui?
5. Kur saugoma vartotojo komandų istorija ir kodėl tai svarbu tiriant incidentus?
IŠVADOS
Linux komandinė eilutė nėra baisu ir nesudėtinga. Keliolika komandų apima 80% kasdienių administratoriaus užduočių. pwd ir ls orientacijai, cat ir tail failams skaityti, grep ir find paieškai, man viskam kitam. Šios komandos — jūsų bazinis įrankių rinkinys visais atvejais. Kuo greičiau jos taps refleksu — tuo greičiau reaguosite kai kažkas neis ne taip.