Инструкции по Continent: различия между версиями

Материал из EWiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 17 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Общее ==
== Общее ==
Инструкции для [[Continent]]
Инструкции для [[Continent]]
== Фиксация MAC адресов в PNetLab ==
'''ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их <u>связями</u>, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.'''
[[Файл:First_MAC.png]]
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.
[[Файл:Mac - link.png]]
== Сохранение виртуальных машин в PNetLab ==
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния.
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]
==== Сначал создаем копию виртуальных машин ====
# Останавливаем машину
# В контекстном меню машины нажимаем Node Commit
# Выбираем Take snapshot ....
# В настройках машины указываем в качестве образа наш snapshot
# В контекстном меню  нажимаем Wipe
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.
==== Сохраняем изменения в собственный образ ====
# Остановить машину
# В контекстном меню машины нажимаем Node Commit
# Выбираем Commit to original


== Монтирование виртуального диска в хостовую ОС ==
== Монтирование виртуального диска в хостовую ОС ==
Строка 19: Строка 51:
sudo mount /dev/mapper/vg00-lv_root /mnt
sudo mount /dev/mapper/vg00-lv_root /mnt
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу
</syntaxhighlight>Команда lsblk показывает подключенные диски.
</syntaxhighlight>Команда '''lsblk''' показывает подключенные диски.
 
Если возникнут проблемы монтирования ntfs разделов можно выполнить:<syntaxhighlight lang="bash">
ntfsfix /dev/nbd1p2
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt
</syntaxhighlight>https://unix.stackexchange.com/a/236145


=== Отключение ===
=== Отключение ===
Строка 55: Строка 92:


=== Подключение флешки в виртуальную машину с Continent ===
=== Подключение флешки в виртуальную машину с Continent ===
'''ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их связями, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках виртуальной машины (см. инструкцию "Фиксация MAC адресов в PNetLab")'''
'''ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию "Фиксация MAC адресов в PNetLab")'''


# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:<syntaxhighlight>
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:<syntaxhighlight>
-drive if=none,id=stick,format=raw,file=<ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ> -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick
-drive if=none,id=stick,format=raw,file=<ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ> -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick
</syntaxhighlight>[[Файл:PNetLab settings.png|слева]]
</syntaxhighlight>[[Файл:PNetLab_settings.png]]<br />
# Перезагрузить Continent
 
 
3. Перезагрузить Контитент
 
== Получение root доступа к Continent 4 на виртуальной машине ==
 
# Отключить виртуальную машину с Continent
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.<syntaxhighlight lang="c">
int main(int argc, char **argv) {
  return 0;
}
 
