Чек-лист hardening Linux-сервера

0
13
Обложка статьи: Чек-лист hardening Linux-сервера

Чек-лист к статье Hardening Linux. Для каждого пункта дана команда, по результату которой можно поставить отметку. Пункт без проверки не считается выполненным.

Доступ

  • ☐ Вход root по SSH запрещён: sshd -T | grep permitrootlogin → no
  • ☐ Вход по паролю отключён: sshd -T | grep passwordauthentication → no
  • ☐ Администраторы работают через личные учётные записи: getent group sudo wheel
  • ☐ Нет лишних NOPASSWD: grep -rn NOPASSWD /etc/sudoers /etc/sudoers.d/
  • ☐ Нет учётных записей без пароля: awk -F: '$2==""' /etc/shadow → пусто
  • ☐ Второй фактор для администраторов: MFA для SSH

Обновления

  • ☐ Очередь обновлений пуста: apt list --upgradable или dnf check-update
  • ☐ Автообновления безопасности включены: systemctl status unattended-upgrades / dnf-automatic-install.timer
  • ☐ Сервисы перезапущены после обновления: needrestart / dnf needs-restarting -r
  • ☐ Система не снята с поддержки: cat /etc/os-release

Сеть

  • ☐ Firewall включён, политика по умолчанию «запретить»: nft list ruleset / ufw status verbose
  • ☐ Слушают только нужные порты: ss -tulpn
  • ☐ Проверка снаружи совпадает: nmap -Pn -p- SERVER_IP
  • ☐ Служебные порты (БД, мониторинг, Docker API) не доступны из интернета
  • ☐ Защита от подбора: cscli metrics / fail2ban-client status

Сервисы и файлы

  • ☐ Лишние сервисы отключены: systemctl list-unit-files --state=enabled
  • ☐ Сервисы работают не от root: ps -eo user,comm | sort | uniq -c | sort -rn | head
  • ☐ Нет файлов, доступных всем на запись: find / -xdev -type f -perm -0002 2>/dev/null | head
  • ☐ SELinux или AppArmor включены: getenforce / aa-status

Журналы и наблюдение

  • ☐ Журнал journald хранится на диске: ls /var/log/journal
  • ☐ Логи уходят на отдельный сервер: logger test и поиск записи на приёмнике
  • ☐ Время синхронизировано: timedatectl → System clock synchronized: yes
  • ☐ Сервер на мониторинге: Zabbix

Ядро и права (методический документ ФСТЭК)

  • ☐ Параметры ядра применены и проверены скриптом: sudo bash fstek-linux-check.sh (скрипт и пояснения)
  • ☐ Нет файлов с записью для группы и остальных в системных каталогах: sudo find /bin /sbin /usr/bin /usr/sbin /lib /lib64 -xdev ! -type l -perm /022 -ls
  • ☐ Список SUID/SGID сверен с эталоном: sudo find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -ls
  • ☐ Домашние каталоги закрыты: stat -c '%a %n' /home/* показывает 700
  • ☐ Отклонения от документа записаны с причиной

Резервные копии

  • ☐ Копия есть вне сервера и вне площадки
  • ☐ Восстановление проверено за последние 3 месяца: 3-2-1

Если пунктов без отметки много, начните с доступа и обновлений: они закрывают большинство реальных взломов. Для полного перечня мер сверяйтесь с CIS Benchmarks вашего дистрибутива.

Оставьте свой ответ