Linux-сервер і безпека: що закрити після встановлення

Встановлення нової операційної системи Linux на сервер – це перший, але далеко не останній крок на...

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

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

Оновлення системи: фундамент безпеки

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

Для дистрибутивів на базі Debian/Ubuntu, команда виглядає так:

  • sudo apt update && sudo apt upgrade -y

Для дистрибутивів на базі Red Hat/CentOS/Fedora:

  • sudo yum update -y або sudo dnf update -y

Переконайтеся, що ви виконуєте це регулярно, а також налаштуйте автоматичне оновлення, якщо це можливо та безпечно для вашого середовища.

Управління користувачами та правами доступу

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

Обмеження доступу до root

  • Відключення прямого входу root через SSH: Це одна з перших речей, яку слід зробити. Редагуйте файл /etc/ssh/sshd_config і встановіть PermitRootLogin no. Після зміни перезапустіть службу SSH (sudo systemctl restart sshd).
  • Використання sudo: Надайте необхідні права користувачам через sudo. Переконайтеся, що користувачі, які потребують підвищених привілеїв, налаштовані для використання sudo. Створення групи sudoers та додавання користувачів до неї є стандартною практикою.
  • Налаштування sudoers: Файл /etc/sudoers керує тим, хто і які команди може виконувати з правами root. Використовуйте команду visudo для безпечного редагування цього файлу.

Сильні паролі

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

Налаштування брандмауера

Брандмауер (firewall) є першою лінією оборони, що контролює вхідний та вихідний мережевий трафік. Важливо налаштувати його так, щоб дозволяти лише необхідні порти та послуги.

Інструменти брандмауера

  • iptables/nftables: Це стандартні інструменти командного рядка для керування правилами брандмауера. Вони потужні, але можуть бути складними для початківців.
  • UFW (Uncomplicated Firewall): Для дистрибутивів Ubuntu та Debian, UFW є більш простим у використанні інтерфейсом для iptables.
  • firewalld: Часто використовується в дистрибутивах на базі Red Hat. Він використовує концепцію зон для керування правилами.

Базові правила

Після встановлення, брандмауер повинен бути налаштований так, щоб блокувати весь вхідний трафік за замовчуванням і дозволяти лише ті порти, які необхідні для роботи ваших сервісів. Типові порти, які варто відкрити (з урахуванням безпеки):

  • SSH (22/tcp) – тільки з довірених IP-адрес
  • HTTP (80/tcp) – якщо сервер є веб-сервером
  • HTTPS (443/tcp) – якщо сервер є веб-сервером і використовує SSL/TLS

Приклад налаштування UFW:

  • sudo ufw enable
  • sudo ufw default deny incoming
  • sudo ufw default allow outgoing
  • sudo ufw allow ssh (або sudo ufw allow 22/tcp)
  • sudo ufw allow http
  • sudo ufw allow https
  • sudo ufw status verbose

Безпека SSH

SSH є основним протоколом для віддаленого доступу до Linux-сервера. Його компрометація може призвести до повного контролю над вашим сервером. Тому забезпечення безпеки SSH є пріоритетом.

Ключові налаштування SSH

  • Відключення аутентифікації за паролем: Найбільш безпечний метод – використання SSH-ключів. Згенеруйте пару ключів (приватний та публічний) і додайте публічний ключ на сервер. Потім відключіть аутентифікацію за паролем, встановивши PasswordAuthentication no в /etc/ssh/sshd_config.
  • Зміна стандартного порту SSH: Хоча це не є панацеєю, зміна стандартного порту 22 на інший (наприклад, 2222) може зменшити кількість автоматизованих атак, спрямованих на порт 22. Змініть Port 22 на бажаний порт в /etc/ssh/sshd_config. Не забудьте оновити правила брандмауера.
  • Обмеження доступу за IP-адресою: Дозволяйте доступ по SSH тільки з певних, довірених IP-адрес або діапазонів. Це можна зробити як на рівні брандмауера, так і через конфігурацію SSH (наприклад, за допомогою директиви AllowUsers або AllowGroups).
  • Використання Fail2ban: Fail2ban – це потужний інструмент, який сканує лог-файли на наявність зловмисних спроб (наприклад, множинних невдалих спроб входу в SSH) та тимчасово блокує IP-адреси зловмисників.

Впровадження системи виявлення вторгнень (IDS/IPS)

Системи виявлення вторгнень (IDS) моніторять мережевий трафік та системні події на наявність ознак зловмисної активності. Системи запобігання вторгненням (IPS) роблять те саме, але також можуть вживати активних заходів для блокування загроз.

