Записки Linux Администратора
45 subscribers
4 photos
5 files
16 links
Канал создан в поддержку. всем специалистам в области администрирования системного ПО и ОС. FAQ, MANUALS, Decisions
Download Telegram
Регистрация событий ('nss':'nss') was terminated by own WATCHDOG. Consult corresponding службы SSSD

Диагностические шаги:
~]# journalctl -u sssd.service
hostname.domain.ru sssd[sssd][36481]: Child [105359] ('nss':'nss') was terminated by own WATCHDOG. Consult corresponding logs to figure out the reason.
hostname.domain.ru sssd[nss][111051]: Starting up
hostname.domain.ru sssd[nss][111152]: Starting up
hostname.domain.ru sssd[nss][111165]: Starting up
hostname.domain.ru sssd[sssd][36481]: Exiting the SSSD. Could not restart critical service [nss].
hostname.domain.ru sssd[ssh][36566]: Shutting down
hostname.domain.russsd[pam][36565]: Shutting down
hostname.domain.russsd[be[
DOMAIN.RU]][36497]: Shutting down
hostname.domain.ru systemd[1]: sssd.service: main process exited, code=exited, status=1/FAILURE
hostname.domain.ru systemd[1]: Unit sssd.service entered failed state.
hostname.domain.ru systemd[1]: sssd.service failed.
Решение:

В конфигурационный файл /etc/sssd/sssd.conf для секци [domain/...] добавить timeout
[domain/DOMAIN.RU]
timeout = 20

По умолчанию значение timeout = 10
Повышение безопасности путем отключения шрифтов шифрования

Создание резервной копии конфигурационного файла sshd_config:
~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%Y%m%d)
Убедиться в отсутствии строки с ciphers:
~]# grep ciphers /etc/ssh/sshd_config
В случае отсутствия строки, выполните команду для исключения слабых шрифтов шифрования:
~]# sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config
Перезапустите службу sshd для применения настроек
~]# systemctl restart sshd
Для отключения RC4 и использовать защищенные шифры на SSH-сервере:
~]# ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
Вы можете проверить шифры, используемые в настоящее время вашим сервером
~]# shd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u
Для согласованиия SSH-клиенту только безопасные шифры с удаленными серверами. Добавьте в /etc/ssh/ssh_config
Host *
ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
Управление пакетами. Как часто вы управляете ими?
Часть команд рекомендуемые для Вас в использовании:
Вывести список установленнях пакетов:
~]# rpm -qa
Вывести требуемый пакет:
~]# rpm -qa | grep {name_pack}
Это достаточно приметивные команды в использовании.

Если требуется вывести вендора пакета
~]# rpm -qa --queryformat="%{NAME}: %{VENDOR} %{INSTALLTIME:date}\n"
Чтобы получить список всех тегов, о которых знает ваша версия RPM, выполните команду
~]# rpm -querytags
Выведет такой список:
BUILDHOST
BUILDTIME
DESCRIPTION
EPOCH
INSTALLTIME
NAME
RELEASE
SIZE
SUMMARY
VERSION
Как установить Linux на M1 или M2 Mac OS
1. Скачайте с официального сайта https://www.vmware.com/products/fusion.html dmg пакет VMware Fusion 13. Выполните установку.
2. Скачайте с официального сайта вендора iso дистрибутив Linux с архитектурой ARM64 (aarch64). На пример: centos.org
3. Подготовительные работы:
VMware -> Create a custom virtual machine -> Red Hat Enterprise Linux 64-bit Arm (при использовании centos || rhel). Остальное выбираем по желаемым характеристикам.
Перейти в настройки ВМ ->CD/DVD->Выбрать ISO диск с архитектурой arm -> Установить галочку «подключить компакт-диск или DVD-диск»
Приступайте к установке ОС
Копирование файлов
~]# cp dir/file1 /home/dir
Приведенная выше комманда - распространенный метод копирования файла.
А что, если у Вас каталог содержит 1000 файлов, а вам необходимо на пример скопровать только 300.
Внесите путь и наименование файлов в file.txt
Пример:
~]# cat file.txt
/home/dir/file1
/home/dir/file2
...
/home/dir/file300

И выполните:
~]# for i in `cat file.txt`; do cp $i /home/dir2; done
Как включить поддержку RC4 в RHEL?

На каждом хосте RHEL, где происходит аутентификация на контроллерах домена AD:
Используйте:

~]# update-crypto-policies --set DEFAULT:AD-SUPPORT

чтобы включить криптографическую подполитику AD-SUPPORT в дополнение к криптографической политике DEFAULT.
ext4 acl record (s) cannot be restored into xfs filesystem on linux

