Log in op Linux met rootrechten. Voer su alleen uit door gebruikers uit de wielgroep. $su opties gebruiker

rootgebruiker en sudo

De rootgebruiker op GNU/Linux-systemen is een gebruiker die beheerderstoegang tot uw systeem heeft. Reguliere gebruikers hebben deze toegang niet vanwege een gebrek aan toegang. In Kubuntu is er echter geen root-gebruiker. In plaats daarvan wordt beheerderstoegang verleend individuele gebruikers, die de toepassing "sudo" kan gebruiken om administratieve taken uit te voeren. Eerst rekening, aangemaakt tijdens de systeeminstallatie, heeft standaard toegang tot de sudo-applicatie. U kunt sudo-toegang weigeren of verlenen via een applicatie Gebruikers en groepen (Zie “Gebruikers en groepen”).

Als u een programma uitvoert waarvoor superuser-rechten vereist zijn, vereist sudo dat u uw normale invoert gebruikerswachtwoord. Dit zorgt ervoor dat kwaadaardige toepassingen zal uw systeem niet beschadigen en zal u ook herinneren aan wat u gaat doen administratieve handelingen, die speciale zorg vereisen!

Om sudo op de opdrachtregel te gebruiken, typt u eenvoudigweg "sudo" vóór de opdracht die u wilt uitvoeren. Hierna zal sudo u vragen om uw wachtwoord in te voeren.

Sudo onthoudt uw wachtwoord gedurende de ingestelde tijd (standaard is 15 minuten). Met deze functie kunnen gebruikers optreden groot aantal administratieve taken zonder dat u elke keer een wachtwoord hoeft in te voeren.

Aandacht

Wees voorzichtig bij het uitvoeren van administratieve taken; u kunt uw systeem verpesten!

Enkele tips voor het gebruik van sudo:

    Om de terminal van de rootgebruiker te gebruiken, typt u "sudo -i" op de opdrachtprompt

    De hele groep grafische configuratiehulpprogramma's in Kubuntu maakt al gebruik van sudo, dus indien nodig wordt u via de applicatie om een ​​wachtwoord gevraagd kdesu, wat een grafische shell is sudo .

    Voor meer informatie over het programma sudo en de afwezigheid van een rootgebruiker in Kubuntu, zie de sudo-pagina op de Ubuntu-wiki.

Programma's handmatig uitvoeren met rootrechten

Soms is het nodig om een ​​programma met rootrechten uit te voeren. Dit is eenvoudig te doen met behulp van dialoog Voer de opdracht uit .

Aandacht