</syntaxhighlight>[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.
 
=== Доступ по SSH ===
 
#В /etc/passwd у пользователя admin меняем консоль на /bin/bash
# Включаем ssh доступ, в соответствии с интсрукцией "Руководство администратора. Управление комплексом"
# Заходим на Continent по ssh и вополняем sudo bash
 
== Перекомпиляция ядра на виртуальной машине Continent ==
 
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
# В виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки. <syntaxhighlight lang="bash">
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot
sudo apt install dwarves
</syntaxhighlight>
# Копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:<syntaxhighlight lang="text">
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
CONFIG_BPF_JIT_ALWAYS_ON=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_DEBUG_INFO_REDUCED=y
</syntaxhighlight>
# Компилируем ядро командой make -j<количество параллельных потоков>. -Проверяем успешность компиляции:<syntaxhighlight lang="bash">
echo $? #должен вернуться 0 в случае отсутсвия ошибок
</syntaxhighlight>
# Устанавливаем новое ядро в Continent <syntaxhighlight lang="bash">
sudo make INSTALL_MOD_PATH=/mnt modules_install
sudo make INSTALL_PATH=/mnt/boot install
</syntaxhighlight>https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое.
#Увеличиваем раздел /tmp  в Continent до 1Гбт  Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.  Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
#ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS<syntaxhighlight lang="bash">
cd /lib/modules
mv 5.10.210 _5.10.210
ln -s 5.10.210-2.continent.x86_64 5.10.210
</syntaxhighlight>
#Формируем initramfs<syntaxhighlight lang="bash">
cd /boot
dracut initramfs-<версия ядра>.x86_64.img <версия ядра>
</syntaxhighlight>
#Перезагружаем Continent и выбираем в загрузчике новое ядро.
 
== Обновление лицензий ==
Процесс управления лицензиями описан в документации в томе "Руководство администратора. Управление комплексом.". Документация доступна по [https://www.securitycode.ru/products/kontinent-4/?tab=support ссылке]
 
Учебные лицензии можно скачать по [https://www.securitycode.ru/download_center/?section=downloads&product=%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D0%B5%D0%BD%D1%82%204&version=4.1.9 ссылке]. Лицензии имеют небольшой срок действия, но постоянно актуализируются.
 
Лицензионные файлы необходимо скопировать на компьютер с Менеджером конфигурации (192.168.23.26). Для это можно сначала скопировать файлы на любой компьютер из сети 192.168.23.0/29 доступный по ssh/scp. А затем скопировать на целевую машину при помощи программы WinSCP.

Текущая версия от 06:57, 10 октября 2024

Инструкции для Continent

Фиксация MAC адресов в PNetLab

[править | править код]

ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их связями, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.

Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules (ссылка)

Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab

[править | править код]

Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.

Сохранение виртуальных машин в PNetLab

[править | править код]

Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния.

Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. Инструкция по сохранению.

Сначал создаем копию виртуальных машин

[править | править код]
  1. Останавливаем машину
  2. В контекстном меню машины нажимаем Node Commit
  3. Выбираем Take snapshot ....
  4. В настройках машины указываем в качестве образа наш snapshot
  5. В контекстном меню нажимаем Wipe
  6. Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.

Сохраняем изменения в собственный образ

[править | править код]
  1. Остановить машину
  2. В контекстном меню машины нажимаем Node Commit
  3. Выбираем Commit to original

Монтирование виртуального диска в хостовую ОС

[править | править код]

Предусловия:

[править | править код]
  1. Установлены пакеты qemu-utils и lvm2

Монтирование:

[править | править код]
  1. Загрузить модуль ядра nbd
    sudo modprobe nbd max_part=8
    
    В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:
    insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8
    
  2. Отключить виртуальную машину (ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)
  3. Подключить виртуальный диск
sudo qemu-nbd -c /dev/nbd1 <путь к виртуальному диску vdi или qcow2>
sudo mount /dev/mapper/vg00-lv_root /mnt
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу

Команда lsblk показывает подключенные диски. Если возникнут проблемы монтирования ntfs разделов можно выполнить:

ntfsfix /dev/nbd1p2
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt

https://unix.stackexchange.com/a/236145

Отключение

[править | править код]
  1. Отключить диск
    sudo umount /mnt/boot # если был примонтирован
    sudo umount /mnt
    sudo vgchange -a n vg00
    sudo qemu-nbd -d /dev/nbd1
    
  2. Включить виртуальную машину
  3. Выгрузить модуль ядра nbd, если в нем больше нет необходимости
    modprobe -r nbd
    

Монтирование виртуальной флешки в Continent на PNetLab

[править | править код]

Предусловия:

[править | править код]
  1. Установлен пакет qemu-utils

Создание виртуальной флешки

[править | править код]
sudo modprobe nbd max_part=8
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8
qemu-img create -f raw myflash.img 512M
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img
fdisk /dev/nbd2
# ввести n
# соглашаться со всеми значениями по-умолчанию
# ввести w
sudo mkfs -t vfat /dev/nbd2p1

sudo qemu-nbd -d /dev/nbd2

Подключение флешки в виртуальную машину с Continent

[править | править код]

ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию "Фиксация MAC адресов в PNetLab")

  1. ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!
  2. В настройки виртуальной машины PNetLab в поле Qemu Options добавить:
    -drive if=none,id=stick,format=raw,file=<ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ> -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick


3. Перезагрузить Контитент

Получение root доступа к Continent 4 на виртуальной машине

[править | править код]
  1. Отключить виртуальную машину с Continent
  2. Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
  3. Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.
    int main(int argc, char **argv) {
       return 0;
    }
    
    Медиа:Integrity.txt (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)
  4. В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door.
  5. Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.

Доступ по SSH

[править | править код]
  1. В /etc/passwd у пользователя admin меняем консоль на /bin/bash
  2. Включаем ssh доступ, в соответствии с интсрукцией "Руководство администратора. Управление комплексом"
  3. Заходим на Continent по ssh и вополняем sudo bash

Перекомпиляция ядра на виртуальной машине Continent

[править | править код]
  1. Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)
  2. Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)
  3. В виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки.
    sudo apt update
    sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot
    sudo apt install dwarves
    
  4. Копируем из виртуальной машины в папку с ядром файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:
    CONFIG_BPF_SYSCALL=y
    CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
    CONFIG_BPF_JIT_ALWAYS_ON=y
    CONFIG_DEBUG_INFO_BTF=y
    CONFIG_DEBUG_INFO_REDUCED=y
    
  5. Компилируем ядро командой make -j<количество параллельных потоков>. -Проверяем успешность компиляции:
    echo $? #должен вернуться 0 в случае отсутсвия ошибок
    
  6. Устанавливаем новое ядро в Continent
    sudo make INSTALL_MOD_PATH=/mnt modules_install
    sudo make INSTALL_PATH=/mnt/boot install
    
    https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox
  7. Добавляем новое ядро в grub В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое.
  8. Увеличиваем раздел /tmp в Continent до 1Гбт Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места. Список текущих разделов можно посмотреть командой lsblk https://ostechnix.com/resize-lvm-partitions-linux/
  9. Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root
  10. ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS
    cd /lib/modules
    mv 5.10.210 _5.10.210
    ln -s 5.10.210-2.continent.x86_64 5.10.210
    
  11. Формируем initramfs
    cd /boot
    dracut initramfs-<версия ядра>.x86_64.img <версия ядра>
    
  12. Перезагружаем Continent и выбираем в загрузчике новое ядро.

Обновление лицензий

[править | править код]

Процесс управления лицензиями описан в документации в томе "Руководство администратора. Управление комплексом.". Документация доступна по ссылке

Учебные лицензии можно скачать по ссылке. Лицензии имеют небольшой срок действия, но постоянно актуализируются.

Лицензионные файлы необходимо скопировать на компьютер с Менеджером конфигурации (192.168.23.26). Для это можно сначала скопировать файлы на любой компьютер из сети 192.168.23.0/29 доступный по ssh/scp. А затем скопировать на целевую машину при помощи программы WinSCP.