Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) при использовании установщика debian (debian-installer). Инструкции по использованию установщика Astra (astra-instller) cм. Автоматическая установка Astra Linux Special Edition x.8.
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1

  • Astra Linux Common Edition 2.12

Внимание!

  1. Установка Astra Linux в автоматическом режиме означает автоматическое принятие лицензионного соглашения (см. Лицензионные соглашения и политика лицензирования ГК Astra Linux);
  2. При установке в автоматическом режиме Astra Linux Special Edition выбор уровня защищенности должен осуществляться в соответствии с условиями действующего лицензионного договора. Подробнее про уровни защищенности см.  Astra Linux Special Edition (очередное обновление x.7): Ключевые изменения в комплексе средств защиты информации.

Описанная  в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:

  • виртуальный графический адаптер  VMSVGA для Oracle VirtualBox;
  • виртуальный графический адаптер cirrus или qxl для Virt Manager.

Подготовка инфраструктуры для автоматической установки и по сети

PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы.
Подробная информация об автоматической установке с помощью списка ответов: https://www.debian.org/releases/bookworm/amd64/apbs02.en.html.

См. также статью Контроль целостности Astra Linux при установке и эксплуатации.

См. страницу Подготовка инфраструктуры PXE на Astra Linux

Автоматическая установка с помощью файла preseed

  • Начиная с очередного обновлений 1.8 для сетевой установки используется новый установщик операционной системы, для которого требуется новый формат файлов preseed. Подробнее см. Автоматическая установка Astra Linux Special Edition x.8.
  • Начиная с оперативного обновления 1.7.4 при сетевой установке с технологического установочного диска (ТУД) автоматически вызывается интерактивный диалог настройки network-console. Этот диалог предоставляет возможность переключения дальнейшего выполнения установки на удаленное интерактивное управление с использованием протокола SSH. Если эта возможность не требуется (требуется полное завершение установки с помощью файла preseed без интерактивного взаимодействия), то  отключить вызов network-console можно задав в файле выбора устанавливаемой ОС /srv/tftp/pxelinux.cfg/default параметр ядра network-console/enable=false, например:
    append initrd=se/initrd.gz network-console/enable=false
  • Если установка выполняется в режиме загрузки EFI, то на файловом сервере должен быть установлен пакет grub-efi-amd64-bin и выполнена команда:
    sudo grub-mknetdir --net-directory=/srv/tftp --subdir=/debian-installer/grub
    где /srv/tftp — корневой каталог сетевого ресурса, предоставляемого TFTP-сервером.

Файлы preseed представляют собой заранее подготовленные ответы на вопросы установщика ОС. Их использование позволяет обеспечить полностью автоматическую установку с заранее заданной конфигурацией.

Полностью автоматизированная установка ОС выполняется с заранее заданными фиксированными именами хоста (в обновлениях до Astra Linux x.8), имя пользователя, пароль пользователя). Рекомендуется после установки сменить имена и пароли.
В новом установщике Astra Linux x.8 предусмотрена возможность генерации случайного постфикса имени хоста.

 

Ссылки для скачивания файлов:

Файл после скачивания скопировать в каталог установочных файлов соответствующего дистрибутива под именем preseed.cfg, например:

sudo cp preseed_se16.cfg /srv/tftp/se/preseed.cfg

или

sudo cp preseed_ce.cfg /srv/tftp/ce/preseed.cfg

