Към съдържанието

Настройки за бисквитки

Изберете кои видове бисквитки разрешавате. Можете да промените избора си по всяко време чрез „Настройки за бисквитки“ в долната част на всяка страница. Декларация за поверителност

Необходими

Винаги включени

Нужни са за вход, за запазване на количката и на Вашите избори. Те са винаги включени.

Кои бисквитки?
  • weboke_sessie, weboke_klant, weboke_remember: Вашата сесия и оставането в акаунта
  • weboke_basket: Вашата количка
  • wkBtwIncl: показване на цените с или без ДДС
  • wok_cookies: Вашият избор за бисквитките, 12 месеца

Измерват коя реклама води до посещение или поръчка, за да не плащаме за реклами без резултат.

Кои бисквитки?
  • Google Ads чрез Google Tag Manager (_gcl_au, _gcl_aw), до 90 дни
  • OpenAI Ads, реклами в ChatGPT
  • wok_aff: кой партньор Ви е препратил към нас (партньорска програма), 60 дни

4,6

Държава и език

Всяка държава има собствен сайт, с цените и ДДС на тази държава.

Преглед

sudo и минимални права

Модул 3: Потребители, права и sudo · Време за четене: 11 минути

Цел на урока: След този урок ще можете да работите като обикновен потребител със sudo, да добавяте администратор по безопасен начин, да променяте настройките на sudo, без да заключите сами себе си отвън, и да обясните защо минималните права защитават Вашия сървър.

Основни понятия: sudo, група sudo, група wheel, /etc/sudoers, /etc/sudoers.d, visudo, NOPASSWD, sudo -l, заключване на root, лог на sudo, минимални права (least privilege), служебен потребител

Защо просто да не работите като root?

След инсталацията често влизате като root. Това е удобно: всичко е позволено. Но точно в това е проблемът:

  • Една печатна грешка е достатъчна. rm -rf / home/anna/oud (обърнете внимание на интервала след първата наклонена черта) изтрива като root целия Ви сървър. Като обикновен потребител ще получите съобщение за грешка.
  • Всичко работи като root. Скрипт, който копирате от интернет, програма, която тествате: всичко получава пълни права.
  • Няма следа. Ако трима души работят като root, след това никой не знае кой какво е направил.
  • root е името, което всеки нападател опитва. По-добре е напълно да изключите влизането като root (урок 2.2), но това е възможно едва когато имате друг път до администраторските права.

Този друг път е sudo: влизате като себе си и поставяте 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
...

(От версия 25.10 Ubuntu използва по подразбиране sudo-rs, нова реализация на sudo. За всичко в този урок тя работи по същия начин.)

sudo иска Вашата парола, а не тази на root. След това по подразбиране я запомня за четвърт час, така че да не се налага да я въвеждате при всяка команда. Всяка команда, която изпълнявате със sudo, се записва в лога.

Създаване на администратор

В Debian и Ubuntu всеки от групата sudo може да прави всичко чрез sudo. Това е записано в /etc/sudoers:

%sudo   ALL=(ALL:ALL) ALL

Четете го така: членовете на групата sudo (%) могат на всички машини (ALL) като всеки потребител и група ((ALL:ALL)) да изпълняват всяка команда (ALL).

Добавянето на администратор става на две стъпки, като root:

root@web1:~# adduser anna
root@web1:~# adduser anna sudo

След това поставете публичния ключ на Anna в /home/anna/.ssh/authorized_keys с правилния собственик и права:

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_keys

Не забравяйте chown: ако е копиран от root, файлът принадлежи на root и тогава Anna не може да влезе с ключа си.

Сега тествайте във втори прозорец, докато сесията Ви като root остава отворена:

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
root

Едва когато това работи, задайте в настройките на SSH PermitRootLogin no (урок 2.2). Оттук нататък винаги влизате като Anna.

Едно нещо, което трябва да запомните: сега Anna има нужда от парола за sudo. Запазете я във Вашия мениджър на пароли. Влизането става с ключа, sudo с паролата: две различни неща, които нарушителят трябва да притежава едновременно.

Промяна на настройките на sudo: винаги с visudo

Грешка в /etc/sudoers може да означава, че sudo изобщо спира да работи. Ако и root не може да влезе, оставате блокирани. Затова никога не редактирате настройките на sudo с обикновен редактор, а с visudo. Той отваря временно копие и проверява съдържанието, преди да го запази:

root@web1:~# visudo -f /etc/sudoers.d/backup

Както при SSH, по-добре използвайте отделен файл в /etc/sudoers.d/, а не основния файл. Обърнете внимание на две правила за тази папка:

  • Файлове, чието име съдържа точка или завършва на ~, се пропускат. Затова backup.conf не работи, а backup работи. Целта е да се пренебрегват копията от редакторите, но това изненадва много хора.
  • Файлът трябва да принадлежи на root и да не може да бъде записван от други (обичайно е 440; visudo се грижи за това).

