Подробный гайд: Восстановление Fly, SSH, su в Astra Linux после установки Dallas Lock - Часть 1
Подробный администраторский гайд для случая, когда после установки СЗИ Dallas Lock в Astra Linux перестаёт нормально работать графическое окружение Fly, а также возникают проблемы с SSH и/или su.
Важное:
Если система аттестована/сертифицирована или находится в продуктиве, любые изменения лучше согласовать со службой ИБ и выполнять только при наличии консольного/аварийного доступа. Дальше я буду исходить из того, что у вас есть права администратора или доступ через recovery.
1. Что обычно ломается после установки СЗИ и почему
Чаще всего проблемы появляются не «просто из-за факта установки», а из-за того, что СЗИ вмешивается в одну или несколько зон:
1. PAM (/etc/pam.d/*, /etc/security/*, /usr/share/pam-configs/*)
- добавляются собственные модули;
- меняется порядок модулей;
- включаются ограничения:
pam_access,pam_wheel,pam_faillock,pam_exec,pam_time,pam_limits; - модуль СЗИ падает или возвращает отказ.
2. Учётные записи и парольная политика
- блокировка после нескольких неудачных попыток;
- истёкший пароль;
- принудительная смена пароля;
- истёк срок действия учётной записи;
- пользователь не состоит в нужной группе.
3. SSH-доступ
- изменения в
/etc/ssh/sshd_configи/etc/ssh/sshd_config.d/*; - запрет
PasswordAuthentication,PermitRootLogin,AllowUsers/AllowGroups; - требования двухфакторной аутентификации;
- сетевой фильтр/файрвол СЗИ;
- блокировка
22/tcp; - TCP Wrappers, fail2ban, OpenSSH per-source penalties;
- проблемы с ключами, правами,
authorized_keys,StrictModes.
4. su
- изменён
/etc/pam.d/su; - отсутствует или смещён
auth sufficient pam_rootok.so; - включён
pam_wheel.so; - у
/bin/suснят setuid; - файловая система смонтирована с
nosuid; - блокировка запуска
suполитикой приложений.
5. Графическая среда Fly
- дисплейный менеджер не стартует;
- изменён
default-display-manager; - сломаны сессионные скрипты
/etc/X11/Xsession.d/*; - проблемы с
dbus,systemd-logind,pam_systemd,XDG_RUNTIME_DIR; - блокировка исполняемых файлов Fly со стороны СЗИ, AppArmor, PARSEC или механизма контроля приложений;
- некорректные переменные окружения:
LD_PRELOAD,LD_LIBRARY_PATH,GTK_MODULES,QT_QPA_PLATFORM; - отсутствие нужных пакетов или зависимостей.
6. Мандатный контроль / MAC / целостность
- в Astra Linux особенно важно: метки, уровни доступа, политика выполнения, целостность;
- если бинарники, библиотеки, конфиги или домашние каталоги получили несовместимые метки, доступ может блокироваться.
7. Ресурсы и журналы
/,/var,/var/log,/tmpзабиты;- audit/журналы СЗИ переполнили диск;
- нехватка inodes;
- ограничения
limits.conf: малоnofile,nproc,maxlogins.
2. Когда именно это обычно проявляется
Типовые моменты:
- сразу после установки и перезагрузки;
- после применения политики СЗИ;
- после импорта правил централизованного управления;
- после обновления пакетов, когда хэши/пути изменились, а политика СЗИ осталась старой;
- после обновления ядра, если модуль СЗИ несовместим;
- после смены парольной политики, когда старые пароли стали недействительны;
- после включения контроля приложений, который запретил
sshd,su,fly,Xorg,dbus; - после включения сетевого фильтра, который закрыл порт 22;
- после блокировки учёток из-за нескольких неудачных попыток;
- после изменения дисплейного менеджера или сессий X11.
Если у вас «просто после установки СЗИ перестали работать Fly и SSH/su», в 80% случаев искать надо в:
/var/log/auth.log;/etc/pam.d/*;/etc/ssh/sshd_config*;/etc/security/*;- логах дисплейного менеджера и
~/.xsession-errors.
3. Первое правило: убедитесь, что у вас есть аварийный доступ
Если SSH не работает, а su тоже не работает, важно понять, есть ли хотя бы один из следующих доступов:
- Консольный вход под локальным администратором.
- Рабочий
sudo -iу администратора. - Доступ через KVM / IPMI / iLO / консоль виртуальной машины.
- Загрузка в recovery / single-user /
init=/bin/bash. - Live-носитель с chroot, если система зашифрована и вы знаете ключи.
Если работает только один удалённый SSH-сеанс и вы собираетесь править сервисы, будьте осторожны:
- не перезагружайте систему без уверенности, что сможете войти консольно;
- не делайте
systemctl restart ssh, если не уверены в конфигурации и нет второго канала доступа; - лучше держать открытым второй терминал или использовать консоль.
4. Быстрая диагностика: 10 шагов
Выполняйте от имени администратора. Если чего-то нет в системе — пропускайте.
4.1. Версии и пакеты
cat /etc/os-release
uname -r
dpkg -l | grep -Ei 'dallas|dlk|lock|fly|openssh|libpam|xserver|dbus'
Важно понять:
- какая редакция и версия Astra Linux;
- установлены ли пакеты Fly;
- какая версия Dallas Lock;
- не были ли удалены зависимости.
4.2. Состояние служб
systemctl --failed --no-pager
systemctl status ssh sshd display-manager --no-pager || true
systemctl list-units --all --no-pager | grep -Ei 'dallas|dlk|lock'
systemctl list-unit-files | grep -Ei 'ssh|display-manager|dallas|dlk|lock'
Обратите внимание:
- не находится ли
ssh/sshdв состоянииfailedилиmasked; - не отключён ли
display-manager; - не падает ли служба самой СЗИ.
4.3. Проверка sshd
/usr/sbin/sshd -t
ss -ltnp | grep ':22'
Если sshd -t выдаёт ошибку — сначала чиним конфигурацию /etc/ssh/sshd_config.
Если порт 22 не слушается:
- служба не запущена;
- изменён порт;
- используется
ssh.socket; - конфликт порта;
- служба запрещена политикой.
4.4. Журналы аутентификации
В Astra/Debian-подобных системах обычно:
tail -n 200 /var/log/auth.log
journalctl -b -p warning..err --no-pager | tail -n 200
journalctl -u ssh -u sshd -u display-manager -b --no-pager | tail -n 200
Ищите строки:
pam_unix
authentication failure
account expired
account locked
permission denied
cannot open session
module is unknown
unable to dlopen
denied
blocked
no such user
session opened/closed
4.5. Что изменилось после установки
Ищем файлы, изменённые за последние дни:
find /etc/pam.d /usr/share/pam-configs /etc/security /etc/ssh /etc/X11 /etc/profile.d /etc/systemd/system -xdev -type f -newermt "$(date -d '-3 days' +%Y-%m-%d)" -printf '%TY-%Tm-%Td %TH:%TM %p\n' 2>/dev/null | sort
Ищем следы СЗИ:
grep -R -Ei 'dallas|dlk' \
/etc/pam.d \
/usr/share/pam-configs \
/etc/security \
/etc/ssh/sshd_config.d \
/etc/profile.d \
/etc/X11/Xsession.d \
/etc/systemd/system \
/etc/environment \
2>/dev/null
4.6. Проверка конкретного пользователя
Замените username на нужного пользователя.
U=username
id "$U"
getent passwd "$U"
getent shadow "$U" 2>/dev/null | awk -F: '{print "shadow flag first char:", substr($2,1,1)}'
passwd -S "$U" || true
chage -l "$U"
faillock --user "$U" 2>/dev/null || pam_tally2 --user "$U" 2>/dev/null || true
Что смотреть:
- пользователь существует;
- пароль не заблокирован;
- пароль не истёк;
- учётная запись не просрочена;
- нет счётчика блокировок после неудачных попыток.
4.7. Проверка su
grep -n 'pam_rootok' /etc/pam.d/su
grep -n 'pam_wheel' /etc/pam.d/su
ls -l /bin/su /usr/bin/su 2>/dev/null
SU_BIN=$(readlink -f "$(command -v su 2>/dev/null || echo /bin/su)")
ls -l "$SU_BIN"
stat -c '%a %U %G %n' "$SU_BIN"
findmnt -no OPTIONS / /usr /home 2>/dev/null
Признаки проблем:
- нет
auth sufficient pam_rootok.soв/etc/pam.d/su; - включён
pam_wheel.so, а пользователь не вwheel; - на
/bin/suнет setuid; /или/usrсмонтированы сnosuid.
4.8. Проверка PAM
grep -nE 'pam_(unix|deny|permit|securetty|nologin|access|wheel|succeed_if|listfile|exec|systemd|loginuid|limits|env|dallas|dlk)' \
/etc/pam.d/common-auth \
/etc/pam.d/common-account \
/etc/pam.d/common-session \
/etc/pam.d/common-session-noninteractive \
/etc/pam.d/sshd \
/etc/pam.d/su \
/etc/pam.d/login \
2>/dev/null
Проверка наличия модулей:
find /lib/*/security /usr/lib/*/security -iname '*dallas*' -o -iname '*dlk*' 2>/dev/null
for f in /lib/*/security/pam_*.so; do
ldd "$f" 2>/dev/null | grep -i 'not found' && echo "Problem with: $f"
done
4.9. Проверка дисплейного менеджера и Fly
systemctl get-default
systemctl status display-manager --no-pager || true
cat /etc/X11/default-display-manager 2>/dev/null
ls -l /usr/share/xsessions/
grep -E 'Exec|TryExec' /usr/share/xsessions/*.desktop 2>/dev/null
journalctl -u display-manager -b --no-pager | tail -n 150
Логи пользователя:
tail -n 200 ~/.xsession-errors 2>/dev/null
journalctl _UID=$(id -u username) -b --no-pager | tail -n 200
4.10. Диски, память, load
df -h / /var /var/log /tmp /home
df -i / /var /home
free -h
uptime
dmesg -T | grep -Ei 'oom|out of memory|read-only|I/O error' | tail -n 50
Если / или /var забиты, аутентификация и графика могут вести себя очень странно.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.