Контрольный список по укреплению серверов Linux

15 мин чтения - 8 мая 2026 г.

hero section cover
Содержание
  • Контрольный список по укреплению безопасности серверов Linux
  • Блокировка SSH
  • Настройка брандмауэров и Fail2Ban
  • Установка исправлений и автоматизация обновлений
  • Усиление защиты файловых систем и прав доступа
  • Включите средства обязательного контроля доступа
  • Настройка ведения журналов аудита и мониторинга
  • Текущее обслуживание
Поделиться

Пошаговый контрольный список для защиты сервера Linux. Охватывает SSH, брандмауэры, исправления, разрешения на файлы, SELinux/AppArmor и ведение журнала аудита

Контрольный список по укреплению безопасности серверов Linux

Стандартная установка Linux не является безопасной. Неправильные настройки, такие как открытый доступ к корневому SSH, слабые брандмауэры и незапатченное программное обеспечение, являются причиной большинства нарушений безопасности. Новые серверы подвергаются автоматическому сканированию в течение нескольких минут после подключения к сети, поэтому укрепление безопасности должно быть выполнено в первую очередь.

Этот контрольный список охватывает основные шаги: блокировка SSH, настройка брандмауэров, установка исправлений, ужесточение прав доступа к файлам, включение обязательного контроля доступа и настройка ведения журнала аудита.

Блокировка SSH

SSH — это ваша основная точка доступа и первое, что проверяют злоумышленники. Конфигурация по умолчанию (аутентификация по паролю, вход под пользователем root, порт 22) — это именно то, что ищут автоматические сканеры.

Сгенерируйте пару ключей Ed25519, которая обеспечивает лучшую безопасность и производительность, чем RSA:

ssh-keygen -t ed25519

Как только вход с помощью ключа заработает, обновите /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Измените порт по умолчанию с 22 на что-нибудь менее очевидное. Это не остановит целеустремленного злоумышленника, но значительно сократит количество ложных срабатываний при автоматическом сканировании.

Всегда тестируйте изменения со второго терминала, прежде чем закрывать текущую сессию. Запустите sudo sshd -t для проверки на наличие синтаксических ошибок, затем systemctl reload sshd для применения изменений без разрыва активных соединений.

Добавьте двухфакторную аутентификацию

2FA означает, что злоумышленнику потребуются как ваш SSH-ключ, так и физический доступ к вашему устройству. Установите модуль PAM для Google Authenticator:

sudo apt install libpam-google-authenticator   # Debian/Ubuntu
sudo dnf install google-authenticator           # RHEL/Fedora

Запустите google-authenticator для каждого пользователя, чтобы сгенерировать секретный ключ и коды восстановления. Храните коды восстановления в автономном режиме.

Добавьте эту строку в /etc/pam.d/sshd:

auth required pam_google_authenticator.so

Затем обновите /etc/ssh/sshd_config:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Во время тестирования держите сессию активной. Коды TOTP зависят от точного системного времени, поэтому убедитесь, что NTP работает.

Настройка брандмауэров и Fail2Ban

Используйте брандмауэр на уровне хоста, даже если ваш сервер находится за сетевым брандмауэром. Принцип прост: по умолчанию блокируйте весь входящий трафик, а затем разрешайте только то, что вам нужно.

Для Ubuntu/Debian (UFW):

ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enable

Для RHEL/Rocky/AlmaLinux (Firewalld):

firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Усильте сетевой стек ядра, добавив следующее в файл /etc/sysctl.conf:

net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1

Установите Fail2Ban

Fail2Ban отслеживает попытки входа в систему и блокирует IP-адреса после нескольких неудачных попыток. Создайте /etc/fail2ban/jail.local (не редактируйте jail.conf не создавайте файл напрямую, так как обновления его перезапишут) и настройте его так, чтобы IP-адреса блокировались на один час после трех неудачных попыток в течение 10 минут. Укажите правильный бэкэнд для вашего брандмауэра (banaction = ufw или banaction = nftables).

Службы аудита и удаление устаревших протоколов

Проверьте, что прослушивает порт с помощью ss -tlnp и что запущено с помощью systemctl list-units --type=service --state=running. Отключите все, что вам не нужно: Bluetooth, CUPS, avahi-daemon, rpcbind.

Удалите устаревшие протоколы, передающие данные в открытом виде:

Устаревший протоколПорт(ы)Безопасная альтернатива
Telnet23SSH
RSH / Rlogin512, 513, 514SSH
FTP21SFTP / FTPS
TFTP69SFTP / SCP
NISПеременнаяLDAP / Kerberos

В Debian/Ubuntu: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. В системах на базе RHEL: yum erase xinetd ypserv tftp-server telnet-server rsh-server. Проверьте удаление с помощью ss -tulpn.

Установка исправлений и автоматизация обновлений

Обновление системы — это самый быстрый способ устранить известные уязвимости. Запустите обновления сразу после развертывания:

apt update && apt upgrade -y      # Debian/Ubuntu
dnf update -y                      # RHEL/Rocky

Затем автоматизируйте установку патчей безопасности. В Debian/Ubuntu установите unattended-upgrades и настройте его так, чтобы он применял только патчи безопасности. В RHEL/Rocky установите dnf-automatic и установите upgrade_type = security в /etc/dnf/automatic.conf.

Настройте уведомления по электронной почте о результатах обновления. Отключите автоматическую перезагрузку на производственных серверах (Automatic-Reboot = false), чтобы перезагрузки происходили во время запланированных окон технического обслуживания. Для сред с высоким временем безотказной работы рассмотрите возможность установки исправлений в режиме реального времени с помощью Canonical Livepatch (Ubuntu) или kpatch (RHEL).

Усиление защиты файловых систем и прав доступа