Ако искате да проверите съществуващ файл, без да го редактирате: visudo -c проверява всичко.

NOPASSWD: удобно, но знайте какво правите

С NOPASSWD sudo вече не иска парола:

anna ALL=(ALL:ALL) NOPASSWD: ALL

Някои VPS образи задават това за потребителя по подразбиране, така че след влизане с ключ веднага сте администратор. Проверете с sudo -l какво важи при Вас. Последицата: който има ключа на Anna, веднага е root. Няма вече втора ключалка. За личен сървър можете да изберете това, но го направете съзнателно.

Много по-добре е NOPASSWD само за една конкретна команда, например за скрипт за резервни копия, който трябва да може да се изпълнява автоматично:

backup ALL=(root) NOPASSWD: /usr/local/bin/maak-backup

Тогава потребителят backup може да изпълнява като root точно този един скрипт, без парола, и нищо друго. Два капана:

  • Винаги използвайте пълния път. Само с maak-backup някой може да постави собствена програма с това име в началото на своя път.
  • Самият скрипт не трябва да може да се записва от този потребител. Иначе той го променя и после изпълнява произволни команди като root. Същото важи за команди, които сами могат да отворят shell, като редактор (vim, nano) или less: който може да ги стартира чрез sudo, може от програмата да отвори root shell. Никога не давайте такива команди поотделно чрез sudo.

Какво се записва в лога

Всеки път, когато някой използва sudo, в journal се появява ред (а при системи с rsyslog и в /var/log/auth.log):

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 update

Виждате кой, къде, като кой и каква команда. Това е една от причините да не работите с няколко души като root. Неуспешни опити за sudo ("incorrect password attempts", т.е. въведена грешна парола) от акаунт, който не е Вашият, са сигнал за тревога.

Минимални права в по-голям мащаб

sudo е едно приложение на общ принцип: минимални права (least privilege). Всеки потребител и всяка услуга получава точно правата, от които има нужда, и не повече. На сървър това означава, наред с другото:

  • работите като обикновен потребител и използвате sudo само когато е необходимо;
  • всяка услуга работи под собствен потребител без shell (урок 3.1), а не като root;
  • уеб приложението получава потребител за базата данни, който може да използва само собствената си база данни, а не администратора на сървъра за бази данни;
  • скриптът за резервни копия може да изпълнява само единствената команда, която му е нужна (NOPASSWD с пълен път);
  • колега, който само обновява уебсайта, получава право на запис в /var/www/example.com чрез група, а не sudo.

Идеята: ако нещо се обърка (пробив в плъгин, откраднат ключ), щетите остават ограничени до този един потребител или услуга. Това се появява отново и отново в принципите на CIS и в урока за hardening (10.1).

В AlmaLinux и Rocky Linux

Там администраторската група се казва wheel вместо sudo: usermod -aG wheel anna. Редът в /etc/sudoers е %wheel ALL=(ALL) ALL. visudo и /etc/sudoers.d работят по същия начин. Съобщенията на sudo се намират там и в /var/log/secure.

Обобщение

  • Работете като обикновен потребител и използвайте sudo за администриране; sudo иска Вашата собствена парола и записва всяка команда в лога.
  • Създаване на администратор: adduser anna, adduser anna sudo (wheel при системи, подобни на RHEL), ключ с правилен собственик и права, тест във втори прозорец, едва след това изключване на влизането като root.
  • Редактирайте правилата на sudo само с visudo, за предпочитане в отделен файл в /etc/sudoers.d/ без точка в името.
  • NOPASSWD за всичко премахва една ключалка; по-добре го използвайте само за една команда с пълен път, която потребителят не може да променя.
  • Минимални права: всеки потребител и услуга получава точно това, което му трябва, така че грешка или пробив да остане малък.

Тест (quiz)

1. Каква парола иска sudo по подразбиране, когато Anna напише sudo apt update?



2. Създавате файла /etc/sudoers.d/backup.conf с валиден ред, но той не работи. Защо?



3. Защо редактирате правилата на sudo с visudo?



4. Кой ред дава на потребител за резервни копия най-малък риск?



5. В каква последователност изключвате влизането като root, без да заключите себе си отвън?



Задача

Задача O3.2: Администратор със sudo. Създайте на Вашия сървър обикновен администратор (например anna), настройте правилно ключа си, тествайте влизането и sudo -l във втори прозорец и след това изключете влизането като root през SSH (PermitRootLogin no). Отметнете стъпките, поставете изхода на id (само име и групи) и отговорете на въпросите: кой ред дава права на Вашия администратор, има ли някъде NOPASSWD и как ще влезете, ако забравите паролата си?

Задача O3.2: Администратор със sudo

Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.




Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.

Още за четене

Стъпките в тези статии се отнасят за VPS сървърите на WebOké; при други доставчици работи по подобен начин.

Моля, изчакайте…

Настройте домейните си

За всеки домейн настройте сървърите за имена, връзката с хостинга и кой ще бъде собственикът.

Домейните Ви се зареждат…