В данной инструкции описан процесс обновления AxelNAC 0.9.0 и 0.9.1 до версии 1.0.0, процесс проверки обновления конфигурационных файлов, а также приведен список ошибок, которые могут появиться в процессе обновления.
Заметки к обновлению
Перед началом процесса обновления обязательно ознакомьтесь с заметками к обновлению.
Несоответствующая версия ядра
Если на какой-либо машине версия ядра выше 5.10.0-30, то перед обновлением версии AxelNAC необходимо обновить iptables-netflow. Для этого выполните следующие шаги:
Шаг 1. Распакуйте архив docker-anac-update.tar с помощью команды:
tar -xvf docker-anac-update.tar -C /
Шаг 2. Для установки обновления iptables-netflow разархивируйте установочный файл iptables-netflow_2.5.1.orig.tar.gz в отдельный каталог (например, dir_to_arch/ipt-netflow-2.5.1) с помощью команды:
tar -xvf iptables-netflow_2.5.1.orig.tar.gz -C /dir_to_arch/ipt-netflow-2.5.1
Шаг 3. Перейдите в каталог с разархивированными установочными файлами (например, dir_to_arch/ipt-netflow-2.5.1) и запустите установку, последовательно выполнив следующие команды:
cd /dir_to_arch/ipt-netflow-2.5.1
./configure
make all install
Шаг 4. Перезагрузите систему и запустите скрипт установки обновления AxelNAC.
Некритические ошибки
Во время установки обновления могут возникнуть ошибки, которые не являются критическими и которые можно пропустить.
Man DB
Служба Man DB может быть удалена на сервере.
DELETE MAN-DB
mv: cannot stat '/usr/bin/mandb': No such file or directory
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package man-db
my.cnf is broken
update-alternatives: warning: forcing reinstallation of alternative /etc/mysql/mariadb.cnf because link group my.cnf is broken
update-alternatives: warning: not replacing /etc/mysql/my.cnf with a link
Selecting previously unselected package mariadb-server-10.5.
Samba
Please ignore the following error about deb-systemd-helper not finding those services.
(samba-ad-dc.service masked)
Failed to preset unit: Unit file /etc/systemd/system/samba-ad-dc.service is masked.
/usr/bin/deb-systemd-helper: error: systemctl preset failed on samba-ad-dc.service: No such file or directory
nmbd.service is a disabled or a static unit not running, not starting it.
samba-ad-dc.service is a disabled or a static unit not running, not starting it.
smbd.service is a disabled or a static unit not running, not starting it.
В данном файле необходимо закомментировать все строчки, кроме последней, последняя строчка должна обязательно иметь окончание "bullseye main":
...
#deb https://deb.debian.org/debian bullseye-backports main
#deb-src https://deb.debian.org/debian bullseye-backports main
#deb http://10.31.202.12:8081/repository/anac-deb-proxy/ bullseye main contrib
#deb http://10.31.202.12:8081/repository/anac-deb-proxy-sec/ bullseye-security main contrib
deb [trusted=yes] file:/srv/anac-repo/ bullseye main
/etc/apt/sources.list.d//anac.list
В данном файле необходимо закомментировать все строчки:
#deb http://10.31.202.12:8081/repository/anac-apt/ bullseye main
#deb http://10.31.202.12:8081/repository/anac-release/ bullseye main
Файлы, изменяемые при обновлении
При выполнении обновления будут внесены изменения в следующие файлы:
/usr/local/pf/conf/adminroles.conf;
/usr/local/pf/conf/authentication.conf;
/usr/local/pf/conf/httpd.conf.d/httpd.aaa.tt;
/usr/local/pf/conf/radiusd/radiusd.conf;
/usr/local/pf/conf/radiusd/rest.conf.
Win-Agent
При установке обновленной версии из OVA- или ISO-сборки агент инициализации Win-Agent появится только после перезапуска обновляемого хоста.
Обновление базы данных TACACS+
Для обновления базы данных TACACS+ выполните следующие команды:
#!bin/bash
cd /usr/local/pf/db/
mysql -u root -p tgui < tacacs-update-to-1.0.0.sql
Обновление AxelNAC
Перед началом обновления рекомендуется выполнить резервное копирование каталога conf/, чтобы, при необходимости, восстановить настройки.
Для того, чтобы выполнить обновление AxelNAC до версии 1.0.0, необходимо выполнить следующие действия:
Шаг 1. Перенесите пакет обновления и скрипт для него на все узлы кластера в раздел /srv/.
Рекомендуется выполнить резервное копирование текущих конфигурационных файлов (adminroles.conf и authentication.conf) в раздел, отличающийся от расположения конфигурационных файлов AxelNAC;
Для корректной работы скрипта необходимо изменить имя пакета обновления на docker-anac-update.tar.
Шаг 2. Подготовьте скрипт обновления базы данных TACACS+ — tacacs-update-to-1.0.0.sql и перенесите его на мастер-узел кластера.
Шаг 3. Выполните создание снапшотов текущего состояния каждого из узлов кластера, чтобы избежать потери данных кластера. Выключение каждой следующей виртуальной машины происходит только после полного восстановления предыдущей.
Снапшоты текущего состояния узлов необходимо формировать в выключенном состоянии виртуальной машины, чтобы избежать потери синхронизации базы данных при восстановлении предыдущего состояния из снапшота.
Шаг 4. Выполните на мастер-узле обновление базы данных mariadb с помощью следующей команды:
mysql -u root -p tgui < tacacs-update-to-1.0.0.sql
Данный шаг необходимо выполнять только если у вас был ранее установлен интерфейс tacacs-old для взаимодействия с TACACS+.
С этого шага все действия должны выполняться сначала на ведомых узлах. Мастер-узел обновляется в последнюю очередь.
Шаг 5. Выведите узел из кластера.
Шаг 5.1. Отключите службу cluster_check. Для этого перейдите в раздел Конфигурация → Настройки системы → Основные настройки → Обслуживание и нажмите на переключатель слева от имени службы.
Шаг 5.2. Для отключения узла также необходимо выполнить перезапуск службы pfcron. Для этого нажмите на имя сервиса в левом верхнем углу страницы и в выпадающем списке выберите Перезапустить все по очереди.
Шаг 5.3. Отключите обновляемый узел от кластера, выполнив на нем следующие команды:
Шаг 5.5. На обновляемом узле перезапустите службу mariadb:
systemctl restart packetfence-mariadb
Для того, чтобы убедиться, что узел был выведен из кластера, запустите на других узлах вывод журнала с помощью команды journalctl -ft mysqld, и выведите содержимое из mysql с помощью команды mysql > show status like '%wsrep_incoming%';. Если предыдущие шаги были выполнены корректно, в журнале будет отсутствовать адрес обновляемого узла.
Шаг 6. Выполните скрипт local-upgrade.sh для старта локального обновления:
cd /srv
bash local-upgrade.sh
#согласиться с установкой AxelNAC
AxelNAC version 1.0.0 will be installed? Continue [y/n]: Y
#согласиться с установкой новых файлов конфигурации, если таковые имеются
При успешном обновлении будут отображены сообщения:
AxelNAC version 1.0.0 installed successfully
dpkg: warning: downgrading freeradius-common from 3.2.1+git to 3.2.1+0011+103139+ccd36a96+ci1
(Reading database ... 162983 files and directories currently installed.)
Preparing to unpack .../freeradius-common_3.2.1+0011+103139+ccd36a96+ci1_all.deb ...
Unpacking freeradius-common (3.2.1+0011+103139+ccd36a96+ci1) over (3.2.1+git) ...
Setting up freeradius-common (3.2.1+0011+103139+ccd36a96+ci1) ...
При возникновении ошибки будет выведено сообщение с причиной ее возникновения и результатом исправления. Например, при несоответствии версий RADIUS, будет выведено следующее сообщение:
ipt_NETFLOW.ko:
Running module version sanity check.Original moduleNo original module exists within this kernelInstallationInstalling to /lib/modules/5.10.0-28-amd64/updates/dkms/depmod...DKMS: install completed.
Building initial module for 5.10.0-33-amd64
Error! Bad return status for module build on kernel: 5.10.0-33-amd64 (x86_64)
Consult /var/lib/dkms/ipt-netflow/2.5.1/build/make.log for more information.
dpkg: error processing package iptables-netflow-dkms (--configure):
installed iptables-netflow-dkms package post-installation script subprocess returned error exit status 10
dpkg: dependency problems prevent configuration of axelnac:
axelnac depends on iptables-netflow-dkms; however:
Package iptables-netflow-dkms is not configured yet.dpkg: error processing package axelnac (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
iptables-netflow-dkms
Шаг 7. Убедитесь, что пакет обновлений установился и конфигурационные файлы обновились. Процесс проверки приведен в разделе ниже.
Шаг 8. Восстановите обновляемый узел в кластере, выполнив следующие команды:
Рекомендуется убедиться, что узел вернулся в кластер. Для этого запустите на других узлах вывод журнала с помощью команды journalctl -ft mysqld, и выведите содержимое из mysql с помощью команды mysql > show status like '%wsrep_incoming%';. Если предыдущие шаги были выполнены корректно, в журнале будет присутствовать адрес обновляемого узла.
Шаг 10. Повторите шаги 5-10, кроме шага 8, для обновления остальных узлов. Мастер-узел обновляется последним.
Шаг 11. Выполните конфигурацию параметров базы данных в веб-интерфейсе AxelNAC. Для этого перейдите в раздел Конфигурация → Настройки системы → База данных → Расширенные и установите следующие значения для параметров:
Размер буферного пула InnoDB: 1024;
Размер кэша потоков: 50;
Схема работы: ON;
Таймаут чтения по сети: 360;
Таймаут записи по сети: 360;
Режим Ведущий/Ведомый: OFF.
Шаг 12. Запустите службу cluster_check, которая была отключена в шаге 5.1 и перезапустите службу pfcron с помощью команды:
/usr/local/pf/bin/pfcmd service pfcron restart
Шаг 13. Выполните перезапуск каждого узла последовательно, дождавшись пока все службы восстановятся и будут иметь корректные статусы.
Переходите к перезапуска следующего сервера только после того, как работа предыдущего будет полностью восстановлена.
Шаг 14. Проверьте, был ли сгенерирован .exe-файл Windows-агента (данный шаг обязателен также для инсталляцию с помощью OVA-образа):
root@anac-6:~# ls -la /usr/local/pf/html/captive-portal/content/ | grep agent
-rw-r--r-- 1 root root 64018 Nov 12 13:54 AxelNAC-agent.apk
-rwxr-xr-x 1 root root 13466112 Nov 12 13:55 axelnac-windows-agent.exe
Если файл агента не был создан, перейдите в директорию /srv и запустите скрипт создания Windows-агента с помощью следующих команд:
cd /srv
bash create_agent.sh
Шаг 15. Выполните синхронизацию конфигурационных файлов и файла win-agent, запустив скрипт синхронизации на узле, где был сгенерирован .exe-файл Windows-агента (данный шаг обязателен также для инсталляцию с помощью OVA-образа):
bash sync_agent.sh
Обязательно удалите скрипт обновления с клиентских устройств, так как в нем содержится ключ для пользователя и root.
Шаг 16. На мастер-узле замените и внесите изменения в текущие файлы конфигурации adminroles.conf и authentication.conf. Для этого скопируйте отсутствующие блоки из резервных копий, которые были созданы в шаге 1. Затем перезапустите все службы с помощью следующих команд:
Данный шаг необходимо выполнить только после полного перезапуска и восстановления работы всех узлов кластера.
Проверка обновления конфигурационных файлов
В данном разделе приведены команды для проверки обновления конфигурационных файлов, а также примеры вывода, по которым можно идентифицировать успешное обновление.
База данных
Индексы
В списке индексов, в колонке Column_name должно присутствовать значение start_time:
mysql
use pf;
MariaDB [pf]> select * from sms_carrier;
+--------+------+-------------------+---------------------+---------------------+-----------------+--------------------+-----------+
| id | name | email_pattern | created | modified | subject_pattern | body_pattern | auth_type |
+--------+------+-------------------+---------------------+---------------------+-----------------+--------------------+-----------+
| 100056 | SMSC | send@send.smsc.ru | 2024-10-28 09:15:25 | 2024-10-29 12:26:06 | | %l%:%p%::::%s%:%m% | 0 |
+--------+------+-------------------+---------------------+---------------------+-----------------+--------------------+-----------+
1 row in set (0.000 sec)
Версия службы pf
mysql
use pf;
MariaDB [pf]> select * from pf_version;
+--------+---------+---------------------+
| id | version | created_at |
+--------+---------+---------------------+
| 786688 | 112.1 | 2024-10-28 09:15:25 |
+--------+---------+---------------------+
1 row in set (0.000 sec)
Создание таблицы токенов аутентификации
mysql
MariaDB [(none)]> use tgui;
Database changed
MariaDB [tgui]> select * from auth_token;
+------------------------------------------------------------------+---------------------+---------------------+---------+
| token | created_at | updated_at | user_id |
+------------------------------------------------------------------+---------------------+---------------------+---------+
| | | | |
+------------------------------------------------------------------+---------------------+---------------------+---------+
Конфигурационные файлы
adminroles.conf
Файл должен содержать следующие значения:
#Роль спонсора
...
[Sponsor]
allowed_actions=set_role,set_access_duration
description=Role for the sponsor
allowed_node_roles=
allowed_roles=guest
allowed_access_levels=NONE
allowed_access_durations=1h
actions=USERS_READ_SPONSORED,USERS_SET_ROLE,USERS_SET_ACCESS_DURATION,USERS_UPDATE,USERS_READ,USERS_CREATE,USERS_DELETE,SECURITY_EVENTS_READ
...
#Роль пользователя TACACS
...
[TACACS_USER]
allowed_roles=
allowed_actions=
allowed_access_levels=
allowed_node_roles=
actions=TACACS_USER,CONFIGURATION_MAIN_READ
description=Group for Tacacs Access
...
apt -a list packetfence-perl
Listing... Done
packetfence-perl/stable,now 1.2.5 all [installed]
Отсутствие пакета impacket
root@anac:/usr/local/pf/containers# find / -name "impacket"
#в выводе команды должны отсутствовать какие-либо модули после установки обновления или развертывания OVA-образа