Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Безпека

Що за замовчуванням вимкнено на більшості Linux серверів (і чому це важливо)

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

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

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

Чому "Вимкнено за замовчуванням" — це стратегія безпеки, а не обмеження

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

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

З цим контекстом давайте детально розглянемо кожне обмеження за замовчуванням.

1. Root SSH Login

Статус: За замовчуванням вимкнено на практично всіх сучасних дистрибутивах Linux серверів

Прямий вхід root через SSH універсально вимкнено в сучасних збірках Linux серверів — і з відмінної причини. Дозвіл на віддалений доступ root створює єдину катастрофічну точку відмови: один скомпрометований пароль дає зловмиснику повний, необмежений контроль над всією системою.

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

Як перевірити:

grep PermitRootLogin /etc/ssh/sshd_config

Очікуваний результат на належним чином зміцненому сервері:

PermitRootLogin no

Якщо ви бачите PermitRootLogin yes або PermitRootLogin prohibit-password, негайно перегляньте конфігурацію SSH і приведіть її у відповідність з політикою безпеки вашої організації.

Найкраща практика:

Створіть спеціального адміністративного користувача, додайте його до групи sudo і переконайтеся, що PermitRootLogin no встановлено перед розгортанням будь-якого публічного сервісу.

2. Аутентифікація паролем в SSH

Статус: За замовчуванням вимкнено на більшості серверів, розгорнутих у хмарі

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

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

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

Як перевірити:

grep PasswordAuthentication /etc/ssh/sshd_config

Очікуваний результат:

PasswordAuthentication no

Як вимкнути аутентифікацію за паролем:

Відредагуйте /etc/ssh/sshd_config та встановіть:

PasswordAuthentication no
PubkeyAuthentication yes

Потім перезавантажте демон SSH:

# Ubuntu/Debian
sudo systemctl reload ssh

# RHEL/AlmaLinux/Rocky Linux
sudo systemctl reload sshd

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

3. Застарілі та відкриті мережеві протоколи

Статус: Відсутні в сучасних збірках серверів

Сервіси такі як Telnet, FTP, Rlogin та Rsh не встановлюються на сучасних образах Linux серверів. Ці протоколи були розроблені в епоху, коли шифрування не було пріоритетом. Вони передають облікові дані, команди та дані у відкритому вигляді — що робить їх тривіально легкими для перехоплення за допомогою аналізатора пакетів на будь-якому сегменті мережі між клієнтом та сервером.

Ці протоколи були замінені безпечними альтернативами:

Застарілий протоколБезпечна заміна
Telnet (порт 23)SSH (порт 22)
FTP (порт 21)SFTP або FTPS
Rlogin / RshSSH

Як перевірити, що жодні застарілі сервіси не запущені:

ss -tulnp

Якщо порти 21 (FTP) або 23 (Telnet) не з’являються у виводі, ці сервіси не активні. Якщо вони з’являються, негайно розслідуйте та видаліть або відключіть їх, якщо немає конкретної, обґрунтованої необхідності.

4. Графічні користувацькі інтерфейси (GUI)

Статус: Не встановлено на серверних виданнях

Серверні дистрибутиви — включаючи Ubuntu Server, Debian, AlmaLinux, Rocky Linux та CentOS Stream — не поставляються з графічними середовищами робочого стола, такими як GNOME, KDE Plasma або XFCE. Це свідомий та обґрунтований вибір.

Середовище GUI:

  • Споживає значні ресурси RAM та CPU, які мають бути присвячені робочим навантаженням
  • Вводить велику кількість додаткових програмних пакетів, кожен з яких являє собою потенційну вразливість
  • Абсолютно непотрібне для адміністрування сервера, яке виконується через командний рядок через SSH

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

> Примітка: Інструменти, такі як Панелі керування VPS — такі як cPanel, Plesk або DirectAdmin — надають веб-базовані графічні інтерфейси управління без необхідності встановлення повного середовища робочого стола на сервері.

5. Ланцюги розробки та компілятори

Статус: не встановлено в мінімальних образах сервера