Важные параметры файла preseed:

  1. Пути к репозиториям пакетов:

    Порядок настройки репозиториев пакетов см. в статье Создание локальных и сетевых репозиториев.
    1. Пример путь к HTTP-репозиторию с пакетами для установки:

      # Репозиторий для установки
      # Если вы выберете ftp, то mirror/country string устанавливать не обязательно
      d-i mirror/protocol string http
      d-i mirror/country string manual
      d-i mirror/http/hostname string 192.168.56.1
      # для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
      d-i mirror/http/directory string /repo/se
      # или, вариант для Astra Linux Common Edition 2.12
      #d-i mirror/http/directory string /repo/ce
      d-i mirror/http/proxy string
    2. Пример указания пути для FTP-репозиториев:

      d-i mirror/protocol string ftp
      d-i mirror/ftp/hostname string 192.168.56.1
      d-i mirror/ftp/directory string /repo/se
      # или, вариант для Astra Linux Common Edition 2.12
      #d-i mirror/ftp/directory string /repo/ce
      d-i mirror/ftp/proxy string
  2. Часовой пояс:

    # Здесь можно указать любое допустимое значение для $TZ; смотрите
    # допустимые значения в файле /usr/share/zoneinfo/.
    d-i time/zone string Europe/Moscow
  3. В следующем блоке подготавливаются разделы на жестком диске (по умолчанию стоит автоматическое создание с использованием всего диска, с одним корневым разделом и разделом подкачки (см. Область подкачки (swap): особенности применения и обеспечения безопасности)):

    #Если система имеет свободное место, вы можете выбрать для разметки
    # только его.
    # Замечание: нужно указывать локализованные (переведённые) значения.
    #d-i partman-auto/init_automatically_partition \
    # select Авто - использовать наибольшее свободное место

    #Или же, вы можете задать размечаемый диск. Имя устройства
    # должно задаваться в обычном не-devfs формате.
    # Например, для использования первого жёсткого диска SCSI/SATA:
    #d-i partman-auto/disk string /dev/sda
    # Замечание: если вы хотите использовать любой доступный диск, не важно
    # какое у него имя, закоммерируйте строку выше. Она работает только если
    # в системе один жёсткий диск.
    # Также, вы можете указать какой метод использовать.
    # Доступные методы: "regular", "lvm" и "crypto"
    d-i partman-auto/method string regular

    # Автоматическая установка на компьютеры с уже установленной ОС в режиме UEFI без запроса подтверждения
    # d-i partman-efi/non_efi_system boolean true

    # Если один из дисков, который нужно разметить с помощью автоматической
    # разметки, содержит старую конфигурацию LVM, то пользователю выдаётся
    # предупреждение. Ответ можно автоматизировать...
    d-i partman-auto/purge_lvm_from_device boolean true
    # И подтвердить запись lvm разделов.
    d-i partman-lvm/confirm boolean true

    # Вы можете выбрать любой из имеющихся наборов разметки.
    # Замечание: он должен содержать локализованные (переведённые) значения.
    # Расскомментируйте ниже нужный тип разметки

    # Для режима legacy bios:
    d-i partman-auto/choose_recipe select atomic

    # Для режима UEFI:
    # d-i partman-auto/choose_recipe select /lib/partman/recipes-amd64-efi/30atomic

    # Этот параметр заставляет partman выполнить разметку автоматически
    # без подтверждения.
    d-i partman/confirm_write_new_label boolean true
    d-i partman/choose_partition select finish
    d-i partman/confirm boolean true
    d-i partman-auto-crypto/erase_disks boolean true
    d-i partman-basicfilesystems/no_swap boolean true
    d-i partman-target/mount_failed boolean true
    d-i partman-partitioning/unknown_label boolean true
    d-i partman-auto/purge_lvm_from_device string true
    d-i partman-lvm/vgdelete_confirm boolean true
    d-i partman/confirm_write_new_label string true
    d-i partman-lvm/confirm boolean true
    d-i partman/confirm_nooverwrite boolean true

  4. Создание пользователя (user) и задание пароля:

    В примере ниже использован вариант с указанием пароля 12345678 в виде открытого текста. Пароли в виде открытого текста использовать не рекомендуется, рекомендуется указывать хеш пароля.
    Получить хеш пароля можно командой openssl passwd:

    openssl passwd -<алгоритм>
    Где <алгоритм> — это вариант получения хеша:

    • -6 — SHA512 — рекомендуется к использованию;
    • -5 — SHA256;
    • -1 — MD5. 

    Эта команда запрашивает ввод и подтверждение пароля и выводит на экран хеш этого пароля.

    Пример инструкций presssed-файла:

    # Создать учётную запись обычного пользователя.
    d-i passwd/user-fullname string u
    d-i passwd/username string u
    
    # Пароль обычного пользователя, или открытым текстом
    #d-i passwd/user-password password 12345678
    #d-i passwd/user-password-again password 12345678
    # или в виде хеша пароля:
    d-i passwd/user-password-crypted password $6$mEnK9suwFgN4LuG/$h3It69lO2niPfvxHahmDKm88ksLKbGuMvBFTM6IiCsfzvgGEooMznmf7gxVEf.LHKXqTjjHkPv8H29AtErLas.

    Выбор устанавливаемых компонент:

  5. tasksel tasksel/first multiselect Base, Fly
    # Доступные компоненты и входящие в них пакеты можно посмотреть в /usr/share/tasksel/debian-tasks.desc

    Дополнительно устанавливаемые пакеты можно указать в: 

    # Отдельные дополнительные пакеты для установки
    d-i pkgsel/include string openssh-server 
  6. Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux Common Edition 2.12 необходимо указать вручную, на какой диск ставить загрузчик:

    #  В ОС ALCE необходимо указывать на какой диск ставить загрузчик
    grub-installer  grub-installer/choose_bootdev   select  /dev/sda
    d-i grub-pc/install_devices multiselect /dev/sda
    
    # По умолчанию grub ставится на первый диск
    # Или же, если вы хотите установить загрузчик не в mbr,
    # то раскомментируйте и отредактируйте следующие строки:
    #d-i grub-installer/only_debian boolean false
    #d-i grub-installer/with_other_os boolean false
    #d-i grub-installer/bootdev  string (hd0,0)
    #d-i grub-pc/install_devices multiselect /dev/sda
    # Для установки grub на несколько дисков:
    #d-i grub-installer/bootdev  string (hd0,0) (hd1,0) (hd2,0)
    
  7. Пароль для загрузчика:

    Не рекомендуется использовать пароли в виде открытого текста.
    В примере ниже использован пароль 12345678 и его хеш. Получить хеш пароля можно командой:

    grub-mkpasswd-pbkdf2
    Эта команда запросит ввод пароля и выведет на экран хеш этого пароля.
    Не указывайте пароль в виде открытого текста!

    # Необязательный пароль на grub, или в виде открытого текста
    #d-i grub-installer/password password 12345678
    #d-i grub-installer/password-again password 12345678
    #grub-installer grub-installer/password-mismatch error
    # или в виде хеша пароля по стандарту PBKDF2, см. man grub-mkpasswd-pbkdf2:
    d-i grub-installer/password-crypted password grub.pbkdf2.sha512.10000.387670F76D658A9A369292DC37E37E0CC67627E68149E757514EE1873DA7C99DC7A93C58CC54951ED595EC93C03905ADECEFB23FFE3E3F8C07ABAA4A4E0A8FBD.CE02F79A38F623AE9788A363DE94C06A464DEC9C2BFAAF9B54F340C90E91B3F0B09E58E4703AF05872BF27E85D6A682C3AC8626604FCFE849A1025DDFABBC4D8
  8. Выполнение команд перед завершением установки и перезагрузкой компьютера, например включить ssh сервер:

    # Эта команда выполняется перед окончанием установки, пока ещё
    # есть рабочий каталог /target. Вы можете выполнить chroot в /target
    # и непосредственно использовать его, или же воспользоваться командами
    # apt-install и in-target для облегчения задачи установки пакетов и
    # запуска команд в целевой системе.
    d-i preseed/late_command string in-target systemctl enable ssh.service

Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно установить систему вручную, ответив на все вопросы, и после установки выполнить команды:

