Instalarea Centos de programe cu drepturi de superutilizator. Comanda $ sudo options. Creați roata de grup

1. Folosind comanda: su

Multe comenzi pot fi rulate doar de superutilizator, așa că trebuie să știm cum să devenim root. Pentru a face acest lucru putem folosi comanda: su (switch user). Comanda su acceptă următoarele formate:

dar cel mai adesea vom folosi su pentru a deveni utilizator rădăcină:

Su - rădăcină

Dacă numele de utilizator nu este specificat pe linie, se presupune automat că utilizatorul este root, astfel încât comanda poate fi scurtată:

dar ambele echipe se comportă diferit. „su” oferă utilizatorului curent o identitate, în timp ce „su -” oferă utilizatorului curent o identitate împreună cu împrejurimile care ar fi obținute prin înregistrarea ca.

Adesea utilizatorii folosesc „su” pentru a deveni root. Dacă încercați să rulați o comandă (de exemplu - ifconfig), veți primi: „comandă nu a fost găsit" eroare.

Su Parola: ifconfig bash: ifconfig: comanda nu a fost găsită

Motivul este că utilizatorii obișnuiți de sistem și utilizatorul root au variabile de mediu PATH diferite (puteți vizualiza PATH-ul utilizatorului folosind „echo $PATH”) comenzi Linux, shell-ul va căuta PATH-ul utilizatorului pentru a încerca să găsească o comandă de rulat. Începe să caute în fiecare director listat în PATH până când ținta este găsită.

Comenzile de utilizator obișnuite sunt de obicei localizate în /usr/local/bin, /usr/bin și /bin. Iar comenzile utilizatorului root sunt localizate în principal în /usr/local/sbin, /usr/sbin, /sbin și PATH rădăcină reflectă acest lucru. Deci, atunci când devii superutilizator cu „su -”, alegi și o nouă cale pentru comenzile tale principale. Și folosind doar „su”, este salvată PATH implicită de utilizator, prin urmare, atunci când încercați să executați un program situat în /usr/local/sbin, /usr/sbin, /sbin va produce rezultatul: eroare „comandă nu a fost găsită”. . Pentru o explicație mai detaliată, consultați pagina man bash, în special secțiunea shell-uri de conectare.

Deci tu sau ar trebui să indicați calea plină la comanda (exemplu - /sbin/ifconfig) când utilizați „su”, sau folosiți „su -” când deveniți root.

2. Folosind Sudo

Nu trebuie să fii un superutilizator de fiecare dată când vrei să rulezi anumite funcții administrative. Mulțumită Sudo, puteți rula unele sau toate comenzile ca root. Când Sudo instalat (pachet: Sudo), îl puteți configura folosind comanda „visudo” ca root. Practic editează (implicit Vim) /etc/sudoers, dar nu este recomandat să faceți acest lucru manual.

Alex TOȚI=(TOȚI)TOȚI

Alex este numele de utilizator. Salvați (apăsați pe Escape apoi tastați wq) și ați terminat. Conectați-vă ca alex și rulați, de exemplu:

$sudo yum actualizare

Sudo va cere o parolă. Aceasta este parola lui Alex, nu a utilizatorului root. Prin urmare, aveți grijă când acordați drepturi de utilizator cu Sudo.

Dar Sudo poate face mai mult decât atât. Putem permite unui utilizator sau grup de utilizatori să execute o singură comandă sau un grup de comenzi. Să revenim la dosarul nostru sudoers. Să începem cu alex și alisa, membri ai grupului de administratori. Dacă dorim ca toți utilizatorii din grupul „administrator” să poată rula fiecare comandă ca superutilizator, trebuie să ne modificăm exemplul:

%admin ALL=(ALL)ALL

Alex poate executa și o comandă de superutilizator, iar Alisa are dreptul de a rula Sudo, cu aceleași drepturi și parola ei. Dacă alex și alisa nu sunt membri ai aceluiași grup, putem defini aliasul utilizatorului în fișierul sudoers:

User_Alias ​​​​ADMINS = aliasa,alex

Aici am definit un alias numit ADMINS, cu membrii alisa și alex.

Cu toate acestea, nu dorim ca Alex și Alisa să poată rula vreun program ca root. Dorim ca ei să poată rula doar „updatedb”. Să definim un alias de comandă:

Cmnd_Alias ​​​​LOCATE = /usr/sbin/updatedb

Dar asta nu este suficient! Trebuie să îi spunem lui Sudo că utilizatorii definiți ca ADMINS pot rula comenzi specificate în LOCATE. Pentru a face acest lucru, vom înlocui liniile cu „%admin” cu acestea:

ADMINS ALL = LOCATE

Aceasta înseamnă că utilizatorii din aliasul ADMINS pot rula toate comenzile din aliasul LOCATE.

De data aceasta, /etc/sudoers arată astfel:

User_Alias ​​​​ADMINS = alisa, alex Cmnd_Alias ​​​​LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE

Ca rezultat, alex și alisa pot rula updatedb ca root introducând parola lor.

Dacă modificați ultima linie din fișier:

ADMINS ALL = NOPASSWD:LOCATE

atunci alex și alisa vor putea executa „sudo updatedb” fără a introduce o parolă.