При регистрации этой ошибки, можно подумать о применении fsck файловой системы.
На самом деле, система Вас информирует о не возможности восстановления ACL EXT4 в файловую систему XFS.
ACL (Access Control List) - позволяет задавать права доступа к объектам на диске для пользователей и групп
Самым верным решением найти объекты имеющие ACL, возможно:
~]# getfacl -R -s -p /dir | sed -n 's/^# file: //p'
Если вы знаете место положение объекта, проверить назначение ACL можно:
~]# ls -l
rwx-rw----+ 1 root file.conf
Символ + (плюс) после прав доступа указывает на использование ACL
Предположим, пользователю devops необходимо выдать права на изменение на запись в определённые файлы/каталоги, выполните:
~]# setfacl -dm "u: devops:rwx" /opt/project
AlIAS. Маленькая но очень удобная.

Alias используется для определения псевдонима. Предположим, у вас есть длинная команда, которую сложнее запомнить. Псевдоним (alias) заменит указанную команду, но будет действовать точно так же.
Синтаксис:
alias [alias-name[=string]…]
Для создания псевдонима проверки открытых портов, достаточно:
~]#
alias ports='netstat -tulanp'
Здесь после слова alias мы помещаем слово, которое хотим использовать в качестве псевдонима. После создания, достаточно в командной строке выполнить:
~]# ports
и у вас выполниться:
netstat -tulanp
Доступные псевдонимы:
~]# alias
или
~]# alias -p
Они предоставят вам список существующих псевдонимов, созданные вами и системой.
Файл ~/.bashrc
Имейте в виду, примененные alias из командной строки после перезапуска системы будут удалены. Созданные системой alias будут по-прежнему доступны.
Для того, чтобы команда была в вашей системе, вам нужно отредактировать файл ~/.bashrc и внести свой alias или рас комментируйте в нем:
# if [ -f ~/.bash_aliases ]; then
#. ~/.bash_aliases
# fi

Это означает, что вы соглашаетесь поместить alias в файл ~/bash_aliases
INODES. Файловые дескрипторы.
Количество inode каждой файловой системы определяется при разворачивании ОС. Чаще всего во время установки ОС создаётся 1 inode на каждые 2 Кбайт пространства по умолчанию. Если у вас закончились inode, вы не сможете создать новый файл.
Проверить наличие свободных inode:
~]# df -i
Если процент inodes составляет 100% или близко к этому значению, необходимо найти директорию(ии) в которых создано большое количество файлов:
~]# find / -type d -size +4096 -exec sh -c " ls -d {} && ls {} | wc -l" \;
Если вы нашли ту директорию с большим объемом мелких файлов, стоит их ужалить для высвобождения занятых inodes:
~]# find /dir/files/ -type f -delete
Порой складываются ситуации, когда файл удален а ссылка на него сохранилась, при этом inodes не высвободился. В таком случае стоит прибегнуть к радикальным методам:
Определяем номер индекса:
~]# ls -il
148524 drwx------ 3 root root 4096 2023-01-27 15:45 file
148524 - номер inodes
Выполните find и удалите связующие элементы по номеру inodes:
~]# find . -inum 148524 -exec rm -i {} \;
Защита от «дурака»

Предположим, у Вас важные конфигурационные файлы, которые не стоит модифицировать особенно удалять. В борьбу с человеком который руководствуется только «давай поправим и посмотрим что будет», вам на помощь придет chattr.
chattr (Change Attribute) — это утилита используемая для установки/снятия специальных атрибутов файлов для предотвращения случайной модификации и удаления файлов или директорий, даже если вы авторизованы как root.
Синтаксис chattr:
chattr [operator] [flags] [filename]
Как защитить файл от удаления
Для установки атрибута мы используем оператор +, для снятия — оператор
~]# chattr +i dir/
~]# chattr +i file.conf
П
роверить установленные атрибуты:
~]# lsattr
Проверяем:
[root@ ~]#
rm -rf dir/
rm: cannot remove dir/: Operation not permitted
Как защитить файлы /etc/passwd и /etc/shadow
~]# chattr +i /etc/passwd
~]# chattr +i /etc/shadow
Проверяем:
~]# useradd test
useradd: cannot open /etc/passwd
systemd-logind: Failed to start user slice user-0.slice, ignoring: Connection timed out ((null))

Сообщения в journal
crond[111309]: pam_systemd(crond:session): Failed to create session: Connection timed out
systemd-logind[10714]: Failed to start user slice user-0.slice, ignoring: Connection timed out ((null))
systemd-logind[10714]: Failed to start session scope session-13692.scope: Connection timed out
systemd[1]: Failed to propagate agent release message: Operation not supported

Данная ошибка сообщает о том что systemd-logind не может создать user-0.slice. В версии systemd 219-42.el7
~]# rpm -qa | grep systemd
присутствует баг, в следствии чего systemd не может обрабатывать большое количество сессий в ввиду полной утилизации ресурсов RAM и сбоя модуля systemd-logind.
Для решения проблемы рекомендуется произвести обновления модуля до версии systemd-219-62.el7_6.9 или более поздней.
Обновление systemd лучше совместить с установкой более новой версии ядра.
Решение:
~]# /bin/rm $(join -v 1 <(find /run/systemd/system -maxdepth 1 -type f -name "*.scope" | sort) <(find /run/systemd/system -maxdepth 1 -type d -name "*.scope.d" | sed "s/\.d\$//" | sort))
Для реклярного исполненияя, стоит добавить в crontab
~]# vi /etc/crontab
* * * * * root {приведенная выше команда}
Free Identity, Policy and Audit
 
