Користувачі та групи Linux: налаштування безпеки й аудит

Коли облікові записи та права доступу розходяться по серверах, зростає ризик зайвих повноважень і втрати контролю. Ми налаштовуємо користувачів і групи Linux під ключ: зводимо розрізнені записи до єдиної моделі, закриваємо зайві права та залишаємо зрозумілий регламент. Час на введення й виведення співробітника скорочується в рази.
Часті запитання

Налаштування користувачів Linux: де ламається розмежування доступу

Спільний обліковий запис на серверах виглядає зручним рівно до першого інциденту.

Усі дії в журналі підписані одним і тим самим uid, і визначити, хто саме перезапустив базу чи поправив конфігурацію, неможливо — розбір розтягується на дні, а виконавця шукають за непрямими ознаками.

Якщо такий запис ще й лежить у нотатках усієї команди, відкликати його швидше, ніж зрозуміти, у кого він є.

Друга типова поломка — права, видані «на час».

Правило в sudo з вимкненим запитом пароля залишається у файлі після закриття задачі, співробітник забутий у групі з правами на контейнери, а публічний ключ того, хто звільнився, продовжує лежати в authorized_keys одразу на десятках хостів.

Відкликання не було частиною процесу, тому зайві привілеї живуть роками й спливають лише під час перевірки або після збою.

Звідси третя проблема: аудит доступу не відповідає на просте питання — хто і коли отримав доступ до сервера.

Числові ідентифікатори перевикористовуються після видалення запису, старі рядки журналів починають указувати на іншу людину, а термін зберігання логів часто коротший за термін життя ключа.

Розмежування прав доступу перестає бути формальністю: без персональних облікових записів розслідування обнуляється.

Розбираємо, як це закривається: персональні облікові записи з ролями через групи, обмежений термін життя привілеїв, регулярне звіряння ключів і правила аудиту, за якими доступ можна підтвердити або спростувати за журналом.

Що дає порядок в облікових записах і правах доступу

Єдина модель доступу — це не про зручність адміністрування, а про передбачувані цифри: скільки часу займає видача й відкликання прав, скільки на парку привілейованих облікових записів і чи можна відновити картину інциденту за журналами входу.

Видача й відкликання прав — одна операція на весь парк

Права роздаються групами, а не руками по серверах — штатний механізм Linux переноситься в єдину модель доступу.

Співробітник потрапляє в потрібну групу й отримує права всюди, де вона оголошена; звільнення або зміна ролі — це вилучення з групи, і доступ зникає на всіх вузлах одночасно.

Частка серверів під спільним регламентом прямує до 100%, а відкликання перестає залежати від того, чи пам'ятає черговий про конкретну машину.

Привілейованих облікових записів — одиниці, термін життя обмежений

Замість спільного облікового запису root на кожному хості — іменні записи й правила sudo за ролями, а для разових робіт — тимчасовий доступ із датою закінчення. Кількість привілейованих облікових записів скорочується до одиниць, і кожен вхід під ними пояснюваний.

Термін життя облікового запису підрядника або стажера задається заздалегідь: запис згасає сам, і нагадувати про нього нікому не потрібно.

Інцидент розбирається за журналами

Журналювання входу, викликів sudo і правок у групах іде до централізованого збору, де запис прив'язаний до людини, а не до адреси машини. Розбір питання «хто і коли отримав доступ до цього вузла» займає хвилини замість дня листування з командою.

Розмежування доступу в Linux: локальні записи, каталог, домен

Схема облікових записів визначається не розміром парку, а тим, де живе джерело істини і хто відповідає за відкликання доступу.

Локальні записи в /etc/passwd і /etc/group працюють, поки машин десятки: звільнення співробітника перетворюється на обхід усіх хостів, ідентифікатори розходяться між стендами, а спадок у sudoers доводиться звіряти вручну.

Нижче — три схеми, між якими реально обирають. У кожної своя ціна в підтримці, і її видно лише на другий рік експлуатації.

Схема Коли підходить Що підтримувати власними силами
Локальні облікові записи й групи 1–5 хостів, ізольовані стенди, сервісні записи під конкретну задачу Синхронізацію ідентифікаторів, ручне відкликання доступу, розбір розбіжностей у правилах підвищення прав, інвентаризацію «хто де заведений»
Служба каталогу 10+ хостів, єдині вимоги до паролів, спільний вхід по SSH для команди Доступність самої служби, репліки, резервне копіювання та відновлення каталогу, перенесення схеми під час оновлення
Доменна автентифікація Парк уже в домені, потрібні групові політики та єдиний вхід Зв'язку доменних і локальних облікових записів, кеш даних для роботи без зв'язку з контролером, налагодження зіставлення груп

На практиці майже завжди виходить гібридна схема: домен відповідає за людей і групи, локальні записи — за сервіси, яким домен не потрібен (демони, резервне копіювання, моніторинг).

Ключове тут — заздалегідь закріпити діапазони ідентифікаторів під кожну роль, інакше під час підключення хоста до каталогу наявні файли змінять власника й застосунок перестане читати свої дані.