Популярні рішення

  • Snort: Один з найпопулярніших IDS/IPS з відкритим вихідним кодом.
  • Suricata: Ще один потужний IDS/IPS, який підтримує багатопоточність.
  • AIDE (Advanced Intrusion Detection Environment): Система перевірки цілісності файлів, яка повідомляє про зміни в системних файлах.

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

Безпека веб-сервера (якщо встановлено)

Якщо ваш Linux-сервер призначений для хостингу веб-сайтів, безпека веб-сервера (Apache, Nginx тощо) стає надзвичайно важливою.

Рекомендації

  • Регулярне оновлення: Оновлюйте веб-сервер та всі повязані з ним компоненти (PHP, бази даних тощо) до останніх версій.
  • Мінімізація модулів: Відключайте непотрібні модулі веб-сервера, щоб зменшити поверхню атаки.
  • Захист від поширених атак: Налаштуйте веб-сервер для захисту від таких атак, як SQL-інєкції, міжсайтовий скриптинг (XSS), а також для обмеження доступу до чутливих файлів.
  • SSL/TLS: Завжди використовуйте HTTPS для шифрування трафіку. Отримуйте сертифікати від надійних органів (наприклад, Lets Encrypt).
  • WAF (Web Application Firewall): Розгляньте можливість встановлення WAF (наприклад, ModSecurity для Apache/Nginx) для додаткового захисту веб-додатків.

Керування журналами (Log Management)

Журнали є безцінним джерелом інформації для виявлення та аналізу інцидентів безпеки. Важливо налаштувати їх належним чином.

Ключові аспекти

  • Централізоване збирання логів: Для великих інфраструктур розгляньте використання систем централізованого збору логів (наприклад, ELK Stack, Graylog, Splunk).
  • Регулярний моніторинг: Автоматизуйте процес моніторингу логів на наявність підозрілої активності.
  • Зберігання логів: Визначте політику зберігання логів, яка відповідає вашим потребам та законодавчим вимогам.
  • Захист логів: Переконайтеся, що лог-файли захищені від несанкціонованого доступу та модифікації.

Контроль цілісності файлів

Системи контролю цілісності файлів (File Integrity Monitoring – FIM) відстежують зміни в ключових файлах системи. Це допомагає виявити, чи були файли модифіковані зловмисниками.

Інструменти

  • AIDE (Advanced Intrusion Detection Environment): Як згадувалося раніше, AIDE створює базу даних хешів системних файлів і порівнює її з поточним станом файлів.
  • Tripwire: Ще один популярний інструмент FIM.

Регулярне сканування та порівняння стану файлів з базою даних дозволить швидко виявити будь-які несанкціоновані зміни.

Безпечне відключення непотрібних служб

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

Процес

Використовуйте команду systemctl list-units --type=service для перегляду списку запущених служб. Для кожної служби, яка не потрібна, виконайте:

  • sudo systemctl stop <назва_служби>
  • sudo systemctl disable <назва_служби>

Будьте обережні, щоб не вимкнути критично важливі системні служби.

Регулярне резервне копіювання

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

Рекомендації

  • Автоматизація: Налаштуйте автоматичне створення резервних копій.
  • Тестування: Регулярно тестуйте процес відновлення даних з резервних копій, щоб переконатися в їх справності.
  • Зберігання: Зберігайте резервні копії в безпечному, віддаленому місці, окремо від основного сервера.
  • Типи копій: Розгляньте використання різних типів резервних копій (повні, інкрементні, диференційні).

Додаткові заходи безпеки

Окрім перерахованих вище кроків, є ще кілька важливих аспектів, які варто врахувати:

SELinux/AppArmor

SELinux (Security-Enhanced Linux) та AppArmor – це механізми примусового контролю доступу (Mandatory Access Control – MAC), які надають додатковий рівень безпеки, обмежуючи дії програм та процесів.

  • SELinux: Часто використовується в дистрибутивах на базі Red Hat. Має кілька режимів роботи (Enforcing, Permissive, Disabled). Режим Enforcing забезпечує найвищий рівень захисту.
  • AppArmor: Поширений в Ubuntu та Debian. Використовує профілі для обмеження можливостей програм.

Належне налаштування цих систем може значно зменшити шкоду від вразливостей.

Шифрування диска

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

Мережева сегментація

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

Регулярний аудит безпеки

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

Висновок

Безпека Linux-сервера – це безперервний процес, а не одноразова дія. Після встановлення системи необхідно виконати низку критично важливих кроків для її захисту. Від базових оновлень та налаштування брандмауера до більш складних механізмів, таких як IDS/IPS та MAC-системи, кожен аспект відіграє свою роль. Системний адміністратор повинен постійно бути обізнаним про нові загрози та оновлювати свої знання та практики безпеки. Памятайте, що захист вашого сервера – це інвестиція у стабільність та безпеку вашої інфраструктури.