Почему я всегда отключаю неиспользуемые службы на серверах Linux
Это перевод оригинальной статьи Why I Always Disable Unused Services on Linux Servers.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Когда я беру на себя управление новым сервером Linux, первым делом я проверяю, какие службы запущены. Почему? Потому что каждая запущенная служба — это ещё одна потенциальная дверь для злоумышленников.
Вот почему отключение неиспользуемых служб является одним из самых быстрых способов повышения безопасности, и как я это делаю шаг за шагом.
🚨 Риски работы лишних сервисов
- Расширенная поверхность атаки
Открытый порт означает, что кто-то может постучаться. Даже если сегодня у сервиса нет уязвимостей, завтра они могут появиться. - Пути повышения привилегий.
Сервисы, работающие от имени root, могут стать прямым путём к полной компрометации системы. - Утечка ресурсов.
Неиспользуемые демоны потребляют ресурсы ЦП, память и трафик без причины. - Несоответствия стандартам
CIS Benchmarks, PCI-DSS и HIPAA советуют минимизировать количество ненужных сервисов.
🔍 Шаг 1: Определить, что запущено
systemctl list-unit-files --type=service --state=enabled
ss -tulnp
➡️ Любой сервис, слушающий внешний интерфейс и не нужный вам, — кандидат на отключение.
🛠 Шаг 2: Отключить всё лишнее
Например, если я не использую cups(печать):
systemctl stop cups systemctl disable cups
Для почтовых серверов (обычно на новых установках):
systemctl stop postfix systemctl disable postfix
🧹 Шаг 3: Маскировать, чтобы предотвратить случайный запуск
systemctl mask telnet
➡️ Это предотвращает запуск службы даже случайно.
🧠 Шаг 4: Закрепите основы
Для сервисов, которые мне действительно нужны (вроде SSH или Nginx), я:
- Запускайте их как непривилегированных пользователей.
- Ограничьте их доступ конкретными IP (
ListenAddressв SSH, директивыlistenв Nginx) - Примените защиту systemd:
PrivateTmp=yes NoNewPrivileges=yes ProtectSystem=strict
📊 Шаг 5: Непрерывный мониторинг
Даже после очистки я еженедельно запускаю:
systemctl list-units --type=service --state=running
чтобы убедиться, что ничего неожиданного не появилось.
📌 Заключительные мысли
Защита не всегда подразумевает использование сложных инструментов — иногда достаточно просто спросить:
➡️ А действительно ли мне нужен этот сервис?
Если ответ «нет», я останавливаю его, отключаю и маскирую.
Меньше сервисов = меньше рисков.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.