Kicksecure ― Secure by Default Operating System
https://www.kicksecure.com/
https://www.w5j6stm77zs6652pgsij4awcjeel3eco7kvipheu6mtr623eyyehj4yd.onion/
Представляет из себя операционную систему общего назначения, повышенной безопасности на базе Debian. По умолчанию все обновления операционной системы и пакетов настроены через Tor. Улучшены различные параметры безопасности, связанные с настройками защиты ядра, защита учетных записей пользователей от атак методом перебора, принудительное применение строгой изоляции учетных записей пользователей, генерация энтропии более высокого качества. Безопасная синхронизация сетевого времени с помощью Secure Distributed Web Date (sdwdate) через Tor, вместо NTP. Ограничение работы программм с помощью AppArmor с профилями собственной разработки.
Система предоставляется в виде образов для виртуальных машин, так же её можно установить поверх предварительно установленного Debian, путём подключения Kicksecure репозиториев и обновления из них. Для рабочих задач система интересна прежде всего в качестве гипервизора для Whonix, по этому будем устанавливать её с нуля, непосредственно на компьютер, простейшим способом из образа LiveUSB.
Подготовка установочного USB накопителя…
…из Windows.
Полностью аналогична установке системы Tails, описанной в прошлом руководстве /d/42310-3-tails-ustanovka-nastroyka-ispolzovanie/13 но проверить образ на сайте разработчиков не удастся, такой функции там нет.
Открываем страницу сайта разработчиков
https://www.kicksecure.com/wiki/ISO и скачиваем образ текущего релиза
https://download.kicksecure.com/iso/17.1.4.9/Kicksecure-Xfce-17.1.4.9.iso
Если открыть страницу https://download.kicksecure.com/iso/ то там можно увидеть более свежие образы. Это β-версии, устанавливать их нужно только в том случае если вы хотите принять участие в тестировании готовящегося нового релиза.
Скачиваем файл подпись PGP https://download.kicksecure.com/iso/17.1.4.9/Kicksecure-Xfce-17.1.4.9.iso.asc
Скачиваем публичный ключ разработчиков https://www.kicksecure.com/keys/derivative.asc
Импортируем ключ в программу Kleopatra, проверяем подпись образа. У случае успешной проверки записываем образ на USB накопитель программой balenaEtcher.
…из Tails.
Для тех кто пользуясь предыдущим руководством установил систему Tails подробно опишу подготовку установочного USB накопителя из Linux на примере этой системы.
Криптографические средства проверки подписей файлов не ограничиваются программой GnuPG и в данном случае разработчики операционной системы кроме GnuPG предоставляют нам возможность проверить подпись с помощью программы signify разработанной проектом OpenBSD.
Открываем терминал, устанавливаем пакет signify-openbsd
amnesia@amnesia:~$ sudo apt install signify-openbsd
Скачиваем файл контрольной суммы образа
amnesia@amnesia:~$ wget https://download.kicksecure.com/iso/17.1.4.9/Kicksecure-Xfce-17.1.4.9.iso.sha512sums
Скачиваем файл подписи контрольной суммы образа
amnesia@amnesia:~$ wget https://download.kicksecure.com/iso/17.1.4.9/Kicksecure-Xfce-17.1.4.9.iso.sha512sums.sig
Скачиваем публичный signify ключ разработчиков
amnesia@amnesia:~$ wget https://www.kicksecure.com/keys/derivative.pub
Проверяем с помощью signify подпись файла контрольной суммы
amnesia@amnesia:~$ signify-openbsd -Vp derivative.pub -m Kicksecure-*.sha512sums
Signature Verified
Если проверка прошла успешно и signify вернула сообщение Signature Verified то скачиваем образ операционной системы
amnesia@amnesia:~$ wget https://download.kicksecure.com/iso/17.1.4.9/Kicksecure-Xfce-17.1.4.9.iso
С помощью программы подсчёта контрольной суммы считаем контрольную сумму образ и сверяем её с указанной в подписанном файле контрольной суммы
amnesia@amnesia:~$ sha512sum --strict --check Kicksecure-*.sha512sums
Kicksecure-Xfce-17.1.4.9.iso: ЦЕЛ
Если проверка прошла успешно и sha512sum вернула сообщение Kicksecure-Xfce-17.1.4.9.iso: ЦЕЛ
о том что контрольные суммы совпали, переходим непосредственно к записи установочного образа на USB накопитель. Выясняем наименование блочного устройства. lsblk выводит много не нужной нам на данный момент информации, по этому ограничим её вывод с помощью grep.
amnesia@amnesia:~$ sudo lsblk | grep sd
[sudo] пароль для amnesia:
sda ... disk
├─sda1 ... part
├─sda2 ... part
└─sda3 ... part
sdb ... disk
├─sdb1 ... part /usr/lib/live/mount/medium
└─sdb2 ... part
Судя по выводу lsblk у нас имеется накопитель sda с тремя разделами внутри sda1, sda2, sda3 и ни один из них не смонтирован. Это внутренний накопитель HDD\SSD с какой-то информацией. И имеется второй накопитель sdb с двумя разделами внутри sdb1 и sdb2. sdb1 смонтирован в точку монтирования /usr/lib/live/mount/medium т.е. используется работающей на данный момент операционной системой. Следовательно sdb является USB накопителем с установленной Tails. Подключаем USB накопитель на который будем записывать установочный образ и ещё раз вводим ту же команду.
amnesia@amnesia:~$ sudo lsblk | grep sd
[sudo] пароль для amnesia:
sda ... disk
├─sda1 ... part
├─sda2 ... part
└─sda3 ... part
sdb ... disk
├─sdb1 ... part /usr/lib/live/mount/medium
└─sdb2 ... part
sdc ... disk
└─sdc1 ... part /run/nosymfollow/media/amnesia/ХХХХ-ХХХХ
Из вывода видим что добавился накопитель sdc содержащий раздел sdc1 который автоматически смонтировался в точку монтирования /run/nosymfollow/media/amnesia/ХХХХ-ХХХХ. Следовательно подключенный нами USB накопитель это /dev/sdc Он содержит какую-то файловую систему, возможно с данными. В процессе записи установочного образа они будут уничтожены. Записываем установочный образ.
dd if=Kicksecure-Xfce-17.1.4.9.iso of=/dev/sdc bs=1M status=progress conv=fsync
Дожидаемся окончания записи.
Загрузка Kicksecure.
Подключаем записанный USB накопитель к компьютеру и включаем его. Заходим в настройки BIOS\UEFI и выставляем приоритет загрузки с USB. Сохраняем настройки. Дожидаемся окончания загрузки операционной системы. Установочный образ представляет из себя LiveUSB, по принципу своей работы похожий на Tails, но отсутствует возможность создания Persistent Storge из графического интерфейса и автоматическое его монтирование, нет графического конфигуратора подключения Tor, соединения до удалённых узлов в интернете разрешены для всех программ, вместо Gnome используется Xfce. Через tor настроены только синхронизация времени с помощью программы Secure Distributed Web Date (sdwdate) и обновление пакетов.
После окончания загрузки автоматически запускается Kicksecure Setup Wizard он нужен для проверки системы, но у виде по умолчанию не работоспособен так как требует подключения к Tor, а оно не сконфигурировано через мосты. Конфигурируем tor вручную. открываем файл /etc/tor/torrc
sudo nano /etc/tor/torrc
Пароль указан на стартовом экране Kicksecure Setup Wizard
Default username: user
Default password: changeme
Добавляем в конец файла /etc/tor/torrc строчки
ClientOnly 1
Log notice file /var/log/tor/tor.log
UseBridges 1
# Enable obfs4proxy as Client
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed
Bridge obfs4 IP:PORT...
Перезапускаем tor
sudo systemctl restart tor
Читаем лог контролируем подключение tor
sudo cat /var/log/tor/tor.log
После установки соединения запускаем из графического интерфейса Kicksecure Setup Wizard В процессе его работы получаем сообщение
Kicksecure Setup Wizard
The setup-wizard-dist has been successfully completed.
Please note the following default credentials:
Default username: user
Default password: changeme
Click the "Finish" button to run systemcheck.
Нажимаем кнопку «Finish», получаем отчёт проверки системы
INFO: Kicksecure is a research project. https://www.kicksecure.com
INFO: Kicksecure APT Repository: Enabled. When the Kicksecure team releases BOOKWORM updates, they will be AUTOMATICALLY installed (when you run apt-get dist-upgrade) along with updated packages from the Debian team. Please read https://www.kicksecure.com/wiki/Trust to understand the risk. If you want to change this, use:
Start Menu -> System -> Derivative Repository
WARNING: Debian Package Update Check Result: apt-get reports that packages can be updated.
Please update Whonix-Gateway and Whonix-Workstation:
(Open a terminal, Start Menu -> System -> Terminal.)
upgrade-nonroot
Если всё в порядке, то по результатам проверки нам предложат обновить пакеты до актуальных версий. Делать этого не следует так как в LiveUSB системе эти обновления не сохранятся.
Нажимаем конопку «OK».
Проверяем работу sdwdate по синхронизации времени. Нажимаем правой клавишей мыши по иконке замка в трее справа вверху. Выбираем пункт просмотра логов, читаем лог работы sdwdate.
В комментариях интересовались операционной системой аналогичной Tails…
…но без Tor. Kicksecure LiveUSB как раз представляет из себя такую систему. Но использовать её будет крайне не удобно так как каждый раз при перезагрузке вам придётся всё конфигурировать с нуля. Конфигурировать tor, устанавливать обновления, устанавливать и настраивать нужные пакеты. Устанавливаться всё это будет в оперативную память, что приведёт к значительному её потреблению. Удобнее в использовании установить систему с LiveUSB на другой съёмный USB накопитель с использованием полнодискового шифрования. Подробно опишу такую установку. Выключаем компьютер и отключаем внутренний накопитель. Это необходимо для того что бы случайно не повредить данные на нём и для того что бы установщик установил загрузчик GRUB на съёмный USB накопитель, а не на внутренний HDD\SSD. Загружаемся в Kicksecure LiveUSB, присоединяем второй USB накопитель для установки на него операционной системы. Запускаем установщик с рабочего стола Install to Hard Drive. Выбираем язык установщика. Нажимаем «Далее».
🗹 EFI выбрать устройство хранения Выбираем подключенный USB (/dev/sdb)
⭗ GPT ― Этот пункт задаёт где именно будет храниться раздел загрузчика. Рассматриваемый пример относится к загрузке с UEFI.
🗹 Стереть диск. Без раздела подкачки. ― Использование раздела подкачки на USB накопителе снижает срок его службы.
🗷 Ручная разметка.
🗹 Настроить шифрование. <Пароль>|<Подтверждение пароля>
Снизу будет графическая схема вносимых изменений в разметку разделов на USB накопителе.
Нажимаем «Далее».
Внимательно читаем отчёт установщика о изменениях которые он готов произвести.
Это обзор изменений, которые будут применены при запуске процедуры установки.
Разделы
Erase disk /dev/sdb (USB DISK) fnd install Kicksecure 17.
Создать новую таблицу разделов GPT на /dev/sdb (USB DISK).
Создать новый раздел 550МиБ на /dev/sdb (USB DISK).
Отметить 550МВ раздел fat32 флагом как boot.
Create new XXXXMiB partition on /dev/sdb (USB DISK) with entries boot.
Create new XXXXMiB partition on /dev/sdb (USB DISK) with entries rootfs.
Настроить новый fat32 раздел с точкой монтирования /boot/efi.
Настроить новый ext4 раздел с точкой монтирования /boot.
Установить Kicksecure на новый системный ext4.
Нажимаем «Установить».
Ожидаем окончания процесса установки.
Готово.
Система Kicksecure 17 установлена на ваш компьютер.
Вы можете перезагрузить компьютер и использовать Вашу новую операционную систему или продолжить работу в Live окружении Kicksecure.
🗹 Перезагрузить.
Нажимаем «Готово».
Отключаем установочный USB накопитель, оставляем только накопитель со свежеустановленой системой.
Welcome to GRUB
error: no such device: /.disc/info.
error: no such device: /.disc/mini-info.
Attempting to decrypt master key…
Enter passphrese for hd0,gpt2 (…):
При загрузке у нас повится меню GRUB которое запросит пароль дискового шифрования. Вводим пароль. После разблокирования диска появляется меню GRUB выбираем
🗹 Kicksecure GNU/Linux.
Появляется запрос LUKS на разблокирование корневого раздела
Please enter passphrase for disc rootfs (luks-UID): (press TAB for no echo) _
Вводим пароль ещё раз. Появляется приглашение для входа пользователя от Xfce. Вовдим стандартные
Default username: user
Default password: changeme
Конфигурируем tor указанным выше образом. И перезапускаем его. Или используя руководство для тестирования транспорта webtunnel в Tails /d/41182-n-tails-webtunnel собираем транспорт в Tails, переносим его в Kicksecure и соответствующим образом конфигурируем tor и AppArmor. Включаем автоматический запуск tor при старте системы.
sudo systemctl enable tor
Изменения будут сохраняться в системе при перезагрузке. Проверяем синхронизацию времени в sdwdate, запускаем терминал и обновление пакетов
[user ~%] upgrade-nonroot
Дожидаемся обновления индексных файлов репозиториев.
Читаем информацию о обновляемых пакетах нажимает <y>.
Дожидаемся загрузки пакетов и их установки.
Настраиваем Xfce по собственному усмотрению, добавляем русский ввод и переключение клавиатуры, меняем пароль пользователя, или добавляем нового, меняем локаль и т.д. подробности см. ниже в описании установки системы как гипервизора для Whonix.
Устанавливаем необходимые программы. В качестве примера установим браузер LibreWolf. Заходим на сайт разработчиков браузера и действуем точно по инструкции https://librewolf.net/installation/debian/
Дожидаемся установки браузера, но не запускам его а перезагружаем систему. При загрузке системы на этапе меню загрузчика GRUB вместо
🗷 Kicksecure GNU/Linux
выбираем
🗹 LIVE mode USER (For daily activates.) GNU/Linux
Запускаем браузер LibreWolf и настраиваем его. Закрываем браузер, проверяем наличие каталога /home/user/.librewolf. Перезагружаем систему. Проверяем отсутствие каталога /home/user/.librewolf.
Таким образом все результаты использования программы librewolf были удалены из системы.
Сохранение данных
Если необходимо что-то сохранить из такого режима загрузки, то создаём каталог для монтирования
[user ~%] sudo mkdir /mnt/disk
Определяем блочное устройство.
[user ~%] sudo lsblk
Так как при разметке не выделялись отдельные разделы для /home /usr /var то вероятно это будет /dev/sda3 Но он зашифрован. Монтируем разблокированную файловую систему указанную для этого раздела.
[user ~%] sudo mount /dev/mapper/luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/disk
Убеждаемся что смонтировали нужное блочное устройство
[user ~%] sudo ls /mnt/disk
Перемонтируем файловую систему в режиме записи
[user ~%] sudo mount -o remount,rw /dev/mapper/luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/disk
Копируем нужные файлы или каталоги
[user ~%] sudo cp /home/usеr/путь/до/нужного/файла /mnt/disk/home/usеr/files_name
Размонтируем файловую систему.
[user ~%] sudo umount /mnt/disk
Перезагружаемся, проверяем наличие файла.
Аварийное выключение.
При извлечении USB накопителя система проложит свою работу. В отличии от Tails для аварийного завершения работы системы необходимо отключить питание.
⚠ Такую установку системы ни в коем случае не следует понимать как полную замену Tails! ⚠
Здесь нет «защиты от дурака» и есть место для ошибки.
Прозрачно заворачиваем трафик всей системы в Tor.
Tor поддерживает работу в режиме прозрачного прокси. Это когда вы не указываете в настройках программ прокси 127.0.0.1:9050, а соединения перенаправляются на порт прозрачного прокси tor с помощью firewall. Устанавливаем Nftables
[user ~%] sudo apt install nftables
Включаем применение правил firewall при старте системы
[user ~%] sudo systemctl enable nftables
Запускаем firewall
[user ~%] sudo systemctl start nftables
Конфигурируем соединение
Правой кнопкой мыши нажимаем на пиктограмму установленного соединения с сетью. Выбираем пункт Edit Conntctions. Выбираем установленное соединение. Нажимаем на шестерёнку снизу.
В горизонтальном меню выбираем самый левый пункт IPv6 Settings. В выпадающем меню Method выбираем Disabled.
В горизонтальном меню выбираем пункт IPv4 Settings. В выпадающем меню Method выбираем Automatic (DHCP) addresses only. В поле DNS servrts вводим 127.0.0.1 Нажимаем кнопку Save. Разрываем и устанавливаем заново соединение с сетью.
Настраиваем Tor
Добавляем в /etc/tor/torrc строчки
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
DNSPort 5353
Перезапускаем tor
[user ~%] sudo systemctl restart tor
Настраиваем DNS
Проверяем в /etc/resolv.conf DNS сервер. Комментируем все строчки, добавляем в начало #, после закомментированных добавляем строчку
nameserver 127.0.0.1
Настраивам Firewall
Делаем резервную копию правил Nftables
[user ~%] sudo cp /etc/nftables.conf /etc/nftables.conf.bak
В файле /etc/nftables.conf после строчки
flush ruleset
удаляем всё и добавляем свои правила
# Verify your network interface with ifconfig
define interface = eth0
# Verify tor uid with id -u debian-tor
define uid = 43
table ip nat {
set unrouteables {
type ipv4_addr
flags interval
elements = { 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 0.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.0.0.0/24, 192.0.2.0/24, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4 }
}
chain POSTROUTING {
type nat hook postrouting priority 100; policy accept;
}
chain OUTPUT {
type nat hook output priority -100; policy accept;
meta l4proto tcp ip daddr 10.192.0.0/10 redirect to :9040
meta l4proto udp ip daddr 127.0.0.1 udp dport 53 redirect to :5353
skuid $uid return
oifname "lo" return
ip daddr @unrouteables return
meta l4proto tcp redirect to :9040
}
}
table ip filter {
set private {
type ipv4_addr
flags interval
elements = { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8 }
}
chain INPUT {
type filter hook input priority 0; policy drop;
# Allow Local SSH connections
# iifname $interface meta l4proto tcp dport 22 ct state new accept
ct state established accept
iifname "lo" accept
ip saddr @private accept
}
chain FORWARD {
type filter hook forward priority 0; policy drop;
}
chain OUTPUT {
type filter hook output priority 0; policy drop;
ct state established accept
oifname $interface meta l4proto tcp skuid $uid ct state new accept
oifname "lo" accept
ip daddr @private accept
}
}
В этих правилах необходимо заменить:
define interface = eth0
Вместо eth0 написать ваш интерфейс, через который вы подключены к сети. В Kicksecure по умолчанию нет программы ip, пользуемся ifconfig
[user ~]% sudo ifconfig
[sudo] password for user:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.100 netmask 255.255.255.0 broadcast 192.168.15.255
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets xxxxx bytes xxxxxx (xxx.x MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets xxxxx bytes xxxxxxxx (xxx.x MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt xx memory 0xxxxxxx-xxxxxx
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen xxx scopeid 0xxx<host>
loop txqueuelen 1000 (Local Loopback)
RX packets xxxxxx bytes xxxxxxx (xxx.x MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets xxxxxx bytes xxxxxxx (xxx.x MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Интерфейс eth0 которому выдан адрес в локальной сети, в данном случае 192.168.15.100, и будет искомым. Указываем его.
define uid = 43
Здесь необходимо указать свой uid под которм в системе запущен tor.
Узнаём его:
[user ~]% sudo id -u debian-tor
Указываем в /etc/nftables.conf число из вывода.
Если вам необходимо разрешить какие-то соединения из локальной сети, раскомментируйте строчку
# iifname $interface meta l4proto tcp dport 22 ct state new accept
вместо 22 укажите нужный вам порт.
После перезагрузки правила из /etc/nftables.conf будут применяться службой nftables.service автоматически. При условии что нет запущенных программ использующих сеть, нет установленых соединений с интернетом, можно применить правила вручную без перезагрузки.
[user ~]% sudo nft -f /etc/nftables.conf
Дополнительно убеждаемся что для службы nftables.service включён автостарт при запуске системы и она запущена
[user ~%] sudo systemctl status nftables
[user ~%] sudo systemctl enable nftables
Перезагружаем систему.
Контролируем правила Nftables после перезагрузки
[user ~%] sudo nft list ruleset
В выводе должны быть наши правила из /etc/nftables.conf
Контролируем утечки трафика
Для контроля утечек устанавливаем программу tcpdump
[user ~]% sudo apt install tcpdump
и запускаем её
[user ~]% tcpdump -n -f -p -i eth0 not arp and not host IP_Bridge and not host 255.255.255.255 and not dst net 192.168.15.0/24
Где:
IP_Bridge ― IP моста через который вы подключаетесь к tor (указан в /etc/tor/torrc)
eth0 ― интерфейс через который вы подключену к сети (из вывода ifconfig)
192.168.15.0/24 ― ваша локальная подсеть (из вывода ifconfig). Обратите внимание что это именно подсеть /24 а не локальный ip адрес вашего интерфейса 192.168.15.100.
Пользуемся системой в тестовом режиме. Запускаем браузер, другие программы, использующие интернет, но не подключаемся к рабочим ресурсам в сети. Смотрим свой IP на соответствующих сайтах в интернете, к примеру browserleeks. Если в терминале с tcpdump нет ни какого вывода, и browserleeks показывает IP выходного узла tor то всё настроено верно.
В комментариях интересовались установкой операционной системы с ключом на USB накопителе…
…для такой установки операционной системы нам потребуется внутренний накопитель HDD\SSD, USB накопитель небольшого объёма ⪂4 Gb будет достаточно и USB накопитель с предварительно установленной системой Tails c созданным Persistent Storge.
Присоединяем внутренний HDD\SSD, подключаем установочный LiveUSB накопитель с системой Kicksecure, включаем компьютер, заходим в BIOS\UEFI, выбираем загрузку с USB, дожидаемся появления рабочего стола. После этого присоединяем USB накопитель, который будет играть роль ключа для загрузки сисетемы и запускаем установщик ярлыком с рабочего стола Install to Hard Drive
. Выбираем язык установщика. Нажимаем кнопку «Далее». Далее нам необходимо будет воспользоваться пунктом меню:
🗹 Ручная разметка.
Разметка USB накопителя ключа:
В верхнем выпадающем меню Устройство
выбираем: USB Flash Drive… (/dev/sdc)
Нажимаем кнопку Новая таблица разделов
, в появившемся окне выбираем Таблица разделов GUID (GPT)
, нажимаем кнопку OK
.
Выделяем появившееся Доступное место
, нажимаем кнопку Создать
.
В появившемся окне Создать раздел
задаём параметры:
🗹 Размер: ≈500 МиБ
🗹 Файловая система: fat32
🗹 Точка монтирования: /boot/efi
🗷 Метка ФС: efi (Задавать не обязательно, можно оставить пустой.)
🗹 Флаги: 🗹 boot
Нажимаем кнопку OK
.
Выделяем Доступное место
, нажимаем кнопку Создать
.
В появившемся окне Создать раздел
задаём параметры:
🗹 Размер: N МиБ (Оставляем дефолтное значение.)
🗹 Файловая система: ext4
🗹 Шифровать: <Пароль>|<Подтверждение пароля>
🗹 Точка монтирования: /boot
🗷 Метка ФС: boot (Задавать не обязательно, можно оставить пустой.)
🗷 Флаги: 🗷
Нажимаем кнопку OK
.
Разметка внутреннего HDD\SSD накопителя:
В верхнем выпадающем меню Устройство
выбираем: Модель накопителя… (/dev/sda)
Нажимаем кнопку Новая таблица разделов
, в появившемся окне выбираем Таблица разделов GUID (GPT)
, нажимаем кнопку OK
.
Выделяем появившееся Доступное место
, нажимаем кнопку Создать
.
В появившемся окне Создать раздел
задаём параметры:
🗹 Размер: ≈размер подключенной к компьютеру оперативной памяти.
🗹 Файловая система: linuxswap
🗹 Шифровать: <Пароль>|<Подтверждение пароля>
🗷 Точка монтирования: 🗷
🗷 Метка ФС: 🗷
🗹 Флаги: 🗹 swap
Нажимаем кнопку OK
.
Выделяем Доступное место
, нажимаем кнопку Создать
.
В появившемся окне Создать раздел
задаём параметры:
🗹 Размер: N МиБ (Оставляем дефолтное значение.)
🗹 Файловая система: ext4
🗹 Шифровать: <Пароль>|<Подтверждение пароля>
🗹 Точка монтирования: /
🗷 Метка ФС: root (Задавать не обязательно, можно оставить пустой.)
🗹 Флаги: 🗹 root
Нажимаем кнопку OK
.
Вместо задания 🗹 Размер: N МиБ (Оставляем дефолтное значение.)
, можно выбрать меньшее значение для корневой файловой системы, а потом аналогично создать отдельные разделы с точками монтирования /home /usr /var и т.п. Если вы не очень хорошо представляете себе какой именно размер дискового пространства вам потребуется для той или иной файловой системы, делать так не следует.
Нажимаем Далее
, внимательно читаем сводку запланированных изменений на дисках и изучаем их диаграммы. Если всё настроено правильно, нажимаем Установить
. Ожидаем окончания процесса установки. Выбираем пункт
🗹 Перезагрузить.
Нажимаем «Готово».
Отключаем установочный USB накопитель, оставляем только загрузочный USB накопитель ключ с разделами /boot и /boot/efi. Заходим в BIOS\UEFI и выбираем загрузку c USB.
⚠ На этом этапе важно не допустить загрузки с внутреннего HDD\SSD! ⚠
При загрузке системы появится запрос пароля от GRUB
Welcome to GRUB
error: no such device: /.disc/info.
error: no such device: /.disc/mini-info.
Attempting to decrypt master key…
Enter passphrese for hd0,gpt2 (…):
Введите заданный пароль и дождитесь загрузки системы.
Настройка системы
При такой установке системы в дистрибутиве есть ошибка. В процессе установки в nvram UEFI вносится загрузочная запись содержащая информацию о расположении загрузчика. Дистрибутив устанавливает загрузчик не по стандартному пути /boot/efi/EFI/BOOT/ а в /boot/efi/EFI/Kicksecure/ по этой причине в случае утраты загрузочной записи в nvram загрузчик GRUB не сможет загрузить систему автоматически. Придётся указывать разделы вручную. Исправляем такое положение вещей.
[user ~%] sudo cp /boot/efi/EFI/Kicksecure/grub.cfg /boot/efi/EFI/BOOT/grub.cfg
Так же для использования загрузки с включённым secure boot копируем подписанный загрузчик из каталога дистрибутива.
[user ~%] sudo cp /boot/efi/EFI/Kicksecure/shimx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
Выключаем компьютер.
[user ~%] sudo poweroff
Отключаем загрузочный USB накопитель ключ, подключаем USB накопитель с предварительно установленной системой Tails, загружаемся с этого USB накопителя разблокируем Persistent Storge.
С помощью [user ~%] sudo lsblk
или [user ~%] sudo blkid
или утилиты Диски
узнаём блочное устройство для шифрованного корневого раздела на внутреннем HDD\SSD. Допустим это /dev/sdc2. Смотрим заголовок LUKS для этого раздела:
amnesia@amnesia:~$ sudo cryptsetup luksDump /dev/sdc2
LUKS header information for /dev/sdc2
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: xxxx
MK bits: xxxx
MK digest: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
MK iterations: xxxxx
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Key Slot 0: ENABLED
Iterations: xxxxxxx
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: x
AF stripes: xxxx
Key Slot 1: ENABLED
Iterations: xxxxxxx
Salt: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
Key material offset: xxx
AF stripes: xxxx
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Если видим два используемых key-slot то блочное устройство определено верно. Тестируем разблокировку этого раздела:
amnesia@amnesia:~$ sudo cryptsetup -v luksOpen --test-passphrase --key-slot 0 /dev/sdc2
Введите парольную фразу для /dev/sdc2:
Слот ключа 0 разблокирован.
Команда выполнена успешно.
amnesia@amnesia:~$ sudo cryptsetup -v luksOpen --test-passphrase --key-slot 1 /dev/sdc2
Введите парольную фразу для /dev/sdc2:
Ключ недоступен с этой парольной фразой.
Если видим приведённый выше вывод с верной парольной фразой от Kicksecure, то делаем резервную копию заголовка этого LUKS раздела.
amnesia@amnesia:~$ sudo cryptsetup luksHeaderBackup /dev/sdc2 --header-backup-file /home/amnesia/Persistent/Kicksecure_root_luks.bin
Разблокируем и монтируем раздел утилитой Диски
. На смонтированном разделе находим ключевой файл crypto_keyfile.bin и копируем его в каталог /home/amnesia/Persistent/. Размонтируем раздел файловой системы, блокируем LUKS раздел.
Разблокируем раздел с помощью скопированного ключевого файла и второго key-slot.
amnesia@amnesia:~$ sudo cryptsetup -v luksOpen /dev/sdc2 secret --key-file=/home/amnesia/Persistent/crypto_keyfile.bin --key-slot 1
Слот ключа 1 разблокирован.
Команда выполнена успешно.
Если видим приведённый выше вывод, блокируем LUKS раздел.
amnesia@amnesia:~$ sudo cryptsetup close secret
Удаляем key-slot 0 содержащий парольную фразу:
amnesia@amnesia:~$ sudo cryptsetup luksKillSlot /dev/sdc2 --key-slot 0 --key-file=/home/amnesia/Persistent/crypto_keyfile.bin
Выключаем компьютер. Отключаем USB накопитель с Tails. Подключаем загрузочный USB накопитель ключ. Вводим парольную фразу от раздела /boot дожидаемся загрузки системы, убеждаемся в её работоспособности.
Для установки системы в качестве гипервизора для Whonix нам потребуется HDD, а лучше SSD так как скорость работы по USB, даже 3.0 будет слишком низкой для работы с системой. В простейшей конфигурации хост система для гипервизора устанавливается на внутренний HDD или SSD описанным выше образом точно так же как на съёмный USB накопитель за исключением п.
🗹 Стереть диск. Без раздела подкачки. Здесь лучше будет задать раздел подкачки, т.к. если при использовании системы закончится свободная оперативныя память, то без раздела подкачки она зависнет.
● Swap (с Гибернацией) создаёт раздел подкачки в конце диска равный по размеру оперативной памяти.
● Swap (без Гибернацией) создаёт раздел подкачки в конце диска меньший по размеру оперативной памяти.
● Файл подкачки создаёт внутри корневого раздела файл используемый в качестве подкачки.
Если вам нужно задать раздел или файл подкачки собственного размера, то необходимо либо использовать п. Ручная разметка диска, и создавать все разделы вручную, либо менять размер файла подкачки в уже установленной системе.
Настройки системы.
🗹 Необходимо сменить стандартный пароль пользователя.
[user ~]% sudo passwd user
[sudo] пароль для user:
Новый пароль:
Повторите ввод нового пароля:
passwd: пароль успешно обновлён
🗹 Задаём русскую локаль.
Редактируем файл
[user ~]% sudo nano /etc/locale.gen
Удалаем #, раскомментируем строчку
ru_RU.UTF-8 UTF-8
Генерируем локаль
[user ~]% sudo locale-gen ru_RU.utf8
Generating locales (this might take a while)...
en_US.UTF-8... done
ru_RU.UTF-8... done
Generation complete.
Устанавливаем нужную локаль в системе.
[user ~]% sudo update-locale LANG=ru_RU.UTF-8
Перезагружаемся
[user ~]% reboot
Проверяем локаль
[user ~]% locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
Если вывод соответствует приведённому выше, то всё сделано правильно.
Открываемым внизу меню запуска приложений Диспетчер настроек
.
🗹 Добавляем русскую раскладку в Xfce.
В диспетчере настроек запускаем Клавиатура. Отключаем пункт
🗷 Использовать системные настройки по умолчанию.
Выбираем соответствующую модель клавиатуры.
В пункте Раскладка клавиатуры нажимаем кнопку +Добавить
и выбираем пункт меню Русская, но не раскрываем список русских раскладок клавиатур, а нажимаем кнопку ОК.
🗹 Изменить параметры раскладки. Задаём клавиши переключения раскладок.
В диспетчере настроек запускаем Панель.
Открываем пункт Элемены, нажимаем кнопку +Добавить
и выбираем Раскладка клавиатуры. Клавишами ⇕ установите желаемую позицию индикатора раскладки на панели. Детально настроить индикатор можно нажав пиктограмму с гаечным ключом рядом с кнопкой +Добавить
.
Запускаем в Диспетчер настроек
Съёмные устройства и накопители
. Включаем пункты
🗹 Подключать обнаруженные съёмные устройства.
🗹 Подключать вставленные съёмные носители.
Открываем меню запуска приложений, из пункта настройки запускаем XScreenSaver Settings.
Включаем снизу слева пункт
🗹 Lock Screen After -+ x minutes
И задаём время блокировки экрана.
Установка пакетов.
Установка, удаление и обновление программ осуществляется аналогичным с операционной системой Tails образом, тем же пакетным менеджером apt за исключением:
● Вместо sudo apt update
для обновления индексных файлов репозиториев предусмотрен более безопасный метод не требующий root прав [user ~%] upgrade-nonroot
● Обновлять пакеты необходимо командами sudo apt upgrade
, sudo apt full-upgrade
саму систему sudo apt dist-upgrade
.
● Можно настроить автоматическое обновление. В меню запуска приложений ⇒ Система ⇒ Repository Derivative Repository.