FreeIPA — открытый проект для создания централизованной системы по управлению идентификацией пользователей, задания политик доступа и аудита для сетей на базе Linux и Unix. FreeIPA можно сравнить с диспетчером Identity Manager компании Novell или Active Directory от Microsoft в том, что используемые цели и механизмы похожи.

Для Вас подобраны материалы, вы можете воспользоваться им:
- Контроллер ЕПП FreeIPA в Astra Linux
- Установка FreeIPA с опцией изолированной сети
- Ошибки установки FreeIPA
Как поставить на постоянный контроль доступность хостов?

~]# cat ping.sh

#!/bin/bash
time=$(date "+%a %d.%m.%Y %H:%M:%S")
cpuUsage=$(top -bn1 | awk '/Cpu/ { print $2}')
memUsage=$(free -m | awk '/Mem/{print $3}')

cat /opt/serverlist |while read i
do
ping -c 1 -n -i 0.2 -W1 "$i" > /dev/null
if [ $? -eq 0 ]; then
echo "ok, ping up" > /dev/null
else
echo "$time $i is down. Server not avalible to ping. CPU Usage: $cpuUsage% Memory Usage: $memUsage MB" >> /var/log/checkping.log

fi
done

где, /opt/serverlist - список ip/hostname серверов

/var/log/checkping.log - События зарегиструются если хост не доступен

Для регулярной проверки достпности, необходимо добавить скрипт в crontab
* * * * *. root. /opt/ping.sh
Как захватить сбои ядра Linux?

kdump – это продвинутый механизм сброса аварий.
Когда включен, система загружается из контекста другого ядра.Это второе ядро резервирует небольшой объем памяти, и его единственной целью является захват изображения дампа ядра в случае сбоя системы.
Пакеты к установке:
~]# yum install kexec-tools

Настройка GRUB
~]# grubby --update-kernel=ALL --args="crashkernel = auto"
Перезапустите систему, что бы изменения вступили в силу:
-]# shutdown -r
Чтобы настроить kdump, нам нужно отредактировать файл конфигурации /etc/kdump.conf.
Приведите строку
#core_collector -c -message-level 1 -d 31
к виду:
core_collector makedumpfile -c
Укажите действие по умолчанию, срабатывает если dump не может сформироваться в указанном месте. Если действие не указано “reboot”, то параметр по умолчанию:
default halt
Управление демоном:
~]# systemctl enable kdump.service
~]# systemctl start kdump.service
Проверить статус:
~]# systemctl is-active kdump
Вызовем crash kernel:
~]# echo 1 > /proc/sys/kernel/sysrq
~]#
echo c > /proc/sysrq-trigger
По default, сбой ядра сохраниться в / var / crash /
SSSD + DNSMASQ

System Security Services Daemon – это пакет приложений для управления аутентификацией и авторизацией в операционных системах.
Для исправления любых проблем с SSSD является настройка отладочный логов, которые сохраняются в /var/log/sssd. Они включаются одной простой командой:
~]# sss_debuglevel 7
Локальный DNS кэш
Аутентификация с использованием SSSD может некорректно работать или не работать вовсе, если из поля видимости хоста пропадает первый DNS сервер, указанный в /etc/resolv.conf. SSSD использует системный резолвер (resolver) для разрешения DNS имен. Любое разрешение DNS имени производится через запрос к DNS серверу. Cледует учесть, что системный резолвер опрашивает DNS сервера, указанные в /etc/resolv.conf в том порядке, в котором они там перечислены с таймаутом запроса в 5 секунд. Такие задержки в разрешении DNS имен могут оказывать крайне негативное влияние на работу SSSD.Частично проблема решается с помощью указания нескольких опций в /etc/resolv.conf:

options timeout:1 #опускает таймаут ожидания ответа от DNS сервера с 5 до 1 секунды

Это изменения позволят SSSD не уходить в оффлайн режим.
DNSMASQ - локальный кэш DNS
В конфигурации dnsmasq следует обратить внимание на параметр all-servers, который заставляет dnsmasq в случае промаха кэша отправлять DNS запросы сразу ко всем DNS серверам одновременно. При этом адреса "настоящих" DNS серверов удобно выносить из общей конфигурации в отдельный файл, расположенный рядом с системным /etc/resolv.conf.
Автообнаружение в SSSD
~]# vi /etc/sssd/sssd.conf
ad_server = dc01.example.com, dc02.example.com, _srv_
Автообнаружение в Kerberos
~]# vi /etc/krb5.conf
[realms]
EXAMPLE.COM = {
kdc =
dc01.example.com
kdc =
dc02.example.com
}