Puteți adăuga mai multe comenzi la un alias de comandă și mai multe alias-uri la o regulă. De exemplu, putem crea un alias NETWORKING care să conțină câteva comenzi de rețea tip: ifconfig, route sau iwconfig:

Cmnd_Alias ​​​​NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin /iwconfig, /sbin/mii-tool

Să adăugăm toate acestea în fișierul nostru /etc/sudoers (folosind visudo!). De asemenea, vom acorda grupului nostru ADMINS drepturile de a executa programe din alias-ul NETWORKING:

User_Alias ​​​​ADMINS = alice, bob Cmnd_Alias ​​​​LOCATE = /usr/bin/updatedb Cmnd_Alias ​​​​NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net ,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINISTRĂRI TOȚI = LOCATE, NETWORKING

Un test rapid: conectați-vă ca alisa (sau alex) și tastați:

$ping -c 10 -i localhost

Răspunsul ar trebui să revină rapid:

PING localhost.localdomain (127.0.0.1) 56(84) octeți de date. ping: nu poate inunda; intervalul minim, permis utilizatorului, este de 200 ms

Acum, același lucru, dar cu Sudo:

$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) octeți de date. 64 de octeți de la localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 de octeți de la localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 de octeți de la localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes din localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes din localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=47 time=0.016 ms 64 bytes din localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes din localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms de la localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms --- localhost.localdomain statistics ping --- 10 pachete transmise, 10 primite, 0% pierdere de pachete, timp 1ms rtt min/avg/ max/mdev = 0,016/0,023/0,049/0,010 ms, ipg/ewma 0,187/0,028 ms

Sudo adesea folosit pentru a acorda anumitor utilizatori acces parțial la comenzile privilegiate, astfel încât aceștia să poată îndeplini funcții administrative limitate. Una dintre facilități Sudo este că toate comenzile sunt scrise în /var/log/secure. Exemplul de mai sus va fi descris de linia din jurnal:

Apr 18 11:23:17 localhost sudo: alex: TTY=pts/0 ; PWD=/acasă/alex ; UTILIZATOR=rădăcină ; COMMAND=/bin/ping -c 10 -i 0 localhost

Asta e tot. Acum nu voi uita niciodată când am folosit Sudo: „cu o mare putere vine o mare responsabilitate”.

2.1 Sudo shell

Dacă aveți suficiente permisiuni configurate în sudoers, puteți deschide și root coajă folosind:

ÎN ultimele versiuni numai pe CentOS 5, pentru a rula shell-ul ca root, utilizați sudo -s. Fiți foarte atenți, deoarece acest lucru se poate modifica sau crea fișiere noi în directorul principal Root și instalați în directorul principal al utilizatorului apelant.

3.consolehelper

Consolehelper este un shell pentru lansați GUI aplicatii. Când începe să ruleze, verifică configurația PAM pentru aplicația necesară. Aceasta înseamnă că putem autentifica utilizatorul folosind toate modulele instalate PAM. Metoda principală este să cerem o parolă, dar dacă avem echipamentul corespunzător. ne putem autentifica folosind smart card, jetoane, amprente etc. Configurarea PAM depășește domeniul de aplicare al acestui document (consultați Ghidul Administratorului PAM), așa că ne vom uita la pasul de configurare consolehelper necesar pentru a rula aplicații ca root și pentru a necesita o parolă de root.

De exemplu, să configuram /usr/bin/xterm să ruleze ca root.

Ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

Acum, pentru a configura PAM, creați un fișier /etc/pam.d/xterm-root:

#%PAM-1.0 auth include config-util account include config-util session include config-util

În cele din urmă, configurați consolehelper să ruleze /usr/bin/xterm ca root cu comanda „xterm-root”. Creați un fișier /etc/security/console.apps/xterm-root:

USER=root PROGRAM=/usr/bin/xterm

Asta e tot. Rulați „xterm-root” (din linia de comandă sau cu o comandă rapidă la fișierul .desktop), introduceți parola și mergeți. Dacă primiți eroarea: „Xlib: conexiune la „:0.0” refuzată de server”, rulați mai întâi „xhost local:root”.

Cum îmi pot ridica privilegiile la privilegiile de sistem? Lumea Windows. După cum se dovedește, există mai mult decât suficiente opțiuni pentru aceasta. Ce să alegi depinde atât de situație, cât și de preferințele tale. Cu toate acestea, după cum înțelegeți, trebuie să vă extindeți puterile nu numai pentru ferestre, ci și pentru pinguini. Ce oportunități există? Ei bine, să vedem...

Prefaza

După cum vă amintiți (și așa cum ar trebui să-și amintească orice administrator adecvat), lucrul în Linux sub root nu este strict recomandat. Într-o lume ideală, l-ai folosi doar pentru configurarea serverului, instalarea și actualizările de software și alte sarcini pur administrative. Problema este că trăim într-o lume obișnuită, care este foarte departe de ideală. Prin urmare, o astfel de situație încă se întâmplă uneori. Adevărat, în cele mai multe cazuri se datorează pur neglijenței, deoarece istoricul s-a întâmplat ca utilizatorii Linux să înțeleagă cum funcționează sistemul lor de operare. Și chiar dacă înțelegeți puțin despre sistem și mecanismele sale de securitate, nu veți putea sta sub root. Prin urmare, astăzi, spre deosebire de Windows, unde am vorbit despre obținerea privilegiilor de sistem ca administrator, vom lua în considerare doar opțiunile de creștere a privilegiilor de la un utilizator neprivilegiat la root. Asadar, haideti sa începem.

