Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Hardening Linux: 15 шагов после установки сервера

Hardening Linux: 15 шагов после установки сервера

Свежеустановленный Linux-сервер — это открытая дверь в интернет. Дистрибутив приходит с настройками по умолчанию, рассчитанными на максимальную совместимость, а не на безопасность. Потратив час на базовое hardening, вы закроете 90% типовых векторов атак и значительно усложните жизнь потенциальным злоумышленникам.

1. Отключение root-доступа по SSH

Первое и обязательное действие — запретить прямой вход под root. В файле /etc/ssh/sshd_config выставьте:

PermitRootLogin no
PasswordAuthentication no

Создайте отдельного пользователя с sudo-правами и работайте только через него.

2. Аутентификация по ключам вместо паролей

Пароли брутфорсятся. Ключи — нет. Генерируйте пару на локальной машине:

ssh-keygen -t ed25519 -C "server-admin"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

После проверки входа по ключу отключите PasswordAuthentication no в sshd_config и перезапустите службу.

3. Настройка firewall (nftables / ufw)

Закройте всё, откройте только нужное. На Ubuntu/Debian проще всего ufw:

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

На RHEL-семействе используйте firewalld или напрямую nftables.

4. Автоматические обновления безопасности

Уязвимости закрываются патчами. Главное — их вовремя применять:

apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

Для RHEL: dnf install dnf-automatic и включите timer в systemd.

5. Отключение ненужных сервисов

Проверьте, что запущено:

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

Типичные кандидаты на отключение: avahi-daemon, cups, bluetooth, rpcbind. Каждый лишний сервис — потенциальная точка входа.

6. Sysctl hardening

Добавьте в /etc/sysctl.d/99-hardening.conf:

net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.suid_dumpable = 0

Примените: sysctl --system.

7. Ограничение umask

В /etc/profile и /etc/bashrc установите umask 027 — новые файлы будут создаваться с правами 640/750 вместо 644/755.

8. Настройка auditd

Система аудита фиксирует подозрительную активность:

apt install auditd
auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes

Правила сохраните в /etc/audit/rules.d/hardening.rules.

9. AIDE — контроль целостности файлов

AIDE (Advanced Intrusion Detection Environment) отслеживает изменения в файловой системе:

apt install aide
aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Запускайте проверку через cron: aide --check. Любое изменение системных файлов попадёт в отчёт.

Итого: чеклист

  • PermitRootLogin no в sshd_config
  • Вход только по SSH-ключам
  • Firewall настроен, всё лишнее закрыто
  • Автообновления активированы
  • Ненужные сервисы остановлены и замаскированы
  • Sysctl параметры усилены
  • umask 027 установлен глобально
  • auditd запущен с правилами
  • AIDE инициализирован и проверяется регулярно

Это не полный список — существуют SELinux/AppArmor, CIS Benchmarks, PAM-ограничения и многое другое. Но эти девять шагов уже выводят сервер из категории «лёгкая цель».

3 Ответа

  1. Хорошая статья, особенно про AIDE — многие про этот инструмент вообще не знают. Обязательно добавлю в свой чеклист при деплое новых серверов.

  1. Не забудьте ещё про fail2ban — он хорошо дополняет всё перечисленное, особенно защиту SSH. У нас на продакшене связка ufw + fail2ban работает уже два года без нареканий.

  1. По sysctl можно ещё добавить net.ipv6.conf.all.disable_ipv6 = 1 если IPv6 не используется. Меньше поверхность атаки — лучше спишь.