Одним з перших завдань, які повинен виконати системний адміністратор при налаштуванні ОС на новому сервері, поряд з налаштуванням користувачів та їх дозволів - ...
Блог компанії 3v-Hosting
9 хв.
Вчасно оновлювати сервер набагато простіше, ніж потім розбиратися з наслідками злому. Часто причиною багатьох успішних атак стають зовсім не складні методи зловмисників, а банальне нехтування базовими заходами безпеки у сфері інформаційної та кібербезпеки. Наприклад, виправлення вразливості вийшло кілька тижнів або місяців тому, а сервер так і продовжує працювати зі старою версією пакета, вразливою до злому.
Навіть мінімальна інсталяція Ubuntu складається з десятків окремих компонентів, таких як безпосередньо ядро системи, SSH, веб-сервер, бібліотеки, інтерпретатори мов, інструменти адміністрування тощо. Усе це регулярно оновлюється.
При цьому далеко не кожне оновлення системи призводить до простою, оскільки Ubuntu Server вміє самостійно встановлювати виправлення безпеки, а частину оновлень ядра можна застосовувати взагалі без перезавантаження завдяки технології Livepatch, що дуже стане в нагоді для серверів, чутливих до простоїв.
Такий підхід особливо зручний, якщо на сервері працюють сайти, CRM, API, поштові служби, бази даних або внутрішні сервіси компанії, які, по можливості, не повинні перезавантажуватися. Знову ж таки, адміністратору доводиться виконувати менше рутинних операцій, а вікно, протягом якого систему можна атакувати через вже відому вразливість, стає помітно коротшим.
Після оприлюднення нової уразливості часу на захист сервера зазвичай залишається небагато, оскільки сканування Інтернету починається майже відразу, а автоматичні боти швидко знаходять сервери, власники яких вирішили відкласти оновлення на потім з тих чи інших причин. У підсумку, чим довше відкладається встановлення виправлень, тим вища ймовірність, що уразливість встигнуть використати.
Проблема автоматичного встановлення оновлень в Ubuntu давно вирішена за допомогою стандартних засобів. За це відповідає пакет unattended-upgrades, який самостійно перевіряє наявність оновлень, завантажує їх і встановлює без участі адміністратора.
Встановлення цього пакета займає кілька хвилин і виконується за допомогою таких команд:
sudo apt update
sudo apt install unattended-upgrades
Після цього варто запустити майстер налаштування:
sudo dpkg-reconfigure unattended-upgrades
Під час налаштування система запитає, чи потрібно автоматично встановлювати оновлення безпеки. У більшості випадків доцільно вибрати Yes.
Робота утиліти unattended-upgrades визначається двома файлами.
Перший файл - це /etc/apt/apt.conf.d/50unattended-upgrades. Тут вказується, які оновлення дозволено встановлювати автоматично. У цьому ж файлі можна змінити додаткові параметри, такі як:
Конфігурація детально прокоментована, тому розібратися в налаштуваннях буде зовсім нескладно.
Другий файл - /etc/apt/apt.conf.d/20auto-upgrades. Він відповідає за періодичність запуску. Найпоширеніший приклад конфігурації може виглядати так:
APT::Periodic::Update-Package-Lists «1»;
APT::Periodic::Unattended-Upgrade «1»;
Ця конфігурація означає наступне:
За бажанням розклад можна змінити. Наприклад, запускати автоматичне оновлення раз на кілька днів замість щоденного розкладу.
Після налаштування автоматичного оновлення не зайвим буде переконатися, що все дійсно функціонує так, як ми задумали. Для цього спочатку можна перевірити стан основної служби за допомогою команди:
systemctl status unattended-upgrades
Потім варто перевірити журнал оновлень:
cat /var/log/unattended-upgrades/unattended-upgrades.log
Або скористатися журналом systemd:
journalctl -u unattended-upgrades
Якщо механізм працює нормально, то в логах будуть видні завантажені пакети, встановлені оновлення та можливі помилки під час їх встановлення.
Існує поширена думка, що після будь-якого оновлення сервера Linux обов’язково потрібно перезавантажувати систему. Але це зовсім не так, адже більшість пакетів оновлюється без зупинки операційної системи. Після встановлення нової версії зазвичай достатньо перезапустити лише той сервіс, який використовує оновлені файли.
Наприклад, після оновлення веб-сервера Nginx можна просто виконати команду:
sudo systemctl reload nginx
або після оновлення PostgreSQL виконати:
sudo systemctl restart postgresql
Для користувачів вашого сайту чи додатка такі дії найчастіше проходять непомітно.
Зворотна ситуація виникає під час оновлення безпосередньо ядра системи Linux. Нова версія встановлюється на диск, але сервер продовжує працювати зі старим ядром, яке вже знаходиться в оперативній пам’яті. Тому доки система не буде перезавантажена - зміни не набудуть чинності.
Саме тому після деяких оновлень Ubuntu виводить повідомлення:
System restart required
Перезавантаження може знадобитися й після оновлення деяких системних компонентів, які неможливо замінити «на льоту». Зазвичай йдеться про такі компоненти, як:
У всіх інших випадках достатньо перезапустити лише потрібні служби, не зачіпаючи роботу всього сервера. Це дозволяє встановлювати більшість оновлень без помітного простою.
Щоб скоротити кількість перезавантажень, Canonical розробила технологію Livepatch. Вона дозволяє застосовувати багато критичних виправлень безпеки безпосередньо до ядра Linux, що працює, без зупинки системи та без перезапуску сервера.
Як ми дізналися вище, після оновлення ядра нова версія починає використовуватися лише після перезавантаження сервера. Але Livepatch забезпечує, щоб виправлення для підтримуваних вразливостей завантажувалися в пам’ять і застосовувалися до ядра, що вже працює. Завдяки цьому сервер продовжує обслуговувати користувачів, а позапланове вікно обслуговування не потрібне.
Для використання цієї технології знадобиться обліковий запис Ubuntu One. Після реєстрації достатньо встановити на свій сервер клієнт Livepatch, прив’язати сервер до свого облікового запису та активувати сервіс. Подальша інсталяція підтримуваних виправлень відбувається автоматично у фоновому режимі.
Найбільшу користь Livepatch приносить там, де навіть короткий простой є небажаним. Наприклад:
При цьому слід розуміти, що можливості Livepatch не безмежні. Ця технологія поширюється лише на певні виправлення безпеки ядра і не замінює повноцінних оновлень. Тому якщо виходить нова версія ядра, змінюються внутрішні механізми його роботи або встановлюються великі функціональні оновлення, то планове перезавантаження сервера все одно залишається необхідним. Саме тому Livepatch варто розглядати як спосіб скоротити кількість перезавантажень сервера, а не як спосіб відмовитися від них повністю.
Після встановлення деяких оновлень Ubuntu автоматично створює спеціальний файл-маркер. Його поява означає, що частина встановлених змін почне працювати лише після перезавантаження системи.
Перевірити наявність такого файлу можна командою:
test -f /var/run/reboot-required && echo «Reboot required»
або просто:
ls /var/run/reboot-required
Якщо файл існує, то відкладати перезавантаження нескінченно не варто. Сам сервер продовжить працювати, однак оновлене ядро або окремі системні компоненти залишаться неактивними до наступного запуску.
У великих інфраструктурах цей механізм нерідко використовують разом із системами моніторингу та засобами управління конфігурацією, які автоматично відстежують появу файлу reboot-required, повідомляють адміністраторів і допомагають планувати обслуговування серверів без постійної ручної перевірки.
Після оновлення бібліотек деякі служби продовжують використовувати вже завантажені версії файлів. І доки процес не буде перезапущено, зміни не набудуть чинності.
Перевірити це допомагає утиліта needrestart.
Для встановлення цієї утиліти виконайте команду:
sudo apt install needrestart
Запускаємо утиліту командою:
sudo needrestart
Після аналізу програма покаже:
У багатьох випадках цього достатньо, щоб уникнути зайвого перезавантаження та обмежитися перезапуском окремих служб.
Автоматична установка оновлень позбавляє адміністратора великого обсягу рутинної роботи, але повністю залишати сервер без контролю все ж не варто. Навіть надійні механізми на кшталт unattended-upgradesкорисно час від часу перевіряти, особливо якщо система обслуговує робочі проєкти.
Перед увімкненням автоматичних оновлень бажано:
unattended-upgrades;
Гарною практикою вважається й використання моніторингу. Якщо після встановлення оновлень якийсь сервіс перестане відповідати або знадобиться перезавантаження, то адміністратор дізнається про це одразу, а не через кілька годин чи днів.
Для VPS та виділених серверів із високим навантаженням доцільно заздалегідь планувати вікна обслуговування. Більшість оновлень встановлюються автоматично й без простою, проте оновлення ядра, перевірка працездатності сервісів або інші адміністративні завдання все одно зручніше виконувати за заздалегідь узгодженим графіком.
Для більшості невеликих серверів це цілком реально. Але якщо інфраструктура є критичною для бізнесу, то краще періодично перевіряти її вручну, контролювати стан сервісів і переглядати журнали після встановлення оновлень.
Оновлення безпеки проходять тестування перед публікацією, тому ймовірність виникнення проблем невелика. Проте резервні копії мають залишатися обов’язковою частиною будь-якої серверної інфраструктури.
Не завжди. Багато адміністраторів дозволяють автоматичну інсталяцію лише оновлень безпеки, а функціональні зміни та перехід на нові версії програм виконують під час планового обслуговування.
Так. Іноді це роблять перед значними змінами в інфраструктурі, міграцією сервісів або оновленням додатків. Після завершення робіт автоматичне оновлення краще знову увімкнути, щоб сервер не залишався без актуальних виправлень безпеки.
Ні. Livepatch встановлює лише частину критичних виправлень безпеки для підтримуваних версій ядра. Але повноцінні оновлення ядра та планові перезавантаження все одно залишаються необхідними.
Якщо сервер працює стабільно, зазвичай достатньо переглядати журнали раз на кілька тижнів або після отримання повідомлень системи моніторингу. На серверах із високим навантаженням або критичними сервісами контроль журналів нерідко включають до регулярних регламентних перевірок.
Автоматичне оновлення Ubuntu Server дозволяє підтримувати систему в актуальному стані без постійної участі адміністратора. Пакет unattended-upgrades самостійно встановлює дозволені оновлення, needrestart допомагає визначити, які служби потребують перезапуску, а Canonical Livepatch у деяких випадках дозволяє обійтися без перезавантаження навіть після виправлення вразливостей ядра.
Але повністю відмовитися від контролю все ж не вдасться. Створення резервних копій, моніторинг, перевірка журналів, контроль необхідності перезавантаження та планові вікна обслуговування залишаються невід’ємною частиною експлуатації будь-якого сервера.
У результаті адміністратор витрачає менше часу на рутинні завдання, а сервер швидше отримує виправлення безпеки. Для VPS, виділених серверів та будь-якої сучасної інфраструктури такий підхід вже давно став стандартною практикою, тому й вам варто розглянути можливість впровадження цього механізму у своїй інфраструктурі, з урахуванням, звісно, усіх практичних рекомендацій, які ми вам надали.
Налаштування rate limiting у Nginx: як обмежити кількість запитів, захистити сервер від простих DDoS-атак, ботів та атак методом грубої сили. Приклади конфігура...
Як вимкнути IPv6 в Ubuntu Server 22.04 та 24.04: покрокові інструкції за допомогою sysctl, Netplan та GRUB, перевірка налаштувань та рекомендації для VPS і виді...
Налаштування часового поясу та NTP на Linux-сервері: перевірка часу, вибір часового поясу, синхронізація за допомогою Chrony та systemd-timesyncd, робота Docker...