sudo debconf-get-selections --installer > preseed.new
sudo debconf-get-selections >> preseed.new
Это создаст файл preseed.new с готовыми ответами, который можно использовать как прототип для создания конфигурации для следующих установок.

Автоматическая установка обновлений после установки системы

В Astra Linux Common Edition 2.12 можно выполнить обновление указав команды обновления в параметре late-command:

d-i preseed/late_command string in-target apt update; in-target apt dist-upgrade;

В Astra Linux Special Edition для автоматической установки обновлений нужно создать файл update.service в корне ftp или http сервера с таким содержимым:

[Unit]
Description=Update system
After=rc-local.service network-online.target
Before=getty.target
Before=systemd-user-sessions.service

[Service]
StandardOutput=tty
Type=oneshot
ExecStart=/usr/local/bin/update.sh

[Install]
WantedBy=multi-user.target

Там же создать файл update.sh в котором должны быть указаны репозитории с обновлениями. Репозитории могут размещаться где угодно, важно только правильно указать путь к ним:

#!/bin/bash

clear
# вносим в /etc/apt/sources.list используемые репозитории (для примера - репозиторий server, работающий по протоколу ftp):
echo "deb ftp://server/repo/se/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list
echo "deb ftp://server/repo/se/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list
echo "deb ftp://server/repo/se/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list
echo "deb ftp://server/repo/se/repository-update-dev smolensk main contrib non-free"  >> /etc/apt/sources.list