Exploatările

Toate metodele de obținere a drepturilor de superutilizator în Linux pot fi împărțite în două categorii. Prima este tocmai utilizarea exploit-urilor. Spre deosebire de Windows, cu mecanismul său instalare automată actualizări, adepții Penguin trebuie să monitorizeze în mare parte lansarea patch-urilor și instalarea lor pe cont propriu. În acest sens, șansa de a întâlni un sistem care nu a fost complet patch-at printre mașinile Linux este mult mai mare. Care sunt beneficiile aceasta metoda poti evidentia? Pentru început, majoritatea exploit-urilor folosesc vulnerabilități în nucleul sistemului de operare, ceea ce le permite să obțină privilegii maxime. Găsirea unui cod de exploatare potrivit nu este atât de dificilă și probabil cunoașteți câteva resurse. În plus, pentru a profita de un exploit, uneori nu trebuie să înțelegeți toate complexitățile vulnerabilității utilizate - trebuie doar să o compilați corect și să o rulați (uneori, totuși, trebuie să o personalizați puțin, dar destul de des totul va funcționa fără a-l ajusta cu un fișier). În general, algoritmul acțiunilor arată astfel:

  1. Determinați versiunea de nucleu și distribuție.
  2. Obțineți lista instrumentele disponibile pentru asamblarea sploit-ului.
  3. Livrați sploit-ul mașinii țintă.
  4. Compilați (dacă este necesar) și rulați.
  5. Bucurați-vă de rădăcina rezultată.

Ei bine, acum despre fiecare pas în detaliu.

Identificare