Сначала проверьте бинарные файлы SUID и SGID. Эти файлы запускаются с повышенными привилегиями и являются основными целями для злоумышленников:

find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls

Ужесточите права доступа к критически важным файлам: /etc/shadow должно быть 600, /etc/passwd должно быть 644, /etc/ssh/sshd_config должно быть 600. Установите глобальный umask значение 027 в /etc/profile , чтобы новые файлы не были доступны для чтения всем пользователям.

Найдите и исправьте файлы, доступные для записи всем пользователям, с помощью find / -xdev -type f -perm -0002 -ls. Для каталогов, которые должны оставаться доступными для записи всем пользователям (например, /tmp), примените флаг sticky: chmod 1777 /tmp.

Параметры безопасного монтирования

Редактировать /etc/fstab , чтобы ограничить действия на критически важных разделах:

ПараметрыПараметры монтированияНазначение
/tmpnodev, nosuid, noexecПредотвращает запуск вредоносного ПО в области, доступной для записи
/var/tmpnodev, nosuid, noexecТакая же защита, как и у /tmp
/dev/shmnodev, nosuid, noexecЗащита общей памяти
/homenodev, nosuidБлокирует бинарные файлы с setuid и узлы устройств
/var/lognodev, nosuid, noexecЗащита целостности журналов

Проверьте изменения с помощью mount -o remount перед перезагрузкой, чтобы избежать проблем при загрузке.

Включите средства обязательного контроля доступа

SELinux и AppArmor добавляют ограничения на уровне ядра на то, что могут делать процессы. Используйте то, что поставляется с вашей дистрибутивом: SELinux для RHEL/CentOS/Fedora, AppArmor для Ubuntu/Debian/SUSE. Переключение между ними вызывает проблемы с совместимостью.

SELinux: Проверьте статус с помощью getenforce. Начните в разрешительном режиме (setenforce 0) не менее двух недель, чтобы зафиксировать поведение рабочей нагрузки, не вызывая сбоев. Отслеживайте нарушения с помощью ausearch -m avc -ts recent. Используйте audit2why для диагностики блокировок и audit2allow -M [module_name] для создания модулей политики. Как только журналы очистятся, переключитесь в режим принудительного соблюдения с помощью setenforce 1, а затем сделайте его постоянным в /etc/selinux/config.

AppArmor: проверьте активные профили с помощью aa-status. Установите apparmor-utils для команд управления. Запустите профили в режиме предупреждений с помощью aa-complain, затем перейдите в режим принудительного выполнения с aa-enforce , как только будете уверены. Используйте aa-genprof для создания профилей для пользовательских приложений.

Настройка ведения журналов аудита и мониторинга

Без ведения журналов инциденты не оставляют следов. Установите auditd:

sudo apt-get install auditd audispd-plugins

Добавьте наблюдение за файловой системой для критически важных файлов:

-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity

Отслеживайте выполнение всех команд на уровне root:

-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

Загрузите правила с помощью augenrules --load и добавьте -e 2 в конец файла правил, чтобы сделать конфигурацию защищенной от несанкционированного изменения (для вступления изменений в силу требуется перезагрузка).

Мониторинг целостности файлов с помощью AIDE

AIDE обнаруживает несанкционированные изменения файлов, сравнивая текущее состояние с исходным, признанным исправным. Установите его, инициализируйте базу данных с помощью aideinit, и переместите полученный файл в /var/lib/aide/aide.db.gz. Настройте ежедневную задачу cron для запуска aide --check и отправки результатов по электронной почте администраторам.

Централизация журналов

Локальные журналы бесполезны, если злоумышленник с правами root удалит их. Пересылайте журналы на удаленный сервер в режиме реального времени с помощью rsyslog с шифрованием TLS. Добавьте в /etc/rsyslog.conf:

*.* @@remote-host:514

Set LogLevel VERBOSE в конфигурации SSH, чтобы журналы включали отпечатки ключей для каждого успешного входа в систему. Для производственных сред, управляющих несколькими серверами, такие инструменты, как Wazuh или OSSEC, обеспечивают обнаружение вторжений на уровне хоста с централизованным анализом журналов

Текущее обслуживание

Укрепление безопасности — это не разовое мероприятие. Настройки меняются, появляются новые уязвимости, а при смене персонала остаются заброшенные учетные записи.

Еженедельно: просматривайте журналы Fail2Ban, проверяйте наличие неудачных обновлений, проверяйте резервные копии.

Ежемесячно: проводить аудит учетных записей пользователей и прав доступа, проверять запущенные службы, выполнять полное сканирование с помощью Lynis или OpenSCAP.

Ежеквартально: меняйте учетные данные, обновляйте правила брандмауэра, тестируйте восстановление после сбоев.

Используйте инструменты «инфраструктура как код», такие как Ansible с ролями укрепления безопасности dev-sec.io, чтобы обеспечить единообразную конфигурацию всего вашего парка серверов и предотвратить отклонения между аудитами.

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

background image
Ваш сервер сдерживает ваш рост?

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб.

Обновление сейчас

Блог

События этой недели

Другие статьи
Руководство по настройке Prometheus и node_exporter

Руководство по настройке Prometheus и node_exporter

Установите Prometheus и node_exporter, настройте цели соскоба, настройте службы systemd и обеспечьте безопасность стека мониторинга. Шаг за шагом для Linux.

15 мин чтения - 29 мая 2026 г.

XDP и eBPF для обработки пакетов в Linux

14 мин чтения - 27 мая 2026 г.

Другие статьи
background image

У вас есть вопросы или вам нужно индивидуальное решение?

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание

icon

Гибкие варианты

icon

Глобальный охват

icon

Мгновенное развертывание