Wees voorzichtig bij het uitvoeren van applicaties met rootrechten, omdat dit uw systeem kan ruïneren. Zie De rootgebruiker en sudo voor meer informatie.

    Open dialoog Voer de opdracht uit door op te drukken Alt -F2

    Voer de naam in van het programma dat u wilt uitvoeren, met voorvoegsel kdesu en druk op Binnenkomen. Om bijvoorbeeld te rennen bestandsbeheerder Veroveraar met rootrechten, typ

    In veel Linux (en niet alleen Linux) handleidingen over beveiligingskwesties staan ​​regelmatig aanbevelingen om alle niet-administratieve acties uit te voeren onder een gebruiker die geen beheerders-/superuser-rechten heeft. Simpel gezegd raadt iedereen aan om niet altijd als root te werken en alleen als dat nodig is over te gaan tot het werken als root.
    In feite wordt het in veel situaties noodzakelijk om processen uit te voeren onder een gebruiker die niet alleen geen rootrechten heeft, maar ook zijn rechten op root niet kan verhogen. Echt niet, echt niet. Deze behoefte ontstaat (het is logisch om dergelijke gebruikers te creëren) voor services die op de server draaien. Bijvoorbeeld Apache, Asterisk, enzovoort. Dat wil zeggen, zodat iemand die de rechten van zo'n gebruiker kan verkrijgen niet alleen geen root-rechten krijgt, maar zelfs (plotseling) het root-wachtwoord leert, niet in staat zou zijn om met dit wachtwoord in te loggen (hun rechten te vergroten).

    In oudere versies van Linux was de standaardmodus ingesteld op de volgende modus: gebruikers die tot de wheel-groep behoren, kunnen de opdracht su uitvoeren, maar alle anderen kunnen dat niet. Dat wil zeggen, iedereen kan su uitvoeren, maar voor gebruikers die niet uit de wheel-groep komen, kan het su-commando zelfs met juiste wachtwoord root zal een foutmelding geven.
    IN moderne versies Linux, bijvoorbeeld CentOS en Debian, is deze functie standaard uitgeschakeld, d.w.z. alle gebruikers kunnen hun rechten verhogen (als ze het root-wachtwoord kennen). In dit artikel laten we zien hoe u de eerdere modus kunt herstellen - zodat alleen gebruikers uit de wielgroep hun rechten kunnen "verhogen".

    Waar te beginnen

    Allereerst moet je jezelf beschermen. Dat wil zeggen: zorg ervoor dat u de gebruiker waarmee u werkt, toevoegt aan de groep wiel. Welnu, als er meerdere gebruikers in het systeem zijn, onder wie het nodig is om van tijd tot tijd de rechten om te rooten te vergroten, dan elk van deze gebruikers moet worden toegevoegd aan de wielgroep!
    Let op, dit is belangrijk om te doen naar hoe je verandert Linux-instellingen, anders (als u bijvoorbeeld via SSH verbinding maakt met de server, is toegang via SSH onder root verboden) door in te loggen als een gewone gebruiker via SSH, kunt u uw rechten niet verhogen naar root!

    Groepswiel maken

    Het is mogelijk dat in uw Linux-versies Er is standaard geen wielgroep. Dan moet het aangemaakt worden. Hiervoor bestaat het volgende commando:
    groep toevoegen wiel
    Wees niet bang om deze opdracht in te voeren: als het groepswiel bestaat, wordt er een bericht weergegeven dat zo'n groep al bestaat. Als een dergelijke groep niet bestaat, wordt deze aangemaakt

    Hoe u een gebruiker aan de wielgroep toevoegt

    Er is een commando hiervoor:
    usermod -a -G wiel gebruikersnaam
    Bijvoorbeeld:
    usermod -a -G wiel gebruikersnaam

    Met deze opdracht wordt de gebruikersnaam aan de wielgroep toegevoegd. Als de gebruiker lid is van een of meerdere andere groepen, blijft het lidmaatschap van alle groepen behouden;

    Controleer nu of alles correct is gedaan. Er is een commando hiervoor:
    ID-gebruikersnaam
    Bijvoorbeeld:
    ID-gebruikersnaam

    De gebruikers-ID, gebruikersnaam en de ID en naam van elke groep waartoe de gebruiker behoort, worden weergegeven. Zorg ervoor dat alles benodigde gebruikers toegevoegd aan de wielgroep.

    Voer su alleen uit door gebruikers uit de wielgroep

    Open in uw teksteditor bestand: /etc/pam.d/su
    Zoek in dit bestand naar een regel die er ongeveer als volgt uitziet:
    auth vereist pam_wheel.so
    of
    auth vereist pam_wheel.so use_uid
    Standaard begint deze regel met een "#"-teken, wat lijkt op een opmerking. Verwijder het commentaarteken aan het begin van deze regel en sla het bestand op.

    Alle! Nu kunnen alleen gebruikers uit de wheel-groep de opdracht su uitvoeren en hun rechten naar root escaleren. Vergeet niet om het te bekijken!

    Zoals je weet neemt Linux het beheer van gebruikers en het verlenen van toestemming om het systeem te gebruiken zeer serieus. Een normale gebruiker kan alleen bestanden naar zijn eigen map en de map /tmp/ schrijven. Het is ook mogelijk om sommige bestanden in de root te lezen bestandssysteem. Maar je kunt geen programma's installeren, omdat hiervoor schrijfrechten nodig zijn, je kunt de bestandskenmerken niet wijzigen, je kunt geen services starten, je kunt sommige logbestanden niet lezen en je kunt niet veel meer doen.

    In Linux heeft alleen de rootgebruiker het recht om het rootbestandssysteem te beheren en daar bestanden aan te maken.

    In dit artikel zullen we bekijken welke programma's nodig zijn om rootrechten te krijgen Linux-gebruiker hoe ze werken, hoe je een programma uitvoert wortelrechten van een gewone gebruiker en hoe u deze moet uitvoeren grafische programma's met rootrechten. We zullen ook ontdekken wat sudo is en wat het verschil is tussen su en sudo.

    Het zou heel lang duren om op te sommen wat een gewone Linux-gebruiker niet kan doen; het is gemakkelijker om te zeggen waar hij recht op heeft, namelijk wanneer standaard instelling bestandsrechten in Linux kan een gewone gebruiker:

    • Lees, schrijf en wijzig kenmerken van bestanden in uw directory
    • Lezen, schrijven en wijzigen van attributen van bestanden in de map /tmp
    • Voer programma's uit waar dit niet verboden is, met behulp van de vlag noexec
    • Lees bestanden waarvoor de leesvlag is ingesteld voor alle gebruikers.

    Als we nog iets moeten doen, hebben we Linux root-gebruikersrechten nodig. Root heeft het recht om alles op uw bestandssysteem te doen, ongeacht welke machtigingen voor het bestand zijn ingesteld.

    Log in als superuser

    Om in te loggen als rootgebruiker kunt u overschakelen naar een van de virtuele consoles, bijvoorbeeld met behulp van de sneltoets Ctrl+Alt+F1 en vervolgens de root-login en het root-gebruikerswachtwoord invoeren.

    Je krijgt een volledige rootomgeving met de mogelijkheid om alles te doen, maar deze methode is erg onpraktisch omdat je alle voordelen van het gebruik van een GUI verliest.

    We kunnen het tegenovergestelde doen: de root-login en het bijbehorende wachtwoord invoeren in de grafische login-manager, zodat de desktopomgeving als root draait en we alle rechten krijgen root-linux, maar deze optie wordt ten zeerste afgeraden en is zeer gevaarlijk. U kunt per ongeluk het hele systeem beschadigen. Daarom is deze methode in veel login-managers uitgeschakeld.

    Schakel over naar superuser in terminal

    Nu komen we bij iets interessanters en praktischer. Met behulp van speciale hulpprogramma's kunt u de huidige terminalemulator naar de superuser-omgeving overschakelen en alle volgende opdrachten niet namens u, maar namens hem uitvoeren, waardoor het programma root-Linux-rechten krijgt. Er is hiervoor een hulpprogramma genaamd su. Over het algemeen kunt u met dit hulpprogramma niet alleen overschakelen naar de rootgebruiker, maar ook naar elke andere gebruiker, maar standaard wordt root gebruikt. Laten we het eens nader bekijken. Het su linux-commando heeft de volgende syntaxis:

    $su opties gebruiker

    Dit zijn de belangrijkste opties:

    • -c, --opdracht- voer de opdracht uit
    • -g, --groep- stel de hoofdgebruikersgroep in (alleen voor root)
    • -G --supp-groep- extra gebruikersgroepen (alleen voor root)
    • -, -l, --inloggen- login-modus, alles wordt gewist en geïnitialiseerd, rekening houdend met de nieuwe gebruiker omgevingsvariabelen, en ook veranderd thuismap
    • -p, --preserve-omgeving
    • -s, --shell- stel de login-shell in
    • --versie- toon de programmaversie.

    Laten we nu een beetje experimenteren om te begrijpen hoe het su linux-commando werkt.

    Laten we eerst su uitvoeren zonder parameters, maar eerst zullen we een omgevingsvariabele maken om te controleren hoe deze opdracht ermee omgaat:

    Nu doen we:

    Laten we nu eens kijken wat er gebeurde:

    whoami
    $pwd
    $ echo $VAR
    $ echo $PATH
    $ uitgang

    Uit deze commando's zien we dat we nu de rootgebruiker zijn, maar de homedirectory wordt beschouwd als de directory van onze vorige gebruiker en onze variabele is niet opgeslagen, en de PATH-variabele is ook gewijzigd, nu is het pad /sbin daar toegevoegd.

    Nu gebruiken we de inlogmodus:

    En laten we dezelfde combinatie herhalen:

    whoami
    $pwd
    $ echo $VAR
    $ echo $PATH
    $ uitgang

    Dezelfde situatie, alleen deze keer is de homedirectory ook gewijzigd naar de rootdirectory. Maar we kunnen onze omgevingsvariabelen indien nodig opslaan, hiervoor is de optie -p:

    Zoals u kunt zien, blijft onze variabele bestaan. U kunt ook overstappen naar een andere gebruiker. Bijvoorbeeld:

    Het op deze manier verkrijgen van superuser-rechten wordt in veel distributies gebruikt, bijvoorbeeld Debian, OpenSUSE, ArchLinux, Gentoo, enz. Maar in Ubuntu, als distributie voor beginners, is inloggen als rootgebruiker uitgeschakeld. Dit wordt gedaan omdat het ook niet erg veilig is; je zou kunnen vergeten dat je een commando als root uitvoert en iets verkeerd doet in het systeem. Laten we daarom verder gaan met het volgende programma.

    Rootrechten verkrijgen zonder over te stappen

    Om de veiligste interface voor het werken met superuser-rechten in Linux te implementeren, is het sudo-commando ontwikkeld. Laten we eens kijken naar wat sudo is. Dit commando wordt vóór elk commando geschreven dat als superuser moet worden uitgevoerd, en om het uit te voeren moet je het wachtwoord niet van root, maar alleen van je gebruiker invoeren. Net als het vorige heeft dit hulpprogramma zijn eigen opties. Laten we eerst naar de syntaxis kijken:

    $ sudo opties commando

    Programma opties:

    • -B- voer het gelanceerde hulpprogramma op de achtergrond uit
    • -E- bewaar omgevingsvariabelen
    • -G- voer de opdracht uit vanuit de groep
    • -H- gebruik de thuismap
    • -l- toon een lijst met sudo-machtigingen voor de huidige gebruiker
    • -R- gebruik de SELinux-rol voor het commando
    • -S- gebruik schaal
    • -u- voer de opdracht uit als gebruiker, indien niet gespecificeerd, gebruik root
    • -i- voer het commando niet uit, maar voer de shell in, gelijk aan su -

    U kunt dezelfde experimenten uitvoeren, alleen voor deze opdracht, om te begrijpen hoe u de opdracht sudo moet gebruiken. Bijvoorbeeld:

    Het gebruik van sudo is de aanbevolen manier om opdrachten uit te voeren als root op Linux. Zo vergeet u niet waar u mee te maken heeft en loopt u de minste kans op beschadiging van het systeem. Maar er is nog steeds één onopgeloste vraag: wat ermee te doen grafische hulpprogramma's? Het sudo-commando voert ze immers niet uit, maar draait grafische schil draaien als root is niet veilig. Dit is waar we hierna naar zullen kijken.

    Grafische applicaties als superuser

    Om te beginnen grafische toepassingen bestaat namens de superuser speciale nutsvoorzieningen. Ze behouden alle noodzakelijke omgevingsvariabelen en machtigingen. In KDE is dit het kdesu-commando, en in Gnome het gksu-commando.

    Typ gewoon gksu of kdesu gevolgd door de gewenste opdracht:

    Met dit commando wordt de KDE-bestandsbeheerder gestart met superuser-rechten. In Gnome ziet het er als volgt uit:

    Het programma zal in het grafische venster om een ​​wachtwoord vragen, waarna de bestandsbeheerder wordt geopend.

    Conclusies

    Dat is alles. Nu weet je hoe je superuser-rechten kunt verkrijgen in Linux, je weet hoe je de sudo-opdracht moet gebruiken en wat het verschil is tussen sudo en su. Programma's die extra rechten op het systeem vereisen, zullen u nu geen problemen bezorgen. Als je vragen hebt, schrijf dan in de reacties!

    1. Gebruik het commando: su

    Veel commando's kunnen alleen door de superuser worden uitgevoerd, dus we moeten weten hoe we root kunnen worden. Om dit te doen kunnen we het commando gebruiken: su (gebruiker wisselen). De su-opdracht accepteert de volgende formaten:

    maar meestal zullen we gebruiken zo om gebruiker te worden wortel:

    Su - wortel

    Als de gebruikersnaam niet op de regel wordt opgegeven, wordt automatisch aangenomen dat de gebruiker root is, zodat het commando kan worden ingekort:

    maar beide teams gedragen zich anders. "su" geeft de huidige gebruiker een identiteit, terwijl "su -" de huidige gebruiker een identiteit geeft samen met de omgeving die zou worden verkregen door zich te registreren als.

    Vaak gebruiken gebruikers "su" om root te worden. Als u een opdracht probeert uit te voeren (bijvoorbeeld - ifconfig), ontvangt u: "command niet gevonden" fout.

    Su Wachtwoord: ifconfig bash: ifconfig: opdracht niet gevonden

    De reden is dat normale systeemgebruikers en de rootgebruiker verschillende PATH-omgevingsvariabelen hebben (je kunt het PATH van de gebruiker bekijken met "echo $PATH") Linux-opdrachten, zal de shell het PATH van de gebruiker doorzoeken om te proberen een opdracht te vinden om uit te voeren. Het begint met het doorzoeken van elke map in PATH totdat het doel is gevonden.

    Teams gewone gebruikers meestal te vinden in /usr/local/bin, /usr/bin en /bin. En de rootgebruikersopdrachten bevinden zich voornamelijk in /usr/local/sbin, /usr/sbin, /sbin en het root-PATH weerspiegelt dit. Dus als u superuser wordt met "su -", krijgt u ook een nieuw PATH voor uw hoofdopdrachten. En door alleen "su" te gebruiken, wordt het opgeslagen aangepast pad PATH is de standaard, daarom zal bij het uitvoeren van een programma dat zich bevindt in /usr/local/sbin, /usr/sbin, /sbin het resultaat opleveren: "command not found"-fout. Voor een meer gedetailleerde uitleg, zie de man bash-pagina, vooral de login shells-sectie.

    Dus dat moet of moet je aangeven volledige pad naar het commando (bijvoorbeeld - /sbin/ifconfig) wanneer u "su" gebruikt, of gebruik "su -" wanneer u root wordt.

    2. Sudo gebruiken

    U hoeft geen superuser te zijn elke keer dat u bepaalde specifieke administratieve functies wilt uitvoeren. Dankzij Sudo, kunt u sommige of alle opdrachten als root uitvoeren. Wanneer Sudo geïnstalleerd (pakket: Sudo), kunt u het configureren met de opdracht "visudo" als root. In principe bewerkt het (standaard Vim) /etc/sudoers, maar het wordt niet aanbevolen om dit handmatig te doen.

    Alex ALLES=(ALLE)ALLES

    Alex is de gebruikersnaam. Opslaan (druk op Escape en typ vervolgens wq) en je bent klaar. Log in als Alex en voer bijvoorbeeld het volgende uit:

    $sudo yum-update

    Sudo zal om een ​​wachtwoord vragen. Dit is het wachtwoord van Alex, niet dat van de rootgebruiker. Wees dus voorzichtig als u gebruikersrechten verleent met Sudo.

    Maar Sudo kan meer dan alleen dat. We kunnen een gebruiker of een groep gebruikers toestaan ​​slechts één opdracht of groep opdrachten uit te voeren. Laten we teruggaan naar ons sudoers-bestand. Laten we beginnen met Alex en Alisa, leden van de beheerdersgroep. Als we willen dat alle gebruikers in de groep "administrator" elke opdracht als superuser kunnen uitvoeren, moeten we ons voorbeeld aanpassen:

    %admin ALLES=(ALLE)ALLES

    Alex kan ook een superuser-opdracht uitvoeren en alisa heeft het recht om Sudo uit te voeren, met dezelfde rechten en met haar wachtwoord. Als Alex en Alisa geen lid zijn van dezelfde groep, kunnen we de alias van de gebruiker definiëren in het sudoers-bestand:

    User_Alias ​​ADMINS = alisa,alex

    Hier hebben we een alias gedefinieerd genaamd ADMINS, met leden alisa en alex.

    We willen echter niet dat Alex en Alisa een programma als root kunnen uitvoeren. We willen dat ze alleen "updatedb" kunnen uitvoeren. Laten we een opdrachtalias definiëren:

    Cmnd_Alias ​​LOCATE = /usr/sbin/updatedb

    Maar dit is niet genoeg! We moeten Sudo vertellen dat gebruikers die zijn gedefinieerd als ADMINS opdrachten kunnen uitvoeren die zijn opgegeven in LOCATE. Om dit te doen, zullen we de regels met "%admin" vervangen door deze:

    BEHEERDERS ALLEN = LOKEREN

    Dit betekent dat gebruikers met de alias ADMINS alle opdrachten in de alias LOCATE kunnen uitvoeren.

    Deze keer ziet /etc/sudoers er als volgt uit:

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

    Als gevolg hiervan kunnen Alex en Alisa Updateb als root uitvoeren door hun wachtwoord in te voeren.

    Als de laatste regel in het bestand wordt gewijzigd:

    BEHEERDERS ALLEN = NOPASSWD:LOCATE

    dan kunnen Alex en Alisa "sudo updateb" uitvoeren zonder een wachtwoord in te voeren.

    U kunt meer opdrachten aan een opdrachtalias en meer aliassen aan een regel toevoegen. We kunnen bijvoorbeeld een alias NETWORKING maken die er enkele bevat netwerk commando's type: ifconfig, route of 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

    Laten we dit allemaal toevoegen aan ons /etc/sudoers-bestand (met behulp van visudo!). We zullen onze ADMINS-groep ook de rechten verlenen om programma's uit te voeren vanuit de NETWORKING-alias:

    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 ADMINISTRATIES ALLEN = LOKEREN, NETWERKEN

    Een snelle test: log in als alisa (of alex) en typ:

    $ping -c 10 -i localhost

    Het antwoord zou snel terug moeten komen:

    PING localhost.localdomain (127.0.0.1) 56(84) bytes aan gegevens. ping: kan niet overstromen; minimale interval, toegestaan ​​voor de gebruiker, is 200 ms

    Nu hetzelfde, maar dan met Sudo:

    $sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes aan gegevens. 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 tijd=0,049 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 tijd=0,034 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 tijd=0,021 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 tijd=0,030 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 tijd=0,017 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 tijd=0,016 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 tijd=0,016 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 tijd=0,016 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 tijd=0,016 ms 64 bytes van localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 tijd=0,016 ms --- localhost.localdomain pingstatistieken --- 10 pakketten verzonden, 10 ontvangen, 0% pakketverlies, tijd 1 ms rtt min/avg/ max/mdev = 0,016/0,023/0,049/0,010 ms, ipg/ewma 0,187/0,028 ms

    Sudo vaak gebruikt om bepaalde gebruikers gedeeltelijke toegang te verlenen tot bevoorrechte opdrachten, zodat ze beperkte administratieve functies kunnen uitvoeren. Eén van de voorzieningen Sudo is dat alle commando's worden geschreven naar /var/log/secure. Het bovenstaande voorbeeld wordt beschreven door de regel in het logboek:

    18 april 11:23:17 localhost sudo: alex: TTY=pts/0; PWD=/home/alex ; GEBRUIKER=root; COMMAND=/bin/ping -c 10 -i 0 localhost

    Dat is alles. Nu zal ik nooit vergeten toen ik Sudo gebruikte: "met grote kracht komt grote verantwoordelijkheid."

    2.1 Sudo-shell

    Als je voldoende rechten hebt geconfigureerd in sudoers, kun je ook root openen schelp gebruik makend van:

    IN nieuwste versies alleen op CentOS 5, gebruik sudo -s om de shell als root uit te voeren. Wees heel voorzichtig, want hierdoor kunnen er nieuwe bestanden worden gewijzigd of aangemaakt thuismap Rooten en installeren in de homedirectory van de bellende gebruiker.

    3.consolehelper

    Consolehelper is een shell voor het starten van GUI-applicaties. Wanneer het begint te draaien, controleert het de PAM-configuratie voor de vereiste applicatie. Dit betekent dat we de gebruiker met alles kunnen authenticeren geïnstalleerde modules PAM. De belangrijkste methode is om een ​​wachtwoord te vragen, maar als we over de juiste apparatuur beschikken. we kunnen authenticeren met behulp van een smartcard, tokens, vingerafdrukken, enz. PAM-configuratie valt buiten het bestek van dit document (zie de PAM Administrator's Guide), dus we zullen kijken naar de consolehelper-configuratiestap die nodig is om applicaties als root uit te voeren en een root-wachtwoord te vereisen.

    Laten we als voorbeeld /usr/bin/xterm configureren om als root te draaien.

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

    Om PAM te configureren, maakt u nu een bestand /etc/pam.d/xterm-root:

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

    Configureer ten slotte consolehelper om /usr/bin/xterm als root uit te voeren met het commando "xterm-root". Maak een bestand /etc/security/console.apps/xterm-root:

    GEBRUIKER=root PROGRAM=/usr/bin/xterm

    Dat is alles. Voer "xterm-root" (vanaf opdrachtregel of snelkoppeling.desktop-bestand), voer het wachtwoord in en ga. Als u de foutmelding krijgt: "Xlib: verbinding met ":0.0" geweigerd door server", voer dan eerst "xhost local:root" uit.

    Hoe kan ik mijn rechten verhogen naar systeemrechten? Windows-wereld. Het blijkt dat hiervoor meer dan voldoende opties zijn. Wat u moet kiezen, hangt zowel af van de situatie als van uw voorkeuren. Zoals je begrijpt, moet je je krachten echter niet alleen voor ramen uitbreiden, maar ook voor pinguïns. Welke kansen zijn er? Nou, laten we eens kijken...

    Voorfase

    Zoals u zich herinnert (en zoals elke adequate beheerder zich zou moeten herinneren), wordt het werken onder Linux onder root ten strengste afgeraden. In een ideale wereld zou je het alleen gebruiken voor serverconfiguratie, software-installatie en -updates en andere puur administratieve taken. Het probleem is dat we in een gewone wereld leven, die verre van ideaal is. Daarom komt een dergelijke situatie soms nog steeds voor. Toegegeven, in de meeste gevallen puur door nalatigheid, omdat het historisch gezien zo gebeurde dat Linux-gebruikers moesten begrijpen hoe hun besturingssysteem. En zelfs als u iets van het systeem en zijn beveiligingsmechanismen begrijpt, kunt u niet onder de root blijven zitten. Daarom zullen we vandaag, in tegenstelling tot Windows, waar we het hadden over het verkrijgen van systeemrechten als beheerder, alleen opties overwegen om de rechten van een niet-bevoorrechte gebruiker naar root te vergroten. Dus laten we aan de slag gaan.

    Exploitaties

    Alle methoden voor het verkrijgen van superuser-rechten in Linux kunnen in twee categorieën worden verdeeld. De eerste is precies het gebruik van exploits. In tegenstelling tot Windows, met zijn mechanisme automatische installatie updates, moeten Penguin-volgers de release van patches en de installatie ervan grotendeels zelf controleren. In dit opzicht is de kans op het tegenkomen van een systeem dat nog niet volledig is gepatcht onder Linux-machines veel groter. Wat zijn de voordelen deze methode kun je benadrukken? Om te beginnen maken de meeste exploits gebruik van kwetsbaarheden in de besturingssysteemkernel, waardoor ze maximale privileges kunnen verkrijgen. Het vinden van geschikte exploitcode is niet zo moeilijk, en u kent waarschijnlijk een aantal bronnen. Bovendien hoeft u, om misbruik te kunnen maken van een exploit, soms niet alle details van de kwetsbaarheid die wordt gebruikt te begrijpen; u hoeft deze alleen maar correct te compileren en uit te voeren (soms moet u deze echter een beetje aanpassen, maar heel vaak zal alles werken zonder het aan te passen met een bestand). IN algemeen beeld Het algoritme van acties is als volgt:

    1. Bepaal de kernel- en distributieversie.
    2. Ontvang een lijst met beschikbare tools voor het bouwen van een exploit.
    3. Lever de sploit af op de doelmachine.
    4. Compileer (indien nodig) en voer het uit.
    5. Geniet van de resulterende wortel.

    Welnu, nu over elke stap in meer detail.

    Identificatie

    Afgaande op het plan moeten we eerst uitzoeken waar we terecht zijn gekomen, wat voor soort distro we gebruiken en wat de kernelversie is. De kernelversie kan worden opgehaald met behulp van het bekende uname -a commando of zijn analogen. Om informatie te krijgen over de distributie die u gebruikt, moet u naar het *-release-bestand kijken dat zich in de map etc bevindt (afhankelijk van de distributie kan het anders worden genoemd: lsb-release in Ubuntu, redhat-release in Rode Hoed/ CentOS enzovoort):
    cat /etc/*-release

    Als u de distributie- en kernelversie kent, kunt u doorgaan naar de tweede fase: het vinden van een geschikte "hoofdsleutel".

    Zoek naar een exploit

    Zodra alle benodigde informatie bij de hand is, is het tijd om op zoek te gaan naar een geschikte exploit. Het eerste dat in je opkomt is exploit-db.com, maar er zijn ook alternatieven: 1337day, SecuriTeam, ExploitSearch, Metasploit, securityreason, seclists. Er is tenslotte Google; die weet beslist meer over exploits dan wie dan ook. Als ik een beetje vooruitkijk, zal ik zeggen: soms werkt de "hoofdsleutel" om de een of andere reden misschien niet, of moet je hem een ​​​​beetje aanpassen aan bepaalde omstandigheden of je behoeften, dat wil zeggen, er doorheen gaan met een bestand. In dat geval zou het geen kwaad kunnen om meer over haar te weten te komen aanvullende informatie, verkrijgbaar via een van de volgende bronnen:
    www.cvedetails.com
    packetstormsecurity.org
    cve.mitre.org

    Stel dat je een geschikte exploit vindt die je toegang geeft tot de wereld van root. Het enige dat overblijft is om het op de een of andere manier naar de auto te vervoeren.

    Levering aan huis

    Om de spreader op zijn locatie af te leveren zijn er vele manieren, van de bekende cURL/wget, Netcat, FTP, SCP/SFTP, SMB tot het gebruik van DNS TXT-records. Om erachter te komen welke van deze tools we hebben, voer je het volgende uit:

    Zoek / -naam wget zoek / -naam nc* zoek / -naam netcat* zoek / -naam tftp* zoek / -naam ftp

    Laten we zeggen dat we Netcat hebben gevonden. Om een ​​bestand ermee over te dragen, voert u aan de ontvangende kant het volgende uit:
    nc -l -p 1234 > uit.bestand

    Dat wil zeggen, we luisteren naar poort 1234. Op de verzendende doen we het volgende:
    nc-w 3 1234< out.file

    Als de overdracht plaatsvindt vanuit *nix op een *nix-systeem, dat wil zeggen, daar en daar standaard nutsvoorzieningen, dan kunt u compressie gebruiken om het overdrachtsproces te versnellen. In dit geval zien de opdrachten er als volgt uit:

    Nc-l-p 1234 | decomprimeren -c | tar xvfp - // om tar cfp te verkrijgen - /some/dir | comprimeren -c | nc -w 3 1234 // om te verzenden

    De overige opties zijn nog eenvoudiger, dus we zullen het gebruik van wget, FTP en andere bekende methoden niet overwegen.

    Verstoppertje

    Oké, we hebben ontdekt hoe we het moeten bezorgen. Maar hoe voorkom je dat je verbrandt? Als uw exploit wordt ontdekt, kunt u er zeker van zijn dat de maas in de wet snel zal worden gedicht. Je moet het dus hosten, compileren en uitvoeren vanaf een onopvallende plek. In Linux zijn mappen die beginnen met een punt (bijvoorbeeld .secret_folder) verborgen. Daarom zou het logisch zijn om ze te gebruiken om hun activiteit te verbergen. Plaats er bijvoorbeeld exploitcode in: /tmp/.nothingthere/exploit.c . In dit geval moet u er echter eerst voor zorgen dat tmp is aangekoppeld zonder de noexec-optie en dat u de samengestelde exploit ervan kunt uitvoeren (gebruik hiervoor het mount-commando).

    Het bouwen en uitvoeren van de exploit

    Nadat wij de Sploit hebben afgeleverd en geplaatst, moet deze worden gemonteerd/geconfigureerd. In de regel worden exploits geschreven in C of een van de Python/Perl/PHP-scripttalen. Vaste lezers ][ weten dat het niet het beste is om een ​​compiler op uw server achter te laten beste oplossing, dus het wordt meestal uitgesneden. Als uw vraag over de versie gcc-compiler-v bash zal gcc: command not found zweren, wat betekent dat je "geluk" hebt en rond moet gaan. Dat wil zeggen: zoek naar een spreadsheet in Python, Perl of iets anders, of compileer het virtuele machine met een vergelijkbaar besturingssysteem en kernelversie. Verplaats vervolgens het resulterende uitvoerbare bestand naar de doelhost (deze methode garandeert echter geen 100% werking; de exploit kan vallen en het systeem laten crashen, dus wees hier voorzichtig). Zoals de praktijk leert, moet er echter nog steeds een tolk voor een van de genoemde talen in het systeem aanwezig zijn. Je moet dus niet meteen opgeven; laten we alle opties eens bekijken:

    Zoek / -naam perl* zoek / -naam python* zoek / -naam gcc* zoek / -naam cc

    Als dit lukt, hoeft u alleen maar de gecompileerde exploit uit te voeren en van de promotie te genieten. Nou ja, of zoek uit waarom het niet werkte, afhankelijk van je geluk.

    Sploits tegengaan

    Het is moeilijk om hier innovatieve recepten te bedenken. Alles is al lang bekend. U hoeft alleen de patches op tijd te installeren. Dit is de eerste. De tweede is het beperken van de plaatsen waar bestanden kunnen worden uitgevoerd (de map tmp zou deze mogelijkheid zeker moeten missen). Wel, pas er een paar toe beveiligingsoplossing, bijvoorbeeld grsecurity.

    Rechten, bestanden, paden en configuraties

    De tweede categorie die bij het verhogen van privileges kan worden onderscheiden zijn methoden die niet gerelateerd zijn aan het gebruik van exploits, maar gebaseerd zijn op het zoeken naar bestanden met verkeerd ingestelde rechten. Hier zijn, net als in het geval van Windows, enkele trucjes, maar in principe is het nog steeds hetzelfde werk: het verzamelen en analyseren van gegevens. Meestal is het eerste waar u op moet letten bestanden die voor iedereen leesbaar en beschrijfbaar zijn:
    vind / -perm 2 ! -type l -ls

    Mogelijk zijn er genoeg van groot aantal, en onder hen kun je iets interessants vinden: configuratiebestanden, bronnen van sites/applicaties, scripts gelanceerd door init of cron. In principe is een situatie waarin een bestand voor iedereen leesbaar en beschrijfbaar is normaal. Er ontstaan ​​problemen wanneer gebruikers/beheerders/scripts gedachteloos rechten beginnen te wijzigen. Probeer dit dus te vermijden als u de machtigingen wijzigt met behulp van chmod 777. Voer periodieke audits uit belangrijke bestanden waren niet voor iedereen beschikbaar.

    Setuid + setgid

    Zoals de documentatie vermeldt, zijn setuid en setgid machtigingsvlaggen waarmee uitvoerbare bestanden kunnen worden uitgevoerd met de rechten van de eigenaar of groep van het uitvoerbare bestand (meestal root). Dergelijke uitvoerbare bestanden hebben, wanneer ze met verhoogde rechten worden uitgevoerd, toegang tot meer bevoorrechte informatie. Als u bijvoorbeeld setuid instelt op de opdracht ls, kunt u de inhoud bekijken van mappen waartoe u aanvankelijk geen toegang had. En in het geval van vim kan ik configuratiebestanden bewerken waar ik voorheen niet het recht had om in te kijken.

    Als applicaties met de setuid/setgid-vlagset kwetsbaarheden bevatten zoals bufferoverflow of commando-injectie, kan een aanvaller willekeurige code uitvoeren met verhoogde bevoegdheden. Daarom is de volgende optie meestal het zoeken naar uitvoerbare bestanden met deze vlaggen.
    sudo find / -xdev \(-perm 4000\) -type f -print0 -exec ls -s () \;

    In principe kun je het zonder sudo doen, dit is alleen nodig om mappen te controleren waartoe je geen toegang hebt.

    Er zijn meestal drie opties voor verder gebruik hiervan uitvoerbare bestanden. De eerste is om te proberen privileges te verhogen op basis van de functionaliteit die door deze applicatie wordt geboden (of beter gezegd: bedenk je eigen manier om deze functionaliteit op een ongebruikelijke manier te gebruiken). De tweede optie is het vinden van een publieke exploit of het uitvoeren van onafhankelijke fuzzing om bugs te identificeren. De derde is commando-injectie. Er is geen universeel recept, het hangt allemaal af van de situatie.

    SUDO

    sudo (vervangend) commando gebruiker en do), wat letterlijk betekent “de gebruiker vervangen en uitvoeren”, stelt u in staat bepaalde bevoorrechte bronnen aan gebruikers te delegeren terwijl u een logboek van het werk bijhoudt. Dat wil zeggen, het biedt gebruikers de mogelijkheid om opdrachten uit te voeren als root (of andere gebruikers) met behulp van hun eigen wachtwoord, niet het rootwachtwoord. De regels voor het nemen van toegangsbeslissingen staan ​​in het bestand /etc/sudoers. Meer informatie over het formaat van dit bestand en het instellen van de regels vindt u in de officiële handleiding of op Wikipedia. Ik wil alleen zeggen dat dit bestand ook zorgvuldig moet worden gecontroleerd. Omdat het vaak voorkomt dat sommige applicaties dit tijdens de installatie wijzigen, en bovendien niet tijdens de installatie betere kant. Als gevolg hiervan hebben gebruikers de mogelijkheid om hun privileges te vergroten (een bericht over Offensieve beveiliging vertelt over een dergelijk geval).

    PAD

    Net als in Windows zullen ook in Linux verkeerd geconfigureerde paden u helpen uw rechten te vergroten. Dit gebeurt meestal met de omgevingsvariabele PATH (gebruik printenv om deze te bekijken). Heb je gekeken? Geweldig, vertel me nu: wat als de omgevingsvariabele PATH begint met. (.:/bin:/usr/sbin ....)? Dit wordt meestal gedaan door gebruikers die geen twee extra tekens willen typen, dat wil zeggen dat ze de opdracht als volgt willen aanroepen: $ program in plaats van $ ./program . Toevoeging. in PATH betekent de mogelijkheid om bestanden/scripts uit te voeren vanuit de werkmap. Je kunt het als volgt toevoegen:

    PATH=.:$(PATH) export PATH

    Stel je nu de situatie voor waarin we twee gebruikers hebben: Joe (aanvaller) en Bob. Joe weet dat Bob sudo-rechten heeft om gebruikerswachtwoorden te wijzigen, inclusief root. Bovendien is Bob lui en toegevoegd. aan de omgevingsvariabele PATH. Wile Joe schrijft een programma dat het root-wachtwoord verandert, noemt het ls en plaatst het in een map waar Bob graag kijkt. Wanneer deze laatste nu de map binnengaat en de inhoud ervan wil bekijken, zal het programma dat Joe schreef worden uitgevoerd en zal het root-wachtwoord worden gewijzigd. Daarom controleren we de omgevingsvariabelen altijd op de aanwezigheid van interessante dingen, en voor onszelf trekken we de volgende conclusies:

    1. Wij gebruiken het nooit. in de PATH-variabele.
    2. Als het punt daar nog steeds aanwezig is, plaatst u het volgende regel in .bashrc of .profile:
      PATH= echo $PATH | sed -e "s/::/:/g; s/:.:/:/g; s/:.$//; s/^://"

    Hulpmiddelen

    Om het zoeken te automatiseren zwakke punten u kunt de volgende hulpmiddelen gebruiken:

    1. LinEnum is een bash-script dat al het vuile werk voor je doet en alle controles uitvoert die in dit spiekbriefje worden beschreven. In totaal zijn er ongeveer 65 in zijn arsenaal diverse controles, beginnend met het verkrijgen van informatie over de kernelversie en eindigend met het zoeken naar potentieel interessante SUID/GUID-bestanden. Bovendien kunt u het script doorgeven trefwoord, waarnaar wordt gezocht in alle configuratie- en logbestanden. De controle wordt als volgt gestart: ./LinEnum.sh -k trefwoord -r report -e /tmp/ -t . Nadat het scannen is voltooid, krijgt u een vrij gedetailleerd rapport te zien, waarvan de meest interessante plaatsen geel worden gemarkeerd.
    2. LinuxPrivChecker - Een Python-script dat ook handig is bij het zoeken naar mogelijke opties voor het escaleren van bevoegdheden. Over het algemeen doet het allemaal dezelfde standaardzaken: het controleren van privileges, het verkrijgen van informatie over het systeem... Maar het belangrijkste kenmerk is dat het, nadat de controle is voltooid, u een lijst met exploits zal aanbieden die, naar zijn mening, zullen helpen privileges verhogen. Zo'n goede kerel :).
    3. unix-privesc-check - dit script Hiermee kunt u zoeken naar opties voor het verhogen van bevoegdheden, niet alleen in Linux, maar ook in Solaris, HPUX en FreeBSD. Het probeert configuratiefouten te detecteren waardoor een onbevoegde gebruiker in het systeem zou kunnen verschijnen.
    4. g0tmi1k's blog - en dit is een blog waarin alle controles die worden uitgevoerd door de drie genoemde tools goed worden beschreven. Ik raad je dus sterk aan om daar een kijkje te nemen en er kennis mee te maken, zodat je je kunt voorstellen hoe deze tools van binnenuit werken.



    LinuxPrivChecker bevat grote lijst exploits, die voortdurend wordt bijgewerkt vanuit de Exploit Database

    Nawoord

    Zoals je hebt gezien is het verhogen van privileges in de Linux-wereld ook heel gewoon. Het geheim van succes is simpel: om je doel te bereiken, moet je geduld hebben en weten waar je moet zoeken en waar je op moet letten. Waar je moet zoeken, je weet nu ook welke hulpprogramma's je moet gebruiken voor automatisering, dus nu kun je niet alleen een win-systeem, maar ook een nix-systeem overwinnen. Ga ervoor!