Что отключено по умолчанию на большинстве Linux серверов (и почему это важно)
Когда вы подготавливаете свежий сервер Linux — будь то VPS, выделенный сервер или облачная виртуальная машина — система загружается в намеренно минималистичную и защищённую среду. Это не упрощение или неполная настройка. Это преднамеренная философия проектирования, встроенная в каждый крупный дистрибутив Linux.
Современные сборки серверов Linux удаляют ненужные сервисы, протоколы и интерфейсы, чтобы минимизировать поверхность атаки, сохранить ресурсы системы и дать администраторам точный контроль над тем, что работает на их инфраструктуре. Понимание того, что отключено по умолчанию — и почему — это фундаментальное знание для любого системного администратора, инженера DevOps или разработчика, управляющего production-рабочими нагрузками.
Это руководство разбирает наиболее распространённые функции и сервисы, которые отключены или отсутствуют по умолчанию на серверах Linux, объясняет причины безопасности и операционной логики за каждым решением и показывает вам, как точно проверить каждый параметр на вашей собственной системе.
Почему «отключено по умолчанию» — это стратегия безопасности, а не ограничение
Принцип, работающий здесь, часто называют «безопасно по умолчанию, расширяемо по выбору». Вместо того чтобы поставлять полнофункциональную систему и полагаться на администраторов её защитить, современные дистрибутивы Linux поставляют заблокированную систему и полагаются на администраторов, чтобы они включили только то, что им нужно.
Этот подход напрямую снижает риск неправильной конфигурации — одной из основных причин взломов серверов. Каждый сервис, который не работает, — это сервис, который не может быть использован в атаке. Каждый протокол, который не включен, — это протокол, который не может быть перехвачен. Каждый открытый порт, который не существует, — это точка входа, которую злоумышленники не могут зондировать.
С этим контекстом давайте рассмотрим каждое ограничение по умолчанию подробно.
1. SSH-вход от root
Статус: отключено по умолчанию на практически всех современных дистрибутивах серверов 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 / Rsh | SSH |
Как проверить, что устаревшие сервисы не работают:
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. Если вы обнаружите, что хотите графический интерфейс на production-сервере, это обычно сигнал того, что процесс или рабочий процесс нуждается в переосмыслении.
> Примечание: Инструменты такие как VPS Control Panels — такие как cPanel, Plesk или DirectAdmin — предоставляют веб-интерфейсы управления без необходимости установки полного окружения рабочего стола на сервер.
5. Цепочки инструментов разработки и компиляторы
Статус: не установлены в минимальных образах серверов
Компиляторы такие как gcc и утилиты сборки такие как make, cmake и autoconf намеренно отсутствуют в большинстве минимальных образов серверов Linux. Обоснование двойное:
- Уменьшенный размер образа: Минимальные образы развёртываются быстрее, их легче резервировать и они потребляют меньше ресурсов.
- Усиление безопасности: Если злоумышленник получит доступ к серверу, отсутствие компилятора предотвращает компиляцию вредоносных бинарников или кода эксплойтов непосредственно на системе. Это значительное препятствие во многих цепочках атак.
Как проверить:
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"Устанавливайте инструменты разработки только на серверах, где компиляция является подлинным операционным требованием — такие как серверы сборки или среды разработки — и избегайте установки их на production-серверы приложений или баз данных.
6. ICMP (ответы на ping)
Статус: включено по умолчанию на уровне ОС; часто ограничено на уровне сети/брандмауэра
Серверы 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 -p8. Ненужные системные сервисы и демоны
Статус: варьируется в зависимости от дистрибутива; минимальные установки отключают большинство несущественных сервисов
Помимо перечисленных выше элементов, минимальные установки серверов Linux обычно отключают или опускают ряд сервисов, которые присутствуют в сборках для рабочих столов или полнофункциональных:
- Bluetooth — неуместен на серверах; не установлен
- Avahi/mDNS — обнаружение локальной сети; ненужен и потенциально проблема безопасности на серверах
- Cups (печать) — нет применения на сервере
- ModemManager — неуместен на серверном оборудовании
- NetworkManager — часто заменяется на
systemd-networkdили ручную конфигурациюnetplanна серверах
Как проверить работающие сервисы:
systemctl list-units --type=service --state=runningПериодически проверяйте этот список и отключайте любой сервис, который не служит документированной цели на этом конкретном сервере.
Практический контрольный список безопасности для свежеподготовленного сервера Linux
После подготовки нового сервера — будь то общий веб-хостинг, обновленный до VPS, или совершенно новый выделенный сервер — пройдите через этот контрольный список, чтобы подтвердить вашу базовую позицию безопасности:
| Проверка | Команда | Ожидаемый результат |
|---|---|---|
| SSH-вход от root | grep PermitRootLogin /etc/ssh/sshd_config |