echo "Updating system, please wait..."
echo "Do not turn off your computer!"
apt-get update &> /dev/null
apt-get -y dist-upgrade &> /dev/null
apt-get -y install chromium &> /dev/null
rm -f /etc/systemd/system/multi-user.target.wants/update.service
systemctl daemon-reload
rm -f /usr/local/bin/update.sh
reboot

а в файл preseed в конец добавить команды для загрузки и запуска созданных файлов:

d-i preseed/late_command string in-target systemctl enable ssh ; \
                                in-target wget -O /usr/local/bin/update.sh ftp://10.0.2.20/se/update.sh; \
                                in-target chmod +x /usr/local/bin/update.sh; \
                                in-target wget -O /lib/systemd/system/update.service ftp://10.0.2.20/se/update.service; \
                                in-target systemctl enable update.service;

Если всё сделано корректно - то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину.

Автоматическая разметка дисковых разделов с помощью partman-auto

См. страницу Автоматическая разметка дисковых разделов с помощью partman-auto

Особенности настройки параметров сети

Eсли файл ответов загружается из сети, то настройка параметров сети выполняется до загрузки файла ответов, и параметры настройки сети, заданные в этом файле, игнорируются. То есть, настройка сети с помощью файла ответов по умолчанию применима если загрузка происходит с компакт-диска или USB-накопителя. При загрузке файла ответов из сети можно только указать используемый для загрузки файлов ответов сетевой интерфейс, для чего используется параметр ядра interface, например interface=eth1.

Принудительно выполнить перенастройку сети (например, задать статический адрес) с помощью файла ответов после завершения установки по сети можно следующим способом:

  1. Создать на ftp-сервере сценарий со следующим содержимым:

    #!/bin/sh
    kill-all-dhcp; netcfg

    При выполнении этого сценария будут отключены службы автоматической настройки сети через DHCP и выполнены директивы netcfg из файла ответов (список возможных директив см. ниже).

  2. Сделать файл с созданным сценарием исполняемым:

    sudo chmod +x <имя_файла_со_сценарием>

  3. Добавить следующую строку в файл ответов непосредственно перед статической настройкой сети:

    d-i preseed/run string ftp://<путь_к_файл_со_сценарием>

Для настройки сети могут использоваться следующие переменные debconf:

Пер

ПеременнаяОписание
d-i netcfg/enable boolean falseПолностью  выключить настройку сети. Это полезно при установке на устройства, не имеющие сети, когда вопросы о сети неуместны.
d-i netcfg/choose_interface select autoАвтоматический выбор активного сетевого интерфейса, если такой имеется. Если имеется более одного интерфейса, то при данной настройке список интерфейсов выводиться не будет.
d-i netcfg/choose_interface select eth1Принудительный выбор указанного сетевого интерфейса (в данном случае - интерфейс eth1).
d-i netcfg/link_wait_timeout string 10Время ожидания появления связи (link) (по умолчанию 3 секунды). Значение указывается в секундах.
d-i netcfg/dhcp_timeout string 60
d-i netcfg/dhcpv6_timeout string 60
Время ожидания параметров DHCP
d-i netcfg/disable_autoconfig boolean trueОтключение автоматической настройки сети, переход к ручной настройке.
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manually 
Игнорирование отсутствия DHCP-сервера

d-i netcfg/get_nameservers string 192.168.1.1
d-i netcfg/get_ipaddress string 192.168.1.42
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.1.1
d-i netcfg/confirm_static boolean true

Статические настройки параметров сети (пример для IPv4).
d-i netcfg/get_ipaddress string fc00::2
d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
d-i netcfg/get_gateway string fc00::1
d-i netcfg/get_nameservers string fc00::1
d-i netcfg/confirm_static boolean true 
Статические настройки параметров сети (пример для IPv6).
d-i netcfg/hostname string somehostПринудительное задание имени хоста (значения, предлагаемые DHCP  или реверсивным DNS игнорируются).
d-i netcfg/wireless_wep stringВыключение диалога о ключе WEP
d-i netcfg/dhcp_hostname string radishСпециальное имя DHCP-сервера, которое используют некоторые провайдеры в качестве некоего пароля.
d-i hw-detect/load_firmware boolean trueРазрешение загрузки несвободных микропрограмм без запроса подтверждения (или значение false для запрета загрузки).
netcfg/get_netmask string 255.255.255.0Принудительное задание маски сети. Если не задано, то маска выбирается автоматически.
netcfg/get_gateway string 192.168.1.1Принудительное задание адреса сетевого шлюза. Если не задано, то адрес сетевого шлюза выбирается автоматически. Специальное значение none указывает, что шлюз не используется.