Друга умова — керування групами через правила, а не правка файлів на хості: тоді відкликання доступу перевіряється однією командою й залишається в журналі аудиту.

Як відбувається впровадження: від аудиту записів до регламенту

Впровадження йде не з правки конфігів, а з повної картини: у парку серверів облікові записи накопичуються, доступ «на час» залишається назавжди, під час звільнення блокують вхід у систему, але забувають ключі в authorized_keys, sudo-правила та задачі в cron.

Тому порядок зворотний звичному: спершу фіксуємо, що є, потім проєктуємо ролі, і лише потім змінюємо конфігурацію.

  1. Аудит облікових записів. Збираємо список користувачів і груп із хостів, розбираємо sudoers, терміни дії паролів, ключі та сервісні акаунти, звіряємо з реальними співробітниками й власниками процесів.
  2. Інвентаризація прав. Будуємо матрицю «хто — яка група — яке sudo-правило — на яких хостах», позначаємо надлишкові права з вимкненим паролем і доступ до каталогів, яким він не потрібен.
  3. Схема доступу. Формулюємо ролі — адміністратор, черговий, розробник, сервісний акаунт — і правила: права видаються групами, а не персонально, вхід root за паролем закритий, централізоване джерело облікових записів обов'язкове.
  4. Налаштування. Переносимо схему в опис конфігурації, щоб доступ відтворювався на новому хості, а не налаштовувався руками: групи, sudo-політики, обмеження сесій, запис дій у системний журнал.
  5. Перевірка на стенді, потім у продакшені. Перевіряємо синтаксис правил до застосування, розкочуємо групами серверів зі збереженням попередньої версії конфігурації — відкат займає хвилини.
  6. Перевірка після впровадження. Проходимо тести від імені кожної ролі: потрібна команда проходить, зайва відбивається, спроба підвищення прав потрапляє в журнал. На виході — звіт «до і після» за кількістю записів і правил.
  7. Передавання регламенту. Віддаємо документ: як завести й як закрити обліковий запис, що робити під час звільнення, хто і з якою періодичністю переглядає права; проводимо навчання відповідальних і передаємо шаблони перевірок.

Конфігурації, схеми доступу та регламенти за обліковими записами

Налаштування облікових записів закінчується не робочим входом на сервер, а набором артефактів, за якими ваша команда зможе керувати доступами без нас. Усе лежить у тому самому репозиторії, що й конфігурація інфраструктури, — з історією змін і можливістю відкотити правку.

  • Файли конфігурацій — правила входу, обмеження sudo й налаштування підключення до каталогу, розкладені за ролями й хостами, а не один спільний зліпок на весь парк.
  • Карта ролей і груп — таблиця «роль → групи → хости → рівень доступу», за якою відразу видно, хто і куди потрапляє.
  • Політики паролів і ключів — термін життя, складність, блокування після невдалих спроб, вимоги до ключів і другий фактор для адміністративних облікових записів.
  • Регламент видачі й відкликання прав — заявка, погоджувач, термін дії тимчасового доступу, порядок дій під час звільнення й переведення.
  • Порядок перегляду прав — звіряння активних облікових записів із кадровими даними за розкладом і окремий обхід службових облікових записів і сервісних ключів.
  • Документація щодо облікових записів — де еталонна конфігурація, як перевірити розбіжність на хості, що робити в разі відмови входу.
  • Інструкції для служби підтримки — типові сценарії: співробітник пішов, змінив роль, втратив ключ, потрібен разовий доступ на добу.

Кожен пункт перевіряємо: розгортаємо доступи на чистому стенді строго за документацією й дивимося, де її не вистачило. Зазвичай після такого прогону інструкції стають коротшими, а карта ролей — точнішою.

Кейс: єдина модель доступу замість роз'їханих записів

Що було до робіт

До нас прийшла Роздрібна мережа з парком із 40 серверів, де доступ жив у локальних файлах: у кожного адміністратора свій запис у sudoers або в групі wheel, паролі пересилалися в месенджерах, а ssh-ключі не відкликалися після звільнення.

Інвентаризація показала 340 записів із підвищеними правами — частина належала підрядникам, які вже рік не торкалися інфраструктури.

Розбір одного інциденту з падінням сервісу займав три дні: за логами не можна було зрозуміти, чий обліковий запис запускав команду і що саме змінювалося на диску.

Що змінили й що вийшло

Облікові записи звели в єдиний каталог, а права описали ролями за зонами відповідальності, а не за людьми.

Постійні привілеї залишили тільки черговій зміні, агентам моніторингу та сервісним обліковим записам; решті видаємо тимчасові — на 4 години, із зазначенням задачі та автоматичним закінченням терміну.

Паролі прибрали на користь ключів, а кожна дія з підвищеними правами пишеться в спільний журнал із прив'язкою до конкретної людини.

Постійних привілейованих записів залишилося 27 замість 340. Видача доступу займає 15 хвилин за заявкою з погодженням, відкликання — хвилини: обліковий запис вимикаємо в каталозі, і він перестає працювати на всіх серверах одразу, без обходу машин вручну.

