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

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

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

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

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

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

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

Заблокируйте SSH

SSH - это основная точка доступа и первое, на что обращают внимание злоумышленники. Конфигурация по умолчанию (пароль auth, логин 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.

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

Legacy ProtocolПорт(ы)Безопасная альтернатива
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), примените липкий бит: chmod 1777 /tmp.

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

Отредактируйте /etc/fstab, чтобы ограничить доступ к критическим разделам:

PartitionПараметры монтированияНазначение
/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 [имя_модуля] для создания модулей политики. Когда журналы будут чистыми, переключитесь на принудительное выполнение с помощью 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

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

-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

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

Постоянное обслуживание

Усиление - это не одноразовая задача. Конфигурации меняются, появляются новые уязвимости, а смена персонала оставляет бесхозные учетные записи.

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

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

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

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

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

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

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

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

Блог

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

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

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

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

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

самоучитель iperf3: Тест скорости сети в Linux и Windows

10 мин чтения - 7 мая 2026 г.

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

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

icon

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

icon

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

icon

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

icon

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

icon

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

icon

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