Modul 3 · 3.2
sudo és a minimális jogosultságok
Modul 3: Felhasználók, jogosultságok és sudo · Olvasási idő: 11 perc
Tanulási cél: A lecke után Ön képes lesz egyszerű felhasználóként sudóval dolgozni, biztonságosan hozzáadni egy rendszergazdát, módosítani a sudo beállításait úgy, hogy ne zárja ki önmagát, és el tudja magyarázni, miért védik a szerverét a minimális jogosultságok.
Kulcsfogalmak: sudo, sudo csoport, wheel csoport, /etc/sudoers, /etc/sudoers.d, visudo, NOPASSWD, sudo -l, a root zárolása, a sudo naplója, minimális jogosultságok (least privilege), szolgáltatásfelhasználó
Miért ne dolgozzunk egyszerűen rootként?
A telepítés után gyakran rootként jelentkezik be. Ez kényelmes: minden szabad. De éppen ez a probléma:
- Egyetlen elgépelés is elég. A
rm -rf / home/anna/oud(figyelje meg a szóközt az első perjel után) rootként a teljes szerverét törli. Egyszerű felhasználóként csak hibaüzenetet kap. - Minden rootként fut. Egy internetről bemásolt szkript, egy program, amelyet kipróbál: mindegyik teljes jogosultságot kap.
- Nem marad nyom. Ha hárman dolgoznak rootként, utólag senki sem tudja, ki mit csinált.
- A root az a név, amellyel minden támadó próbálkozik. A rootként történő bejelentkezést jobb teljesen kikapcsolni (2.2. lecke), de ez csak akkor lehetséges, ha van más útja a rendszergazdai jogosultságokhoz.
Ez a másik út a sudo: saját nevén jelentkezik be, és csak a rendszergazdai jogosultságot igénylő parancsok elé írja oda: sudo.
anna@web1:~$ apt update
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
anna@web1:~$ sudo apt update
[sudo] password for anna:
Hit:1 http://deb.debian.org/debian trixie InRelease
...(Az Ubuntu a 25.10-es verzió óta alapértelmezésként a sudo-rs-t használja, amely a sudo egy új megvalósítása. A leckében szereplő minden dologhoz ugyanúgy működik.)
A sudo az Ön saját jelszavát kéri, nem a rootét. Ezután alapértelmezésként negyed óráig megjegyzi, így nem kell minden parancsnál újra megadnia. Minden sudóval futtatott parancs bekerül a naplóba.
Rendszergazda létrehozása
Debianon és Ubuntun a sudo csoport minden tagja bármit megtehet sudón keresztül. Ez a /etc/sudoers fájlban szerepel:
%sudo ALL=(ALL:ALL) ALLÍgy olvassa: a sudo csoport tagjai (%) minden gépen (ALL) bármely felhasználóként és csoportként ((ALL:ALL)) bármely parancsot (ALL) futtathatnak.
Rendszergazda hozzáadása tehát két lépésben történik, rootként:
root@web1:~# adduser anna
root@web1:~# adduser anna sudoEzután helyezze el Anna nyilvános kulcsát a /home/anna/.ssh/authorized_keys fájlban, a megfelelő tulajdonossal és jogosultságokkal:
root@web1:~# mkdir -p /home/anna/.ssh
root@web1:~# cp /root/.ssh/authorized_keys /home/anna/.ssh/
root@web1:~# chown -R anna:anna /home/anna/.ssh
root@web1:~# chmod 700 /home/anna/.ssh
root@web1:~# chmod 600 /home/anna/.ssh/authorized_keysNe felejtse el a chown parancsot: ha a root másolja be, a fájl a root tulajdona lesz, és akkor Anna nem tud bejelentkezni a kulcsával.
Most, miközben a root-munkamenet nyitva marad, tesztelje egy második ablakban:
anna@laptop:~$ ssh anna@192.0.2.10
anna@web1:~$ sudo -l
[sudo] password for anna:
User anna may run the following commands on web1:
(ALL : ALL) ALL
anna@web1:~$ sudo whoami
rootCsak ha ez működik, állítsa be az SSH-beállításokban a PermitRootLogin no értéket (2.2. lecke). Ettől kezdve mindig Annaként jelentkezik be.
Egy dolgot érdemes megjegyezni: Annának most jelszóra van szüksége a sudóhoz. Tárolja a jelszókezelőjében. A bejelentkezés a kulccsal történik, a sudo a jelszóval: két különböző dolog, amelyre egy betörőnek egyaránt szüksége van.
A sudo beállításainak módosítása: mindig visudóval
Egy hiba a /etc/sudoers fájlban azt jelentheti, hogy a sudo egyáltalán nem működik többé. Ha a root sem tud bejelentkezni, elakadt. Ezért a sudo beállításait soha ne egy átlagos szerkesztővel módosítsa, hanem a visudo segítségével. Ez egy ideiglenes másolatot nyit meg, és mentés előtt ellenőrzi a tartalmat:
root@web1:~# visudo -f /etc/sudoers.d/backupAz SSH-hoz hasonlóan itt is inkább egy saját fájlt használjon a /etc/sudoers.d/ mappában, mint a fő fájlt. Figyeljen a mappa két szabályára:
- Azokat a fájlokat, amelyek neve pontot tartalmaz vagy
~végződésű, a rendszer kihagyja. Abackup.conftehát nem működik, abackupviszont igen. Ennek célja a szerkesztők által készített másolatok figyelmen kívül hagyása, de sokakat meglep. - A fájlnak a root tulajdonában kell lennie, és mások számára nem lehet írható (a 440 a szokásos; ezt a visudo elintézi).
Ha egy meglévő fájlt szerkesztés nélkül szeretne ellenőrizni: a visudo -c mindent ellenőriz.
NOPASSWD: kényelmes, de tudja, mit csinál
A NOPASSWD beállítással a sudo nem kér többé jelszót:
anna ALL=(ALL:ALL) NOPASSWD: ALLEgyes VPS-lemezképek ezt beállítják az alapértelmezett felhasználónak, így a kulccsal történő bejelentkezés után azonnal rendszergazda. A sudo -l paranccsal nézze meg, mi érvényes az Ön szerverén. A következmény: akinél Anna kulcsa van, az azonnal root. Nincs többé második zár. Személyes szervernél választhatja ezt, de tudatosan tegye.
Sokkal jobb, ha a NOPASSWD csak egyetlen meghatározott parancsra vonatkozik, például egy biztonsági mentési szkriptre, amelynek automatikusan kell futnia:
backup ALL=(root) NOPASSWD: /usr/local/bin/maak-backupA backup felhasználó ekkor pontosan azt az egy szkriptet futtathatja rootként, jelszó nélkül, mást nem. Két csapda:
- Mindig a teljes elérési utat használja. Ha csak
maak-backupszerepel, valaki elhelyezhet egy saját, ugyanilyen nevű programot az elérési útja elején. - Maga a szkript nem lehet írható ennek a felhasználónak. Különben módosítja, és utána tetszőleges parancsokat futtat rootként. Ugyanez érvényes azokra a parancsokra, amelyek maguk is képesek shellt nyitni, például egy szerkesztőre (
vim,nano) vagy alessparancsra: aki ezeket sudón keresztül indíthatja, a programból root shellt nyithat. Ilyen parancsokat soha ne engedélyezzen önmagukban sudón keresztül.
Mi kerül a naplóba
Valahányszor valaki sudót használ, egy sor kerül a journalba (rsysloggal rendelkező rendszereken a /var/log/auth.log fájlba is):
anna@web1:~$ sudo journalctl _COMM=sudo --since today
Nov 09 10:31:02 web1 sudo[2214]: anna : TTY=pts/0 ; PWD=/home/anna ; USER=root ; COMMAND=/usr/bin/apt updateLátja, ki, hol, kinek a nevében és milyen parancsot futtatott. Ez az egyik oka annak, hogy ne dolgozzanak többen rootként. A sikertelen sudo-kísérletek ("incorrect password attempts", vagyis hibás jelszavas próbálkozások) egy olyan fiókból, amely nem az Öné, vészjelzésnek számítanak.
Minimális jogosultságok nagyban
A sudo egy általános elv egyik alkalmazása: a minimális jogosultságoké (least privilege). Minden felhasználó és minden szolgáltatás pontosan annyi jogosultságot kap, amennyire szüksége van, és nem többet. Egy szerveren ez többek között a következőket jelenti:
- Ön egyszerű felhasználóként dolgozik, és csak akkor használ sudót, ha szükséges;
- minden szolgáltatás saját, shell nélküli felhasználó alatt fut (3.1. lecke), nem rootként;
- egy webalkalmazás olyan adatbázis-felhasználót kap, amely csak a saját adatbázisát használhatja, nem pedig az adatbázisszerver rendszergazdáját;
- egy biztonsági mentési szkript csak azt az egy parancsot futtathatja, amelyre szüksége van (NOPASSWD teljes elérési úttal);
- egy kolléga, aki csak a webhelyet frissíti, írási jogot kap a
/var/www/example.commappára egy csoporton keresztül, nem sudót.
Az alapgondolat: ha valami elromlik (egy bővítmény biztonsági rése, egy ellopott kulcs), a kár arra az egy felhasználóra vagy szolgáltatásra korlátozódik. A CIS-elvekben és a hardeningről szóló leckében (10.1) ez újra és újra előkerül.
AlmaLinuxon és Rocky Linuxon
Ott a rendszergazdai csoport neve wheel a sudo helyett: usermod -aG wheel anna. A /etc/sudoers fájlban szereplő sor: %wheel ALL=(ALL) ALL. A visudo és a /etc/sudoers.d ugyanúgy működik. A sudo-üzenetek ott a /var/log/secure fájlban is megtalálhatók.
Összefoglalás
- Dolgozzon egyszerű felhasználóként, és a felügyelethez használjon sudót; a sudo az Ön saját jelszavát kéri, és minden parancsot naplóz.
- Rendszergazda létrehozása:
adduser anna,adduser anna sudo(RHEL-szerű rendszereken wheel), kulcs a megfelelő tulajdonossal és jogosultságokkal, tesztelés egy második ablakban, és csak ezután a root-bejelentkezés kikapcsolása. - A sudo-szabályokat csak a
visudosegítségével szerkessze, lehetőleg egy saját fájlban a/etc/sudoers.d/mappában, pont nélküli névvel. - A mindenre érvényes NOPASSWD eltávolít egy zárat; inkább csak egyetlen, teljes elérési úttal megadott parancsra használja, amelyet a felhasználó nem módosíthat.
- Minimális jogosultságok: minden felhasználó és szolgáltatás pontosan annyit kap, amennyire szüksége van, így egy hiba vagy biztonsági rés kicsi marad.
Kvíz
Feladat
O3.2. feladat: Rendszergazda sudo jogosultsággal. Hozzon létre a szerverén egy egyszerű rendszergazdát (például anna), állítsa be helyesen a kulcsát, tesztelje a bejelentkezést és a sudo -l parancsot egy második ablakban, majd kapcsolja ki a root SSH-bejelentkezését (PermitRootLogin no). Jelölje be a lépéseket, illessze be a id kimenetét (csak a nevet és a csoportokat), és válaszoljon a kérdésekre: melyik sor ad jogosultságot a rendszergazdájának, szerepel-e valahol NOPASSWD, és hogyan jut be, ha elfelejti a jelszavát?
O3.2. feladat: Rendszergazda sudo jogosultsággal
Ezt a feladatot saját maga végzi el, senki nem ellenőrzi. Pipálja ki, amit elvégzett, és jelölje meg a feladatot elvégzettként.
%sudo ALL=(ALL:ALL) ALL az /etc/sudoers fájlban (RHEL: %wheel). NOPASSWD csak tudatosan, és lehetőleg egyetlen parancsra korlátozva. Elfelejtett jelszó esetén: a szolgáltató konzolján keresztül, új root-jelszóval a panelen vagy egy mentőkörnyezetben, ezután passwd <gebruiker>.
A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.
További olvasnivaló
A cikkekben szereplő lépések a WebOké VPS-eire vonatkoznak; más szolgáltatóknál hasonlóan működik.
- A VPS biztonságossá tétele: az első öt perc
- Nem fér hozzá a VPS-éhez? Mi a teendő?
- DirectAdmin útmutató 12.2: Adatbázis felhasználók, jogosultságok és jelszavak
- Ubuntu Server: User management: https://ubuntu.com/server/docs/how-to/security/user-management/
- Debian kézikönyv, sudoers: https://manpages.debian.org/trixie/sudo/sudoers.5.en.html
- VPS: az első bejelentkezéstől a biztonságos szerverig 3.1: Saját felhasználó sudo jogosultsággal
