Как обезопасить ОС Linux
Что проверяют
Есть ли у вас системный подход к hardening, а не набор случайных советов, и умеете ли вы это автоматизировать. Следом обычно просят рассказать, что вы делаете с SSH на новом сервере и как проверяете соответствие требованиям.
Как отвечать
Идите слоями, от входа снаружи к тому, что внутри:
- доступ: SSH только по ключам, в
sshd_configвыставленыPasswordAuthentication noиPermitRootLogin no, права черезsudoпо группам. Плюсfail2banот перебора, к критичным хостам вход через bastion или VPN; - поверхность атаки:
ss -tulpnпоказывает, что слушает порты, лишнее отключается черезsystemctl disable --now, ненужные пакеты удаляются; - сетевой фильтр: политика «запрещено всё, что не разрешено» в
nftables,ufwилиfirewalld, плюс security group в облаке; - обновления:
unattended-upgradesна Debian и Ubuntu,dnf-automaticна RHEL-подобных, как минимум для security-патчей; - изоляция: SELinux или AppArmor в режиме enforcing, сервисы под отдельными пользователями, в systemd-юнитах
NoNewPrivileges=yesиProtectSystem=strict; - ядро и ФС:
sysctlвродеkernel.kptr_restrictиnet.ipv4.conf.all.rp_filter,/tmpсnoexec,nosuid, LUKS там, где возможен физический доступ к дискам; - аудит:
auditd, журналы на центральный сервер, контроль целостности через AIDE.
Опору дают CIS Benchmarks, проверку выполняют lynis или OpenSCAP. Главное для DevOps: всё это описано в Ansible или зашито в образ, собранный Packer, а не сделано руками на одном сервере.
Где спотыкаются
Первым делом выключают SELinux, потому что он «мешает». Правильнее разобрать отказ через audit2why и поправить контексты через semanage.
Включают автообновление всего подряд на проде без стратегии. Обновление может перезапустить базу посреди дня, поэтому автоматом ставят только security-пакеты, выкатывают сначала на часть хостов, а перезагрузки под новое ядро планируют в окно обслуживания.
Настраивают серверы вручную. Через полгода конфигурации расходятся, и уже никто не скажет, какой из них защищён.