Judecând după plan, mai întâi trebuie să aflăm unde am ajuns, ce fel de distribuție folosim și care este versiunea de kernel. Versiunea de kernel poate fi preluată folosind binecunoscuta comandă uname -a sau analogii acesteia. Pentru a obține informații despre distribuția pe care o utilizați, trebuie să vă uitați la fișierul *-release aflat în directorul etc (în funcție de distribuție, acesta poate fi numit diferit: lsb-release în Ubuntu, redhat-release în roșu Hat / CentOS și etc):
cat /etc/*-release

Cunoscând distribuția și versiunea kernelului, puteți trece la a doua etapă - găsirea unei „chei principale” adecvate.

Căutați o exploatare

De îndată ce toate informatie necesara va fi în mână, va fi timpul să căutăm o exploatare potrivită. Primul lucru care îmi vine în minte este exploit-db.com, dar există și alternative: 1337day, SecuriTeam, ExploitSearch, Metasploit, securityreason, seclists. La urma urmei, există Google, care știe cu siguranță mai multe despre exploatări decât oricine altcineva. Privind puțin în viitor, voi spune: uneori, dintr-un motiv oarecare, „cheia principală” poate să nu funcționeze sau trebuie să o adaptați puțin la anumite condiții sau nevoile dvs., adică să o parcurgeți cu un fișier. În acest caz, nu va strica să aflați informații suplimentare despre acesta, care pot fi adunate din una dintre următoarele resurse:
www.cvedetails.com
packetstormsecurity.org
cve.mitre.org

Deci, să presupunem că găsești o exploatare potrivită care îți oferă o trecere în lumea root-ului. Mai rămâne doar să-l transporti cumva la mașină.

Livrare la domiciliu

Pentru a livra distribuitorul la locație, există destul de multe metode, de la binecunoscutele cURL/wget, Netcat, FTP, SCP/SFTP, SMB până la Utilizarea DNSînregistrări TXT. Pentru a afla care dintre aceste instrumente avem, rulați:

Find / -name wget find / -name nc* find / -name netcat* find / -name tftp* find / -name ftp

Să presupunem că am găsit Netcat. Pentru a transfera un fișier folosindu-l, rulați pe partea de recepție:
nc -l -p 1234 > out.file

Adică ascultăm portul 1234. Pe cel de trimitere facem următoarele:
nc -w 3 1234< out.file

Dacă transferul are loc de la *nix pe un sistem *nix, adică acolo și acolo utilități standard, apoi puteți utiliza compresia pentru a accelera procesul de transfer. În acest caz, comenzile vor arăta astfel:

Nc -l -p 1234 | decomprima -c | tar xvfp - // pentru a obține tar cfp - /some/dir | compresă -c | nc -w 3 1234 // a trimite

Opțiunile rămase sunt și mai simple, așa că nu vom lua în considerare utilizarea wget, FTP și alte metode binecunoscute.

V-aţi ascunselea

Bine, ne-am dat seama cum să-l livrăm. Dar cum poți evita să te arzi? Dacă exploit-ul tău este descoperit, fii sigur că lacuna va fi închisă rapid. Deci, trebuie să-l găzduiți, să îl compilați și să îl rulați dintr-un loc necunoscut. În Linux, directoarele care încep cu un punct (de exemplu, .secret_folder) sunt ascunse. Prin urmare, ar fi logic să le folosim pentru a-și ascunde activitatea. De exemplu, puneți codul de exploatare în ele: /tmp/.nothingthere/exploit.c . Totuși, în acest caz, trebuie să vă asigurați mai întâi că tmp este montat fără opțiunea noexec și că puteți rula exploit-ul asamblat de pe acesta (pentru a face acest lucru, utilizați comanda mount).

Construirea și rularea exploitului

Odată ce am livrat și plasat Sploit-ul, va trebui să fie asamblat/configurat. De regulă, exploit-urile sunt scrise în C sau unul dintre limbajele de scripting Python/Perl/PHP. Cititorii obișnuiți ][ știu că lăsați un compilator pe serverul dvs. nu este cel mai bun Cea mai bună decizie, deci este de obicei decupat. Dacă aveți întrebarea despre versiune compilator gcc-v bash va jura gcc: command not found , ceea ce înseamnă că ești „norocos” și va trebui să mergi în jur. Adică, fie căutați o foaie de calcul în Python, Perl sau altceva, fie compilați-o mașină virtuală cu o versiune similară a sistemului de operare și a nucleului. Apoi mutați fișierul executabil rezultat în gazda țintă (cu toate acestea, această metodă nu garantează funcționarea 100%; exploit-ul poate cădea și poate prăbuși sistemul, așa că aveți grijă aici). Cu toate acestea, după cum arată practica, un interpret pentru una dintre limbile menționate trebuie să fie în continuare prezent în sistem. Deci, nu ar trebui să renunțați imediat, să verificăm toate opțiunile:

Find / -name perl* find / -name python* find / -name gcc* find / -name cc

Dacă ai succes, tot ce trebuie să faci este să rulezi exploit-ul compilat și să te bucuri de promovare. Ei bine, sau află de ce nu a funcționat, în funcție de norocul tău.

Contracararea deficiențelor

Este dificil să vii cu rețete inovatoare aici. Totul se știe de mult. Trebuie doar să instalați patch-urile la timp. Acesta este primul. Al doilea este de a limita locurile din care pot fi executate fișierele (dosarul tmp ar trebui să fie cu siguranță privat de această capacitate). Ei bine, aplicați un fel de soluție de securitate, de exemplu grsecurity.

Drepturi, fișiere, căi și configurații

A doua categorie care poate fi distinsă în ridicarea privilegiilor sunt metodele care nu au legătură cu utilizarea exploit-urilor, ci se bazează pe căutarea fișierelor cu drepturi setate incorect. Aici, ca și în cazul Windows, există câteva trucuri, dar practic este tot aceeași muncă de colectare și analiză a datelor. De obicei, primul lucru de căutat sunt fișierele care pot fi citite și scrise de toată lumea:
găsi / -perm 2 ! -tip l -ls

Poate fi un număr destul de mare de acestea, iar printre ele puteți găsi ceva interesant: fișierele de configurare, surse de site-uri/aplicații, scripturi lansate de init sau cron. În principiu, este normală o situație în care un fișier poate fi citit și scris de către toată lumea. Problemele apar atunci când utilizatorii/administratorii/scripturile încep să schimbe permisiunile fără minte. Deci, atunci când schimbați permisiunile, încercați să evitați utilizarea chmod 777 . Ei bine, efectuați audituri periodice la fișiere importante nu erau disponibile pentru toată lumea.

Setuid+setgid

După cum se arată în documentație, setuid și setgid sunt semnalizatoare de permisiuni care permit executabilelor să fie rulate cu drepturile proprietarului sau grupului de executabil (de obicei root). Astfel de fișiere executabile, atunci când sunt executate cu privilegii ridicate, pot accesa mai multe informații privilegiate. De exemplu, dacă setați setuid la comanda ls, veți putea vizualiza conținutul directoarelor la care vi s-a refuzat inițial accesul. Și în cazul vim, pot edita fișiere de configurare pe care nu aveam dreptul să le caut înainte.

În consecință, dacă aplicațiile cu setul de flag setuid/setgid conțin vulnerabilități, cum ar fi depășirea tamponului sau injectarea de comandă, atunci un atacator poate executa cod arbitrar cu privilegii ridicate. Prin urmare, următoarea opțiune este de obicei să căutați fișiere executabile cu aceste steaguri.
sudo find / -xdev \(-perm 4000\) -type f -print0 -exec ls -s () \;

În principiu, o puteți face fără sudo, acest lucru este necesar doar pentru a verifica directoarele la care nu aveți acces.

De obicei, există trei opțiuni pentru utilizarea ulterioară a acestora fișiere executabile. Primul este să încerci să ridici privilegiile pe baza funcționalității oferite de această aplicație (sau, mai degrabă, să vină cu propriul tău mod utilizare neobișnuită această funcționalitate). A doua opțiune este de a găsi o exploatare publică sau de a efectua fuzzing independent pentru a identifica erori. A treia este injecția de comandă. Nu există o rețetă universală, totul depinde de situație.

SUDO

Comanda sudo (înlocuiți utilizatorul și face), care înseamnă literal „înlocuiți un utilizator și executați”, vă permite să delegați anumite resurse privilegiate utilizatorilor, păstrând în același timp un jurnal al lucrării. Adică, oferă utilizatorilor posibilitatea de a executa comenzi ca root (sau alți utilizatori) folosindu-le propria parolă, nu parola root. Regulile pentru luarea deciziilor de acces sunt în fișierul /etc/sudoers. Mai multe detalii despre formatul acestui fișier și stabilirea regulilor pot fi găsite în manualul oficial sau Wikipedia. Voi spune doar că și acest fișier trebuie verificat cu atenție. Pentru că se întâmplă adesea ca unele aplicații să-l schimbe în timpul instalării și, mai mult, nu în partea mai bună. Drept urmare, utilizatorii au posibilitatea de a-și crește privilegiile (o postare despre securitatea ofensivă care spune despre un astfel de caz).

CALE

Ca și în Windows, în Linux căile configurate incorect vă vor ajuta și la creșterea privilegiilor. Acest lucru se întâmplă de obicei cu variabila de mediu PATH (utilizați printenv pentru ao vizualiza). Te-ai uitat? Grozav, acum spune-mi: ce se întâmplă dacă variabila de mediu PATH începe cu. (.:/bin:/usr/sbin ....)? Acest lucru este de obicei făcut de utilizatorii care nu doresc să introducă două caractere suplimentare, adică vor să apeleze comanda astfel: $ program în loc de $ ./program . Plus. în PATH înseamnă capacitatea de a executa fișiere/scripturi din directorul de lucru. Îl poți adăuga după cum urmează:

PATH=.:$(PATH) export PATH

Acum imaginați-vă situația în care avem doi utilizatori: Joe (atacatorul) și Bob. Joe știe că Bob are privilegii sudo pentru a schimba parolele utilizatorilor, inclusiv root. În plus, Bob este leneș și adăugat. la variabila de mediu PATH. Wile Joe scrie un program care va schimba parola root, o numește ls și o pune într-un folder în care lui Bob îi place să caute. Acum, când acesta din urmă intră în folder și dorește să-i vadă conținutul, programul pe care l-a scris Joe va fi executat și parola de root va fi schimbată. Prin urmare, verificăm întotdeauna variabilele de mediu pentru prezența lucrurilor interesante și pentru noi înșine tragem următoarele concluzii:

  1. Nu o folosim niciodată. în variabila PATH.
  2. Dacă punctul este încă prezent acolo, plasați-l rândul următorîn .bashrc sau .profile:
    PATH= echo $PATH | sed -e "s/::/:/g; s/:.:/:/g; s/:.$//; s/^://"

Instrumente

Pentru a automatiza căutarea punctelor slabe, puteți utiliza următoarele instrumente:

1. LinEnum este un script bash care va face toată munca murdară pentru tine, efectuând toate verificările descrise în această foaie de cheat. În total, are aproximativ 65 de verificări diferite, de la obținerea de informații despre versiunea de kernel până la căutarea fișierelor SUID/GUID potențial interesante. În plus, puteți trece scenariul cuvânt cheie, pe care îl va căuta în toate fișierele de configurare și jurnal. Verificarea este începută după cum urmează: ./LinEnum.sh -k cuvânt cheie -r raport -e /tmp/ -t . După ce scanarea este finalizată, vi se va prezenta un raport destul de detaliat, majoritatea locuri interesante care va fi evidentiat cu galben.
2. LinuxPrivChecker - Un script Python care este, de asemenea, util în căutarea unor posibile opțiuni pentru escaladarea privilegiilor. În general, face aceleași lucruri standard: verificarea privilegiilor, obținerea de informații despre sistem... Dar principala sa caracteristică este că, după finalizarea verificării, vă va oferi o listă de exploit-uri care, în opinia sa, vă vor ajuta. ridica privilegii. Un tip atât de bun :).
3. unix-privesc-check - acest scenariu vă permite să căutați opțiuni pentru creșterea privilegiilor nu numai în Linux, ci și în Solaris, HPUX, FreeBSD. Încearcă să detecteze erori de configurare care ar permite unui utilizator neprivilegiat să se ridice în sistem.
4. Blogul g0tmi1k - și acesta este un blog în care sunt bine descrise toate verificările care sunt efectuate de cele trei instrumente numite. Așa că vă recomand cu tărie să aruncați o privire acolo și să vă familiarizați cu el, astfel încât să vă puteți imagina cum funcționează aceste instrumente „din interior”.



LinuxPrivChecker conține o listă mare de exploit-uri, care este actualizată constant din baza de date Exploit

Postfaţă

După cum ați văzut, în lumea Linux, creșterea privilegiilor este, de asemenea, destul de obișnuită. Secretul succesului este simplu: pentru a-ți atinge scopul, trebuie să ai răbdare și să știi unde să cauți și ce să cauți. Unde să cauți, acum știi ce utilități să folosești și pentru automatizare, așa că acum poți cuceri nu numai un sistem câștigător, ci și un sistem nix. Du-te!

utilizator root și sudo

Utilizatorul root pe sistemele GNU/Linux este un utilizator care are acces administrativ la sistemul dumneavoastră. Utilizatorii obișnuiți nu au acest acces din cauza lipsei de acces. Cu toate acestea, Kubuntu nu are un utilizator root. În schimb, accesul administrativ este acordat utilizatorilor individuali, care pot folosi aplicația „sudo” pentru a efectua sarcini administrative. Primul Cont, creat în timpul instalării sistemului, va avea în mod implicit acces la aplicația sudo. Puteți refuza accesul sudo sau îl puteți acorda folosind o aplicație Utilizatori și grupuri (Consultați „Utilizatori și grupuri”).

Dacă rulați un program care necesită drepturi de superutilizator, sudo vă va cere să introduceți normal Parolă de utilizator. Acest lucru asigură că aplicații rău intenționate nu vă va deteriora sistemul și, de asemenea, vă va aminti că sunteți pe cale să efectuați acțiuni administrative care necesită îngrijire specială!

Pentru a utiliza sudo în Linie de comanda, trebuie doar să tastați „sudo” înainte de comanda pe care doriți să o executați. După aceasta, sudo vă va cere să introduceți parola.

Sudo își va aminti parola potriveste ora(implicit 15 minute). Această caracteristică permite utilizatorilor să efectueze un număr mare de sarcini administrative fără a fi nevoie să introducă o parolă de fiecare dată.

Atenţie

Fiți atenți când efectuați sarcini administrative - vă puteți distruge sistemul!

Câteva sfaturi pentru utilizarea sudo:

    Pentru a utiliza terminalul utilizatorului root, tastați „sudo -i” la promptul de comandă

    Întregul grup de utilitare de configurare grafică din Kubuntu utilizează deja sudo, așa că, dacă este necesar, vi se va cere o parolă folosind aplicația kdesu, care este înveliș grafic sudo .

    Pentru mai multe informatii despre program sudoși absența unui utilizator root în Kubuntu, vezi pagina sudo de pe wiki Ubuntu.

Rularea programelor manual cu privilegii root

Uneori este necesar să rulați un program cu privilegii root. Acest lucru este ușor de făcut folosind dialog Executa comanda .

Atenţie

Vă rugăm să aveți grijă când rulați aplicații cu privilegii de root, deoarece vă poate deteriora sistemul. In spate Informații suplimentare vezi „Utilizatorul root și sudo”.

    Dialog deschis Executa comanda prin apăsarea Alt -F2

    Introduceți numele programului pe care doriți să îl rulați, cu prefix kdesuși apăsați introduce. De exemplu, să alerg manager de fișiere Konqueror cu privilegii root, tastați

    |

    Linux este un sistem de operare multi-utilizator care folosește conceptul Unix de privilegii pentru a oferi securitate la nivel de securitate. Sistemul de fișiere. Când lucrați cu Linux, este foarte important să înțelegeți ce sunt permisiunile și proprietatea. Acest articol vă va ajuta să înțelegeți conceptele de bază legate de privilegiile utilizatorului Linux.

    Cerințe

    • Cunoștințe de bază Linux.
    • Server Linux (opțional).

    utilizatorii Linux

    Deoarece Linux este un sistem multi-utilizator, este important să înțelegeți cum funcționează utilizatorii și grupurile. Să ne uităm la aceste concepte mai detaliat.

    Există două tipuri de utilizatori în Linux: sistem și obișnuit. Utilizatorii de sistem sunt proiectați să efectueze activități non-interactive și procese de fundal, iar utilizatorii obișnuiți sunt responsabili pentru finalizarea sarcinilor interactive. Când vă conectați la sistemul dumneavoastră Linux pentru prima dată, este posibil să fi observat că pornește mult utilizatorii sistemului, care la rândul său lansează diverse servicii, de care depinde sistemul.

    Pentru a vedea toți utilizatorii din sistem, verificați fișierul /etc/passwd. Fiecare linie din acest fișier conține informații despre un utilizator individual, începând cu numele de utilizator (înainte de primul caracter de două puncte). Pentru a afișa conținutul fișierului pe ecran, introduceți:

    Superutilizator

    Pe lângă principalele două tipuri de utilizatori din Linux, există și un superutilizator, sau root. Acest utilizator poate suprascrie permisiunile altor utilizatori asupra fișierelor și poate restricționa accesul. În esență, superutilizatorul are drepturi de acces la toate fișierele existente pe server. Acest utilizator are dreptul de a face modificări la nivelul întregului sistem, astfel încât securitatea sa este foarte importantă pentru securitatea serverului însuși.

    De asemenea, puteți configura alți utilizatori pentru a efectua privilegii de superutilizator. Pentru a face acest lucru, trebuie să acordați acces utilizatorului normal la comanda sudo. ÎN Munca zilnica Este recomandat ca administratorul serverului să folosească doar un astfel de cont cu privilegii extinse, deoarece folosind root pe bază permanentă periculos și poate distruge sistemul.

    grupuri Linux

    Grupurile sunt colecții de 0 sau mai mulți utilizatori. Utilizatorul aparține grupului implicit și poate fi, de asemenea, membru al oricăruia dintre celelalte grupuri.

    Pentru a vedea toate grupuri disponibileși listele membrilor acestora, deschideți fișierul /etc/group.

    Proprietatea fișierelor și drepturi de acces

    În Linux, fiecare fișier aparține unui utilizator și unui grup și are setări individuale acces.

    Pentru a vizualiza permisiunile, utilizați comanda ls. Are o listă lungă de opțiuni (ex. ls -l myfile). Pentru a vizualiza setările de acces la fișiere în directorul curent, rulați comanda fără argumente:

    Pentru a interoga conținutul directorului /etc, introduceți:

    Prima coloană a rezultatului indică modul de acces la fișier, a doua și a treia coloană conțin numele de utilizator și grupul, a patra - dimensiunea fișierului, a cincea - data acestuia. ultima schimbare, ultima coloană arată numele fișierului.

    În general, rezultatul comenzii ls este destul de ușor de înțeles, cu excepția poate primei coloane, care descrie permisiunile fișierelor. Arata cam asa:

    drwxrwxrwx
    drwxrwx ---
    -rw-rw----
    drwx------
    -rw-------

    Pentru a înțelege ce înseamnă aceste litere și cratime, să împărțim conținutul coloanei în componentele sale. Prima linie a exemplului de mai sus poate fi împărțită în următoarele categorii:

    d rwx(1) rwx(2) rwx(3)

    • d – câmp tip fișier.
    • rwx(1) – drepturile utilizatorului care deține fișierul.
    • rwx(2) – drepturi ale grupului proprietar.
    • rwx(3) – drepturile altor utilizatori.

    Tipuri de fisiere

    Există două tipuri principale de fișiere în Linux: obișnuite și speciale.

    Fișierele obișnuite sunt identificate printr-o cratimă în câmpul de tip. Fișierele obișnuite sunt fișiere simple, în care se pot stoca datele.

    Un fișier este special dacă câmpul de tip conține o literă. Astfel de fișiere sunt procesate sistem de operare diferit de fișierele obișnuite. Simbolul din câmpul tip fișier indică ce tip fisiere speciale se aplică fisier specific. Cel mai comun tip de fișier special este un director (sau director), identificat prin simbolul d (ca în exemplul de mai sus). ÎN sistem Linux Există mai multe tipuri de fișiere speciale, dar Acest subiect depășește domeniul de aplicare al acestui articol.

    Acces la cursuri

    După cum sa menționat mai devreme, fiecare fișier are setări pentru trei categorii(sau clase de acces):

    1. utilizator – proprietar de fișier;
    2. grup - proprietarul fișierului (această clasă include toți membrii grupului căruia îi aparține utilizatorul - proprietarul fișierului);
    3. și alți utilizatori (această clasă include toți utilizatorii care nu aparțin claselor anterioare).

    Toate distribuțiile Linux urmează această ordine de privilegii.

    Tipuri de acces

    • r (citește) – dreptul de a citi fișierul,
    • w (scrie) – dreptul de modificare (editare),
    • x (execută) – dreptul de a rula (în unele cazuri speciale, se poate folosi un alt caracter în loc de x).

    Dacă există o cratimă în loc de simbol, înseamnă această clasă nu are drepturi de acces adecvate. De exemplu:

    În acest caz, utilizatorul și grupul - proprietarii fișierului - au toate drepturile de acces, iar pentru alți utilizatori accesul la fișier este complet interzis.

    Să aruncăm o privire mai atentă la ceea ce oferă exact fiecare tip de acces.

    Notă: Pentru a asigura accesul normal la fișiere și directoare, tipurile de acces sunt adesea folosite în combinație între ele.

    Permisiune de a citi fișierul

    Dreptul de a citi un fișier obișnuit este capacitatea de a vedea conținutul acestuia.

    Permisiunea de citire a unui director permite unui utilizator să vadă numele fișierelor stocate în acesta.

    Dreptul de a schimba fișierul

    În cazul unui fișier obișnuit, acest drept oferă utilizatorului posibilitatea de a modifica conținutul fișierului sau de a-l șterge.

    Dacă un utilizator are dreptul de editare a directorului, atunci acel utilizator poate șterge directorul, poate modifica conținutul acestuia (adică să creeze, să redenumească sau să ștergă fișiere în el) și conținutul fișierelor stocate în el.

    Dreptul la lansare

    Având acest drept, utilizatorul poate rula dosar obișnuit, dar pentru aceasta are nevoie și de permisiuni de citire a acestui dosar. Permisiunile de lansare trebuie setate pentru programe executabileși scripturi shell.

    Dacă un utilizator are dreptul de a lansa un director, atunci el poate citi un astfel de director și, de asemenea, poate accesa metadatele acestuia despre fișierele stocate.

    Exemple de privilegii

    Acum să ne uităm la câteva utile exemple comune drepturi de acces la fișiere.

    • -rw——-: Numai utilizatorul care deține fișierul are acces la fișier.
    • -rwxr-xr-x: Orice utilizator de pe sistem poate rula un astfel de fișier.
    • -rw-rw-rw-: orice utilizator al sistemului are dreptul de a modifica un astfel de fișier.
    • drwxr-xr-x: orice utilizator de pe sistem poate citi acest director.
    • drwxrwx—: Conținutul directorului poate fi citit și modificat numai de utilizatorul și grupul proprietar.

    După cum puteți vedea, utilizatorul care deține fișierul are de obicei toate drepturile asupra fișierului (sau, conform macar, are mai multe drepturi decât alte clase). Din motive de securitate, fișierele ar trebui să fie accesibile numai acelor utilizatori care au nevoie de acces la ele dintr-un motiv anume.

    Există multe combinații de drepturi de acces, dar doar unele dintre ele sunt utile în orice caz dat. De exemplu, drepturile de modificare și de rulare sunt aproape întotdeauna combinate cu drepturile de citire a unui fișier, deoarece un fișier este dificil de modificat și imposibil de rulat fără drepturi de citire.

    Notă: Pentru a afla cum să schimbați drepturile de acces, citiți. Se vorbește despre utilizarea comenzilor chown, chgrp și chmod.

    Concluzie

    Acum sunteți familiarizat cu conceptele de bază legate de permisiuni și proprietate într-un mediu Linux.

    Etichete:

    În multe manuale Linux (și nu numai Linux) despre probleme de securitate, există în mod regulat recomandări pentru a efectua toate acțiunile non-administrative sub un utilizator care nu are drepturi de administrator/superutilizator. Mai simplu spus, toată lumea recomandă să nu lucreze în mod constant sub utilizator rootși recurg la lucrul ca root doar atunci când este necesar.
    De fapt, în multe situații devine necesară rularea proceselor sub un utilizator care nu numai că nu are drepturi root, dar nici nu își poate ridica drepturile de root. În niciun caz, în niciun caz. Această nevoie apare (are sens să creăm astfel de utilizatori) pentru serviciile care rulează pe server. De exemplu, Apache, Asterisk și așa mai departe. Adică, pentru ca cineva care poate obține drepturile unui astfel de utilizator nu numai că nu ar primi drepturi de root, ci chiar (brut) să afle parola de root, nu m-aș putea autentifica cu această parolă (pentru a-mi crește privilegiile).

    În versiunile mai vechi de Linux, modul implicit a fost setat la următorul mod: utilizatorii care aparțin grupului de roți pot rula comanda su, dar toți ceilalți nu pot. Adică toată lumea poate rula su, dar pentru utilizatorii care nu fac parte din grupul de roți, comanda su chiar și cu parola corecta root va arunca o eroare.
    ÎN versiuni moderne linux, de exemplu, CentOS și Debian, această caracteristică este dezactivată implicit, adică toți utilizatorii își pot ridica drepturile (cunoscând parola root). În acest articol, vom arăta cum să returnăm modul care era înainte - astfel încât numai utilizatorii din grupul de roți să își poată „ridica” privilegiile.

    Unde sa încep

    În primul rând, trebuie să te protejezi. Adică, asigurați-vă că adăugați utilizatorul cu care lucrați în grup roată. Ei bine, dacă există mai mulți utilizatori în sistem, sub care este necesar să creșteți din când în când privilegiile de root, atunci fiecare dintre acești utilizatori trebuie să fie incluși în grup de roți!
    Vă rugăm să rețineți că acest lucru este important de făcut inainte de cum te schimbi setări linux, în caz contrar (dacă, de exemplu, vă conectați la server prin SSH, accesul prin SSH sub root este refuzat) conectându-vă sub utilizator obișnuit prin SSH, nu vă veți putea crește privilegiile de root!

    Creați roata de grup

    Este posibil ca versiunea dvs. de Linux să nu aibă grupul de roți în mod implicit. Apoi trebuie creat. Există următoarea comandă pentru aceasta:
    addgroup roata
    Nu vă fie teamă să introduceți această comandă: dacă roata grupului există, va afișa un mesaj că un astfel de grup există deja. Dacă nu există un astfel de grup, acesta va fi creat

    Cum să adăugați un utilizator la grupul de roți

    Există o comandă pentru asta:
    usermod -a -G wheel nume de utilizator
    De exemplu:
    usermod -a -G wheel nume de utilizator

    Această comandă adaugă numele de utilizator la grupul de roți. Dacă utilizatorul este membru al unuia sau mai multor grupuri, apartenența la toate grupurile este menținută, utilizatorul este pur și simplu adăugat la un alt grup (suplimentar).

    Acum verificați dacă totul este făcut corect. Există o comandă pentru asta:
    id nume de utilizator
    De exemplu:
    id nume de utilizator

    Vor fi afișate ID-ul utilizatorului, numele utilizatorului și ID-ul și numele fiecărui grup din care aparține utilizatorul. Asigurați-vă că totul utilizatorii necesari adăugat la grupul de roți.

    Rulați su numai de către utilizatorii din grupul de roți

    Deschide în ta editor de text fișier: /etc/pam.d/su
    În acest fișier, căutați o linie similară cu următoarea:
    auth required pam_wheel.so
    sau
    auth required pam_wheel.so use_uid
    În mod implicit, această linie începe cu semnul „#”, care este ca un comentariu. Eliminați marcajul de comentariu de la începutul acestei linii și salvați fișierul.

    Toate! Acum, numai utilizatorii din grupul de roți pot rula comanda su și își pot escalada privilegiile la root. Nu uitați să-l verificați!