Розбір інциденту скоротився до півтори години: видно, хто запускав команду, з якої машини і що було до і після.

Окремо закріпили регламент: щоквартальне звіряння каталогу з фактичними підключеннями, перегляд ролей під час зміни посади й обов'язковий розбір кожного випадку підвищення прав поза заявкою.

Що робити, якщо облікові записи вже роз'їхалися по серверах?

Знести локальні облікові записи й одразу ввімкнути централізований каталог не можна: на серверах уже закріплені власники файлів із конкретними UID, ключі доступу в домашніх каталогах, правила sudo з точковими винятками та службові завдання за розкладом.

Масова заміна ламає не лише вхід людей, а й обмін між сервісами — бекапи, вивантаження й розсилки зупиняються без зрозумілої помилки в журналах.

Перший крок на живій інфраструктурі — опис, а не правки. Збираємо по всіх хостах локальних користувачів і групи, їхні UID, склад груп, права sudo, власників каталогів із даними та активні ключі доступу.

Робимо це збирачем фактів (у нас — Ansible), на виході — зведена таблиця, де відразу видно, кого не можна чіпати взагалі, а кого можна переводити першою хвилею.

Далі — поступовий перехід. Нових користувачів заводимо в каталозі, локальні записи залишаємо, поки ім'я, UID і групи збігаються: файли, створені до і після переведення, читаються однаково — це і є зворотна сумісність, заради якої перехід розтягують на тижні.

Правила sudo переносимо окремими файлами в каталог включень, а не правкою спільного файлу: помилка в одному рядку тоді не вимикає sudo всім одразу.

Облікові записи застосунків і службові залишаємо локальними — вони прив'язані до фіксованого UID, і переведення рве доступ до даних і права на каталоги. Відповідальним на час переходу зберігаємо аварійний локальний вхід із ротацією пароля й записом у журнал.

Старий механізм вимикаємо тільки після звіряння: якщо за локальними обліковими записами входів немає заданий термін, їх відводимо в архів.

Технічні питання щодо облікових записів і прав доступу

Облікові записи й права — ділянка, де зміни накопичуються роками й рідко ревізуються. Нижче — відповіді на питання, які найчастіше виникають під час розбору доступу й передавання регламенту.

Чи можна залишити спільний обліковий запис?

Тільки якщо він потрібен технічно. Іменний запис із точковими правилами sudo в окремому файлі залишає персональний слід у журналах, а дії залишаються відтворюваними. Спільний логін, якщо без нього не можна, обмежуємо ключем і адресою джерела.

Як заводити сервісні облікові записи?

Без оболонки входу й із мінімумом прав: оболонка nologin, доступ до потрібних каталогів через групу, а не через право запису для всіх. Так сервіс не перетворюється на готову точку входу для зловмисника.

Як дати доступ підряднику й не втратити контроль?

Окремий обліковий запис, вхід за ключем, обмежений набір команд через sudo і термін дії. Після робіт доступ блокується, ключ відкликається, дії залишаються в журналі.

Чи можна видати права на час?

Так, це штатний режим: правила видачі виносимо в окремі файли, вмикаємо й вимикаємо їх за розкладом, а термін життя самого облікового запису обмежуємо окремим параметром.

Кому належить регламент після передавання?

Вам. Передаємо матрицю доступу, порядок видачі й відкликання прав, чек-лист під час звільнення та самі конфігурації з коментарями — регламент можна виконувати й змінювати без нашої участі.

Розкажіть про свій парк серверів — повернемося з планом

Щоб оцінка була по суті, а не за шаблоном, достатньо кількох вступних. Потрібно розуміти, звідки беруться облікові записи, як влаштований вхід на сервери і де осідають події — тоді аудит доступу рахується за реальною картиною, а не за здогадками.

Що надіслати для старту обговорення:

  • Джерело облікових записів: локальні файли, каталог LDAP або домен Active Directory, а також чи є гібридні схеми.
  • Правила входу: налаштування SSH — заборона пароля для сервісних облікових записів, обмеження за групами, чи вимкнений прямий вхід суперкористувача.
  • Список привілейованих ролей: хто і через що отримує підвищені права, чи є разові винятки в sudoers.
  • Політику життєвого циклу: термін дії пароля, блокування після невдалих спроб, порядок звільнення й відкликання ключів.
  • Куди пишуться журнали входу й зміни прав: локальні файли, виділений сервер збору або зовнішня система.
  • Інвентар: скільки серверів, які групи образів, чи є контури з окремими вимогами до доступу.

У відповідь повертаємо конкретику, за якою можна ухвалювати рішення. Карту доступу: хто куди ходить, через яку групу, де видані зайві права.

Межі робіт із явним переліком, що входить, а що залишається на вашому боці, і порядок перевірки: контрольний список по кожному серверу, спосіб відкату й точка, на якій зміни фіксуються.

Передавання результатів — конфігурації, схема ролей, регламент видачі й відкликання доступу та коротка інструкція для чергової зміни. Опишіть задачу — повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139