УВІЙТИ
    opened image

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

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

     

    Що таке системи управління сервісами в Linux?

     

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

    Раніше адміністрування сервісами здійснювалося за допомогою init — традиційного процесу ініціалізації, який відповідав за запуск сервісів при завантаженні системи. Однак з впровадженням Systemd управління стало більш гнучким і потужним. Systemd прийшов на зміну init і став стандартом де-факто в більшості дистрибутивів Linux, таких як Ubuntu, CentOS та Fedora.

     

    Що таке Systemd?

     

    Systemd — системний менеджер ініціалізації, який управляє процесами та сервісами в Linux. Він був створений для підвищення швидкості завантаження системи та заміни застарілого init. Systemd виконує кілька важливих функцій:

    • Ініціалізація сервісів при запуску системи.
    • Управління залежностями між сервісами.
    • Моніторинг стану сервісів та процесів у системі.
    • Журналювання (systemd-journald) всіх подій, пов'язаних із сервісами та процесами.

    Однією з головних переваг Systemd є його сумісність з SysV та підтримка старих скриптів LSB, що дозволяє плавно перейти від використання init до більш сучасного управління сервісами.

    Навіщо потрібно відображати запущені сервіси?

    Знання того, які сервіси запущені на вашій системі, критично важливе для адміністрування. Це дозволяє:

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

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

     

     

    Відображення всіх сервісів у Linux через Systemd

     

    Щоб відобразити всі сервіси, які активні в системі, можна використовувати наявні команди:

    systemctl list-units --type=service

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

    systemctl --type=service

     

    Як відобразити активні сервіси в Systemd

     

    Активні сервіси — це ті, які або продовжують виконуватися, або завершили свою роботу, але ще не вивантажені з пам'яті. Щоб побачити список всіх активних сервісів, необхідно виконати наступну команду:

    systemctl list-units --type=service --state=active

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

    systemctl --type=service --state=active
    

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

    Запущені сервіси — це ті, які продовжують виконуватися в даний момент. Щоб відобразити їх, використовуйте наступну команду:

    systemctl list-units --type=service --state=running
    

    Альтернативна команда:

    systemctl --type=service --state=running

    Ці команди допоможуть системним адміністраторам швидко отримати інформацію про те, які сервіси працюють в даний момент.

    Ключові терміни в Systemd

    • Unit (Юніт) — це базова одиниця в Systemd. Юніти можуть бути сервісами, пристроями, монтувальними точками, сокетами та іншими об'єктами, що управляються системою.
    • Load (Завантаження) — статус, що вказує, чи завантажено юніт у пам'ять.
    • Active (Активний) — вказує, активний чи юніт (наприклад, сервіс запущений і працює).
    • SUB (Підстан) — уточнений статус юніта, який показує його поточний стан, наприклад, "running" (виконується) або "failed" (збій).
    • Description (Опис) — коротка строка, яка описує мету юніта.

     

    Створення алиаса для команди Systemd

     

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

    Додайте наступний алиас у файл ~/.bashrc:

    alias running_services='systemctl list-units --type=service --state=running'

    Після додавання цього алиаса оновіть поточну сесію командою:

     

    source ~/.bashrc
    

    Тепер ви можете швидко відображати запущені сервіси, використовуючи команду

    running_services.

    Визначення порту, на якому прослуховує сервіс

    Щоб дізнатися, який порт використовує конкретний сервіс, можна використовувати наступні команди:

    netstat -ltup | grep <ім'я_процесу>

    Альтернативна команда з використанням ss:

    ss -ltup | grep <ім'я_процесу>

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

     

    Відображення сервісів і портів, відкритих у брандмауері

     

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

    FirewallD

    Для відображення дозволених сервісів:

    firewall-cmd --list-services
    

    Для відображення відкритих портів:

    firewall-cmd --list-ports

    UFW

    Для відображення статусу UFW та списку дозволених сервісів і портів:

    sudo ufw status

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

     

     

    Висновок

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

     

    Також пропонуємо розглянути інші корисні статті: