gladilov.org.ru gladilov.org.ua

107 заметок с тегом

сисадминство

Всякие системные и просто нужные компьютерные фичи. Настройка софта, иногда восстановление железа, и прочее, что входит в сферы интересов от эникейшика до «full stack admin’а». В придачу — симулятор системного администратора.



Новая виртуальная ОСь — 04.08.2024

 Manjaro Linux Immutable 2024.08.01

Экспериментальная сборка атомарно обновляемого варианта дистрибутива  Manjaro Linux, построенного на основе  Arch Linux и ориентированного на начинающих пользователей. В ней базовая система поставляется в форме единого монолитного образа, монтируемого в режиме только для чтения и обновляемого целиком в атомарном режиме. Поддерживается только загрузка в режиме UEFI как на оборудовании x86_64, так и в системах виртуализации и эмуляции, таких как VirtualBox и QEMU. После завершения тестирования сборке планируют придать статус официального варианта Manjaro. Для формирования монолитных системных образов на основе пакетной базы Arch Linux, а также для их установки, сопровождения и организации отката на прошлое состояния задействован инструментарий arkdep, развиваемый проектом  Arkane Linux. Инструментарий написан на Bash и представляет собой обвязку над GNU Coreutils, wget, curl и Systemd. В качестве файловой системы задействована Btrfs, а для переключения между активным системным образом и загруженным обновлением используются подразделы (subvolume) Btrfs. Программы предлагается устанавливать в виде пакетов в формате Flatpak (для выполнения используются контейнеры, создаваемые при помощи Podman и Distrobox). Дополнительно предусмотрена возможность отключения блокировки изменений в корневом разделе и использования штатного пакетного менеджера pacman, но установленные таким образом пакеты будут потеряны после очередного обновления системы и их придётся устанавливать заново. Объявление о начале тестирования вышло 3 августа 2024 года. По умолчанию предлагается среда рабочего стола  GNOME, но отдельно распространяются системный образ с  KDE. Размер файла образа диска после установки составил 4,8 гигабайта.

 Immutable

2024   виртуальные ОСи   досуг   сисадминство   софт

Игры с keepalived

В продолжение поста о системном демона Keepalived, позволяющем организовать отказоустойчивость сервиса и балансировку нагрузки. Возник вопрос — как узнать, какая нода в каком состоянии запущена? Для этого я создал две ВМ, к примеру:
d1 IP=172.16.32.31/24
d2 IP=172.16.32.32/24

Конфигурация d1: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
    state MASTER
!    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
    priority 103
!    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Конфигурация d2: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
!    state MASTER
    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
!    priority 103
    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Для контроля текущей конфигурации (состояния) демона keepalived используется скрипт /opt/notify.sh: Показать

#!/bin/bash
echo $1 $2 is in $3 state > /var/run/keepalive.$1.$2.state

Ещё полезный скрипт-однострочник:: Показать

conf=/etc/keepalived/keepalived.conf && vip=$(expr "$(cat $conf)" : '.*\bvirtual_ipaddress\s*{\s*\(.*\)/*}') && vip=`expr "$vip" : '\([^ ]*\)' | sed 's/\./\\\\./g'` && if ip addr | grep -q "$vip"; then echo Primary; else echo Secondary; fi

2022   досуг   маленькие хитрости   сеть   сисадминство   софт

Команда Devuan просрочила ключ подписи репозиториев

Ключ, которым подписываются все системные обновления, выпущенный в 2017 году, был действителен до 2 сентября 2022 года. Сегодня пользователи дистрибутива столкнулись с невозможностью штатного обновления системы через apt в связи с отсутствием действительного ключа. Разработчики дистрибутива, судя по всему, узнали о просрочке из жалобы на форуме и сгенерировали новый пакет devuan-keyring, который предлагают скачать через http (поскольку apt неработоспособен) и без каких-либо проверок сразу установить.

Показать

wget http://deb.devuan.org/devuan/pool/main/d/devuan-keyring/devuan-keyring_2022.09.04_all.deb
dpkg -i devuan-keyring_2022.09.04_all.deb

Впрочем, какую-никакую проверку провести всё-таки можно, на странице пакета (по https) указан sha256-хэш deb-файла: 96c4a206e8dfdc21138ec619687ef9acf36e1524dd39190c040164f37cc3468d, который перед тем как запускать dpkg можно сравнить так:

sha256sum devuan-keyring_2022.09.04_all.deb

Старый ключ:

/etc/apt/trusted.gpg.d/devuan-keyring-2017-archive.gpg
------------------------------------------------------
pub   rsa4096 2017-09-04 [SC] [просрочен с: 2022-09-03]
      E032 601B 7CA1 0BC3 EA53  FA81 BB23 C00C 61FC 752C
uid         [  просрочен ] Devuan Repository (Amprolla3 on Nemesis) <repository@devuan.org>

Новый ключ:

/etc/apt/trusted.gpg.d/devuan-keyring-2022-archive.gpg
------------------------------------------------------
pub   rsa4096 2017-09-04 [SC] [   годен до: 2023-09-03]
      E032 601B 7CA1 0BC3 EA53  FA81 BB23 C00C 61FC 752C
uid         [ неизвестно ] Devuan Repository (Amprolla3 on Nemesis) <repository@devuan.org>
sub   rsa4096 2017-09-04 [E] [   годен до: 2023-09-03]

Несмотря на то, что, по-видимому, новый ключ легитимен, стоит отметить, что цепочка безопасного доверия ключей прервана, и пользователи вынуждены, при обновлении пакета, полагаться на https-сертификат сайта с информацией о пакетах, который может выпустить (поддельный) любая из огромного количества организаций, в том числе сомнительных, в доверенном списке браузера.

Источники:
https://dev1galaxy.org/viewtopic.php?id=5211
https://www.linux.org.ru/news/security/16964008

2022   досуг   интересное   ОС   сисадминство   события   софт

Напильник для Эгеи, часть 4

      Четвёртая часть о «доводке напильником» Эгеи.

      Август 2022 года:
Позавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: Показать

Лёгкий гугляж завёл меня на страницу Александра Токарева Эгея и красные банеры /core.php, line 2, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.

В файле system/core.php ищу переменную, вызвавшую сообщение об ошибке (k). Для этого в редакторе mc ищу символ k как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.

P. S. Эмпирический список пакетов, необходимых к установке для работы  блога,  RSS-ридера и  облака:
php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl

P. P. S. Версия Эгеи — релиз 2.7, версия 3249.

2022   HTML   досуг   маленькие хитрости   сисадминство   софт

Пакеты для русской локализации старого KDE

 Для целей «дистрособирательства» мне иногда нужно быстро русифицировать старые ОСи с разными рабочими столами. Иногда «родных» репозиториев для старых дистров уже нет, поэтому для KDE наскрёб несколько пакетов, пересобрал их и раскидал по архивам для будущего использования.

 KDE 4 (kde4-l10n-ru.tar.gz)
 KDE 3 (kde3-i18n-ru.tar.gz)
 t.tar.gz
 k.tgz
 ru.tgz

N. B. Файлы архивов доступны также по http.

2022   досуг   сисадминство   софт

Let’s Encrypt отзывает 2 млн сертификатов

Некоммерческий удостоверяющий центр Let’s Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, объявил о досрочном отзыве около двух миллионов TLS-сертификатов, что составляет около 1% от всех активных сертификатов данного удостоверяющего центра. Отзыв сертификатов инициирован из-за выявления несоответствия требованиям спецификации в применяемом в Let’s Encrypt коде с реализацией расширения TLS-ALPN-01 (RFC 7301, Application-Layer Protocol Negotiation). Несоответствие было связано с отсутствием некоторых проверок, выполняемых в процессе согласования соединений на базе TLS-расширения ALPN, применяемого в HTTP/2. Детальная информация об инциденте будет опубликована после завершения отзыва проблемных сертификатов.

Показать

26 января в 03:48 (MSK) проблема была устранена, но все сертификаты, при выдаче которых для верификации использовался метод TLS-ALPN-01, решено признать недействительными. Отзыв сертификатов начнётся 28 января в 19:00 (MSK). До этого времени пользователям, использующим метод проверки TLS-ALPN-01, рекомендуется успеть обновить свои сертификаты, иначе они досрочно будут признаны недействительными.

Соответствующие уведомления о необходимости обновления сертификатов отправлены на email. Пользователей, применяющих для получения сертификата инструментарии Certbot и dehydrated, при использовании настроек по умолчанию проблема не затронула. Метод TLS-ALPN-01 поддерживается в пакетах Caddy, Traefik, apache mod_md и autocert. Проверить корректность своих сертификатов можно через поиск идентификаторов, серийных номеров или доменов в списке проблемных сертификатов.

Так как изменения затрагивают поведение при проверке методом TLS-ALPN-01, для продолжения работы может требоваться обновление ACME-клиента или изменение настроек (Caddy, bitnami/bn-cert, autocert, apache mod_md, Traefik). Изменения сводятся к использованию версий TLS не ниже 1.2 (клиенты теперь не смогут использовать TLS 1.1) и прекращению поддержки OID 1.3.6.1.5.5.7.1.30.1, идентифицирующего устаревшее расширение acmeIdentifier, поддерживаемое только в ранних черновиках спецификации RFC 8737 (при формировании сертификата теперь допускается только OID 1.3.6.1.5.5.7.1.31, а клиенты использующие OID 1.3.6.1.5.5.7.1.30.1 не смогут получить сертификат).

Источники:
https://www.opennet.ru/opennews/art.shtml?num=56588
https://community.letsencrypt.org/t/2022-01-25-issue-with-tls-alpn-01-validation-method/170450

Google Drive выявляет нарушения прав в файлах с одним числом

Эмили Долсон (Emily Dolson), преподаватель из Мичиганского университета, столкнулась с необычным поведением сервиса Google Drive, который стал блокировать доступ к одному из сохранённых файлов с сообщением о нарушении правил сервиса, связанных с авторскими правами, и предупреждением о невозможности запросить для данного типа блокировок ручную проверку. Интересно то, что содержимое заблокированного файла состояло только из одной цифры «1».

Изначально предполагалось, что блокировка может быть вызвана коллизиями при вычислении хэшей, но данная гипотеза была отвергнута, так как экспериментальным путём выявлено, что блокировка срабатывает не только на «1», но и на многие другие цифры, независимо от наличия символа перевода строки и имени файла. Например, при создании файлов с числами из диапазона от -1000 до 1000, блокировка была применена для чисел 0, 500, 174, 833, 285, 302, 186, 451, 336 и 173. Блокировка производится не сразу, а примерно через час после размещения файла. Представители Google сообщили, что пытаются разобраться в причинах сбоя и работают над устранением проблемы.

Источники:
https://news.ycombinator.com/item?id=30060405
http://www.opennet.ru/opennews/art.shtml?num=56574

P. S. Как тут не вспомнить Незаконное простое число...

2022   в мире   интересное   сисадминство   софт   юмор

Разница между командами выключения *nix

Техническая разница между различными командами выключениями системы.

*nix-систему можно выключить различными способами: можно использовать poweroff, shutdown, init, halt.

Результат выполнения команд выключения:

poweroff (команда выключения) посылает команду ACPI на выключение системы (как при однократном нажатии кнопки выключения питания);
shutdown (команда завершения) — позволяет выполнить отложенные операции с питанием. При этом утилита выводит оповещение всем залогинившимся пользователям о предстоящем завершении работы и может с помощью файла /run/nologin блокировать вход в систему за 5 минут до времени выключения (если указан аргумент времени) После вызываются системные и локальные {init/rc}.d-скрипты с параметром stop.. В конце вызывается тот же poweroff;
halt (команда останова) отдаёт команду аппаратному обеспечению приостановить все функции CPU, но оставляет систему включённой (в некоторых случаях использование команды без параметров полностью выключает ПК). На машинах с архитектурой x86 обычно происходит выключение, но на машинах Sun управление возвращается в «ROM monitor» для получения информации о состоянии системы. Как и reboot, команда сбрасывает кэш файловой системы на диск и посылает всем процессам сигналы TERM и KILL;
init (команда изменения уровня выполнения системы) — при переходе на уровень выполнения 0 производится остановка системы командой halt с помощью выполнения скриптов, соответствующих этому уровню.

В большинстве современных *nix-систем для обратной совместимости со старыми проприетарными ОСями эти команды выполняют одно и то же и ссылаются на один и тот же файл. Например, команды poweroff и shutdown представляют из себя символические ссылки на /bin/systemctl:

user@localhost:/sbin$ ls -l poweroff
lrwxrwxrwx 1 root root 14 Sep  5 18:01 poweroff -> /bin/systemctl
user@localhost:/sbin$ ls -l shutdown 
lrwxrwxrwx 1 root root 14 Sep  5 18:01 shutdown -> /bin/systemctl
2022   досуг   интересное   ОС   сисадминство   софт

Защита опций загрузчика GRUB паролём

Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!
Показать

Настройка пароля на загрузку системы и на редактирование опций загрузки

От имени пользователя root генерируется хеш пароля:

sudo grub-mkpasswd-pbkdf2

Будет показана примерно такая строка:

Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7

Пример показан на рисунке 1:

Рисунок 1. Пример генерации хеша пароля загрузки.

Из выведенных данных скопировать строку «grub.pbkdf2.sha512.10000………….» (полностью) и дописать в файл /etc/grub.d/40_custom:

set superusers="<имя>"
password_pbkdf2 <имя> grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя root:

sudo chmod 711 /etc/grub.d/40_custom

Создание нового конфигурационного файла загрузчика:

sudo grub-mkconfig -o /boot/grub/grub.cfg

После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина <имя> и пароля, используемого в команде grub-mkpasswd-pbkdf2, если учётные данные верны, система продолжит загрузку.

N. B. Логин <имя> в файле /etc/grub.d/40_custom можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о ​​пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл каталога /etc/grub.d, если этот файл включён в grub.cfg. Файл /etc/grub.d/40_custom выбран потому, что он не перезаписывается при обновлении пакета GRUB.

P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле /etc/grub.d/10_linux и добавить опцию:

--unrestricted

Пример показан на рисунке 2:

Рисунок 2. Пример добавления опции класса загрузки в файл /etc/grub.d/10_linux.

В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.

P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле /etc/grub.d/30_os-prober вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки

--unrestricted

Пример показан на рисунке 3:

Рисунок 3. Пример добавления опции класса загрузки в файл /etc/grub.d/30_os-prober для всех найденных типов операционных систем.

2021   досуг   маленькие хитрости   ОС   сисадминство   софт

Настройка высокой доступности через keepalived в Debian

Keepalived — системный демон на Linux-системах, позволяющий организовать отказоустойчивость сервиса и балансировку нагрузки. Отказоустойчивость достигается за счет «плавающего» IP-адреса, который переключается на резервный сервер в случае отказа основного. Для автоматического переключения IP-адреса между серверами keepalived используется протокол VRRP (Virtual Router Redundancy Protocol), стандартизированный в RFC 2338 (https://www.ietf.org/rfc/rfc2338.txt).

Показать

Оглавление
Принципы работы протокола VRRP
Общий алгоритм работы
Установка и настройка keepalived
Результат
Источники

Принципы работы протокола VRRP

Теория и основные определения протокола VRRP:
VIP — Virtual IP, виртуальный IP адрес, который может автоматически переключаться между серверами в случае сбоев;
Master — сервер, на котором в данный момент активен VIP;
Backup — серверы, на которые переключится VIP в случае сбоя мастера;
VRID — Virtual Router ID, серверы, объединённые общим виртуальным IP (VIP), образуют так называемый виртуальный роутер, уникальный идентификатор которого, принимает значения от 1 до 255. Сервер может одновременно состоять в нескольких VRID, при этом для каждого VRID должны использоваться уникальные виртуальные IP-адреса;
Virtual MAC — виртуальный MAC-адрес (0000.5E00.01xx, где xx — номер группы VRRP).
Перейти к оглавлению.

Общий алгоритм работы:

Master-сервер с заданным интервалом отправляет VRRP пакеты на зарезервированный адрес multicast (многоадресной, когда отправитель один, а получателей может быть много) рассылки 224.0.0.18, а все backup-серверы слушают этот адрес.

Если backup-сервер не получает пакеты VRRP, то он начинает процедуру выбора master и, если он переходит в состояние master по приоритету, то активирует VIP и отравляет gratuitous ARP (особый вид ARP ответа, который обновляет MAC таблицу на подключенных коммутаторах, чтобы проинформировать о смене владельца виртуального IP адреса и MAC-адреса для перенаправления трафика).


Перейти к оглавлению.

Установка и настройка keepalived

Установку и настройку я провёл на однотипных серверах в виде виртуальных машин Virtualbox d1 и d2 с установленной системой Debian версии 11.1.0. В качестве IP-адресов серверов используются 10.9.1.16/24 — для сервера d1, 10.9.1.61/24 — для сервера d2. В качестве виртуального IP-адреса, который будет автоматически переключаться между серверами в случае сбоев, используется адрес 10.9.1.6/24.

N. B. Символ комментария в конфигурационном файле keepalived — это ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК (!).

N. B. 2 <интерфейс> — сетевой интерфейс хостов d1 и d2.

N. B. 3 В примере приведена конфигурация без дополнительных проверок статусов каких-либо служб d1 и d2.

На машинах d1 и d2:

1 — на сетевом интерфейсе <интерфейс> настраиваю IP-адрес 10.9.1.16/24 на машине d1 и 10.9.1.61/24 на машине d2 соответственно;
2 — устанавливаю необходимые пакеты:

apt-get update
d1 # apt-get install linux-headers-$(uname -r)

3 — устанавливаю Keepalived:

apt-get install keepalived

4 — настраиваю Keepalived:

на машине d1: Показать

cat <<EOF >>/etc/keepalived/keepalived.conf
global_defs {}
vrrp_instance d1 {
    state MASTER
    interface <интерфейс>
    virtual_router_id 101
    priority 101
    advert_int 1
    virtual_ipaddress {
        10.9.1.6/24
    }
}
EOF


на машине d2: Показать

cat <<EOF >>/etc/keepalived/keepalived.conf
global_defs {}
vrrp_instance d2 {
    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
    priority 101
    advert_int 1
    virtual_ipaddress {
        10.9.1.6/24
    }
}
EOF

5 — запускаю демон keepalived:

systemctl start keepalived


N. B. 4 Если в системе используется брандмауэр, необходимо разрешить протокол VRRP в нём. На примере iptables — необходимо добавить в цепочки INPUT и OUTPUT следующие правила:

iptables -I INPUT -p vrrp -j ACCEPT
iptables -I OUTPUT -p vrrp -j ACCEPT

N. B. 5 Для настройки записи лога службы keepalived в отдельный файл необходимо создать файл /etc/syslog.d/10-keepalived.conf с таким содержимым:

if $programname contains 'keepalived' then /var/log/keepalived.log
if $programname contains 'keepalived' then stop

Затем перезагрузить rsyslog:

systemctl restart rsyslog

N. B. 6 Для ротации новых логов создать файл /etc/logrotate.d/keepalived с таким содержимым:

/var/log/keepalived.log {
        weekly
        rotate 8
        compress
        delaycompress
        missingok
        notifempty
}

N. B. 7 Включить автозапуск службы keepalive:

systemctl enable keepalived

Перейти к оглавлению.

Результат

На рисунке приведён результат отключения линка на сетевом интерфейсе на сервере d2 (до отключения функционировал в режиме master). Видно, что виртуальный IP-адрес 10.9.1.6 остаётся доступным: Показать

Перейти к оглавлению.

Источники

https://ru.wikipedia.org/wiki/VRRP
https://winitpro.ru/index.php/2019/09/09/keepalived-ha-balansirovka-plavayushhiy-ip-adres/
https://tecadmin.net/setup-ip-failover-on-ubuntu-with-keepalived/
Перейти к оглавлению.

2021   досуг   сеть   сисадминство   софт
Ранее Ctrl + ↓
Наверх