Компілятори такі як gcc та утиліти збірки такі як make, cmake та autoconf навмисне відсутні в більшості мінімальних образів Linux сервера. Обґрунтування двояке:

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

Як перевірити:

gcc --version

Якщо ланцюг розробки не встановлено, ви побачите:

-bash: gcc: command not found

Як встановити, якщо потрібно:

# Ubuntu/Debian
sudo apt update && sudo apt install build-essential

# RHEL/AlmaLinux/Rocky Linux
sudo dnf groupinstall "Development Tools"

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

6. ICMP (Ping Responses)

Статус: Увімкнено за замовчуванням на рівні ОС; часто обмежено на рівні мережі/брандмауера

Linux сервери за замовчуванням відповідають на ICMP echo запити (ping) на рівні операційної системи. Однак багато хостинг-провайдерів та хмарних платформ блокують ICMP на рівні мережевого брандмауера або групи безпеки, що робить сервери недосяжними для ping навіть коли вони повністю функціональні.

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

Як протестувати:

ping your_server_ip

Як блокувати ICMP на рівні ОС за допомогою iptables (якщо потрібно):

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

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

7. IPv6

Статус: За замовчуванням увімкнено в більшості дистрибутивів; може бути обмежено на рівні провайдера

IPv6 увімкнено за замовчуванням у сучасних дистрибутивах Linux, включаючи Ubuntu, Debian, Fedora та похідні RHEL. Однак багато хостинг-провайдерів вимикають IPv6 на рівні мережі, якщо їхня інфраструктура його не підтримує, що означає, що ОС може бути налаштована для IPv6, але сервер не матиме маршрутизованої адреси IPv6.

Як перевірити адреси IPv6:

ip a | grep inet6

Якщо з’являється лише ::1 (адреса зворотного зв’язку), IPv6 не налаштовано на рівні мережі, навіть якщо він увімкнено в ОС.

Якщо ваше навантаження не потребує IPv6 і ваш провайдер його не пропонує, ви можете вимкнути його на рівні ядра, додавши наступне до /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Потім застосуйте зміну:

sudo sysctl -p

8. Непотрібні системні сервіси та демони

Статус: Залежить від дистрибутива; мінімальні встановлення вимикають більшість неважливих сервісів

Крім пунктів, перелічених вище, мінімальні встановлення Linux-серверів зазвичай вимикають або опускають низку сервісів, які присутні на настільних або повнофункціональних збірках:

  • Bluetooth — не актуально на серверах; не встановлюється
  • Avahi/mDNS — виявлення локальної мережі; непотрібно і потенційно є проблемою безпеки на серверах
  • Cups (друк) — немає варіантів використання на сервері
  • ModemManager — не актуально для серверного обладнання
  • NetworkManager — часто замінюється systemd-networkd або ручною конфігурацією netplan на серверах

Як перевірити запущені сервіси:

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

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

Практичний контрольний список безпеки для щойно розгорнутого сервера Linux

Після розгортання нового сервера — чи то спільного веб-хостингу оновленого до VPS, чи абсолютно нового виділеного сервера — пройдіть цей контрольний список, щоб підтвердити вашу базову позицію безпеки:

ПеревіркаКомандаОчікуваний результат
Вхід root через SSHgrep PermitRootLogin /etc/ssh/sshd_configno
Аутентифікація за паролемgrep PasswordAuthentication /etc/ssh/sshd_configno
Відкриті портиss -tulnpВидимі лише очікувані порти
GCC встановленоgcc --versioncommand not found (якщо не потрібно)
Запущені сервісиsystemctl list-units --type=service --state=runningЛише необхідні сервіси
Статус IPv6`ip agrep inet6`Як очікується для вашого середовища

Вибір правильного хостингового середовища для ваших вимог безпеки

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

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

Висновок

Linux сервери за замовчуванням розгортаються в навмисно безпечному, мінімалістичному стані. Root SSH вхід вимкнено. Аутентифікація за паролем обмежена або виключена. Застарілі протоколи відкритого тексту відсутні. Графічне середовище не встановлено. Компілятори та інструменти збірки виключені з базових образів.

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

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

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