Пример файла preseed для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7

Полный текст файла preseed для Astra Linux Special Edition 1.7 см. на странице Пример файла preseed для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7.

Особенности настройки:

  1. Загрузка выполняется из Интернет-репозитория Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 (см. Интернет-репозитории Astra Linux Special Edition x.7);
  2. Установка выполняется с раздельными дисковыми разделами для корневого каталога и каталогов /boot и /tmp и без создания раздела подкачки (подробнее про рекомендованную структуру разделов см. Рекомендации по безопасной установке и эксплуатации Astra Linux):

    d-i partman-auto/expert_recipe string myroot :: \
         512 16384 512 ext2 \
             $primary{ } $bootable{ } \
             method{ format } format{ } use_filesystem{ } filesystem{ ext2 } mountpoint{ /boot } .\
         8192 16384 16384 ext4 \
             method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /     } .\
         2048 16384 2048 ext4 \
             method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp  } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\
         500 8192 -1 ext4 \
             method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 
    d-i partman-auto/choose_recipe select myroot
  3. Установка ПО выполняется в минимальной конфигурации (только базовые пакеты Base packages и графическая оболочка Fly desktop), дополнительно устанавливается служба SSH Server для обеспечения возможности удаленного управления компьютером:

    tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server

    Установка ПО Astra Linux Directory (ALD) не выполняется;

  4. Создается пользователь-администратор с именем astra и паролем 12345678;
     
  5. В примере файла ОС устанавливается c максимальным уровнем защищенности, однако возможны варианты:
    1. Максимальный уровень защищенности:

      d-i astra-additional-setup/os-check select Maximum security level Smolensk
    2. Усиленный уровень защищенности:

      d-i astra-additional-setup/os-check select Advanced security level Voronezh
    3. Базовый уровень защищенности:

      d-i astra-additional-setup/os-check select Base security level Orel
  6. Если это позволяет выбранный уровень защищенности, то могут быть включены МРД и МКЦ. Также может быть запрещена трассировка:
    1. Максимальный уровень защищенности:

      d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability
    2. Усиленный уровень защищенности:

      d-i astra-additional-setup/additional-settings-voronezh multiselect Enable Mandatory Integrity Control, Disable ptrace capability
    3. Базовый уровень защищенности:

      d-i astra-additional-setup/additional-settings-orel multiselect Disable ptrace capability
  7. При установке выполняется синхронизация времени:

    d-i clock-setup/ntp boolean true
    d-i clock-setup/ntp-server string ntp2.vniiftri.ru
  8. После установки:
      1. Удалятся серверная служба синхронизации времени ntp, и включается клиентская служба синхронизации времени systemd-timesyncd.service (см. Службы синхронизации времени в Astra Linux):
    d-i preseed/late_command string in-target apt purge -y ntp ; \
                                    in-target systemctl enable systemd-timesyncd.service ; \
    
    1. Удаляются созданные при установке сетевые подключения:

      in-target rm -f /etc/NetworkManager/system-connections/*; 

      (сетевые подключения будут автоматически созданы при включении компьютера после установки).


Загрузка по сети в режиме восстановления (rescue mode)

Разрешение загрузки (локально или по сети) в режиме восстановления существенно снижает защищенность информационной системы, предоставляя неограниченных доступ анонимным пользователям.

Для того, чтобы предоставить пользователям возможность загрузки компьютеров в режиме восстановления следует создать в файле pxelinux.cfg/default элемент меню, ссылающийся на файл preseed. Например, для файла с именем preseed.cfg:

LABEL netinstall
    MENU LABEL Start Astra Linux 1.07.02 rescue
    kernel 1.07.00/linux
    append initrd=ce/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=ce212 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/ce/preseed.cfg interface=auto netcfg/dhcp_timeout=60 vga=788 debian-installer/allow_unauthenticated=true rescue/enable=true

От ранее приведенных примеров меню данный пример отличается добавленной опцией:

rescue/enable=true

включающей загрузку в режиме восстановления



1 Comment

  1. # или в виде хеша пароля по алгоритму MD5, смотрите grub-md5-crypt(8).
    Этой команды нет в Astra Linux 1.7. Вместо нее нужно использовать grub-mkpasswd-pbkdf2