October 2030
| |
|
1 |
2 |
3 |
4 |
5 |
| 6 |
7 |
8 |
9 |
10 |
11 |
12 |
| 13 |
14 |
15 |
16 |
17 |
18 |
19 |
| 20 |
21 |
22 |
23 |
24 |
25 |
26 |
| 27 |
28 |
29 |
30 |
31 |
|
11/14/19 01:48 am
Домашний сервер на базе Slackware Linux
 Давно хотел собрать в кучу заметки про то, как можно организовать домашний сервер (или сервер для малого офиса) на базе Slackware Linux с VPN, I2P, Tor, файл-помойкой на локальном FTP, возможностью установки с сервера ПО и операционных систем, а возможно и с внутренними Web-сайтами, чатами и что там еще надо в зависимости от ваших задач. А еще и с полным шифрованием жесткого(-их) дисков. Это пост-оглавление. Тут буду копить внутренние ссылки на заметки, относящиеся к организации сервера. Нумерация и последовательность также может меняться, т.к. я пишу как придется, а в содержании буду по мере накопления материала сортировать как надо. Что примерно надо построить на начальном этапе. Сервер в локальной сети, позволяющий клиентам выходить в Интернет, как минимум через два различных IP (VPN и IP основного провайдера), поддерживающий локальный FTP и/или Samba (файловое хранилище), поддерживающий проходную ноду Tor и I2P-роутер, а также обеспечивающий локальным клиентам доcтуп в сети Tor и I2P. Ремарка про железо. На самом деле, чем круче, тем круче, но изначально все делалось на старом Celeron с 500 Гб HDD и 512 Мб ОП, сейчас все вертится на Dual Core Intel Celeron E3200 (2400МГц) с гигабайтом встроенной памяти и встроенным видео, тоже не самая новая машина, но получше. А вообще хочу, чтоб оно на PIII-700 заработало. Сетевая карта одна (расскажу, как из одной реальной виртуальных наделать). ОглавлениеУстановка Linux и шифрование жесткого диска: - Часть I Копия- Часть II Копия- Часть III Копия- Часть IV Копия- Пример конфига GRUB для загрузки сервера КопияЭта часть целиком в PDFНачальная настройка сети КопияNetwork namespaces или несколько виртуальных сетевых карт (интерфейсов) с разными IP на одной машине. КопияНастройка файерволла (IPTABLES) КопияЛокальный FTP КопияНода TOR КопияНастройка доступа к I2P КопияPXE (установка и запуск различных ОС со своего сервера на локальных машинах) КопияЛокальный прокси-сервер: - Запускающий скрипт Копия- Инструкция по установке Копия- Изменения в конфигурации последней версии КопияЭто репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2019/11/13/domashnij-server-na-baze-slackware-linux/
11/14/19 11:18 pm
Установка Linux и шифрование ее и всего содержимого жесткого диска.
Нам понадобятся: 1. Дистрибьютив Linux. Я здесь и далее использовал Slackware 14.2 2. Live CD Linux, я использовал Puppy Rus Slacko,
Идея в том, чтоб наша ОС и данные находились на надежно зашифрованных разделах, на жестком диске внешне не должно быть никакой разбивки, а система загружалась без ввода парольной фразы или ключа. Как это можно реализовать Загрузчик системы и ключ доступа будут храниться на небольшом(<50Mb) разделе флешки, при включении загрузчик разблокирует доступ к шифрованному винту, загружает ядро, далее происходит обычная загрузка системы.
Я не стал использовать LVM, а вместо LUKS выбрал клон truecrypt'а - tcplay
Этап #1. Разбиение диска на разделы
Итак, первым делом создаем нужные разделы на диске. Я сделал это в графической оболочке Puppy Rus с помощью имеющегося на диске gparted, но ничего не мешает вам сделать это с помощью другой программы.
Этап #2. Подготовка загрузочной флешки.
Действуем как в вышеупомянутой статье – разбиваем флешку на 2 раздела, первый большой и видимый из Windows и других ОС, второй маленький – с загрузчиком операционной системы и ключами, отформатированный в Ext2. В статье рекомендуется сделать его приблизительно 50 Мб, и для загрузчика GRUB, ядра, хранения начальных настроек этого хватит. Я же сделал второй раздел побольше (1Гб) и перенес на него дополнительно Live дистрибутив Puppy Linux (чтоб в процессе настроек не грузиться с CD или другой флэшки).
Этап #3. Установка загрузчика GRUB
Необходимо извлечь загрузочные флешки с которых ставили ОС, и/или с которых загружали Puppy Slacko, если таковые были использованы, и вставить нашу размеченную подготовленную загрузочную флешку.
Я воспользовался графической утилитой установки GRUB c LiveCD Puppy Slacko, доступ к которой можно получить из главного меню Puppy Slacko (оно по-умолчанию там же где и «Пуск» у Windows) «Система» - «Настройка загрузчика GRUB» 1. В первом диалоговом окне выбираем способ установки simple 2. Во втором предлагается выбрать разрешение экрана при загрузке, я выбрал standart, ибо для Slackware потом все равно необходимо перенастроить параметры разрешения экрана при загрузке в конфиге GRUB. 3. В следующем окне необходимо указать местоположение директории boot, это второй раздел нашей флешки, который у меня называется sdb2, соответственно указывается устройство /dev/sdb2 4. В следующем окне выбираем запись загрузчика в MBR 5. В следующем окне вводим устройство, в MBR которого будет записан загрузчик, в данном случае это наша флешка, которая обозначена как /dev/sdb (у меня)
( Продолжение под катом )
Поздравляю! Мы загрузились с помощью образа initrd до загрузки основной ОС. Для продолжения загрузки надо ввести exit и нажать enter. Управление будет передано программе init из основной ОС и основная ОС загрузится.
Это репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2019/11/13/ustanovka-linux-i-shifrovanie-ee-i-vsego-soderzhimogo-zhestkogo-diska/
11/14/19 11:22 pm
Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть II
Этап #11. Добавление tcplay в образ initrd.
Для этого создаем какой-нибудь временный каталог и распаковываем туда из пакета (tc-play-2.0-i486-1.tgz в моем случае) полученного на этапе 8 файлы (дальнейшие пути внутри пакета)
usr/lib/libtcplay.so.2.0 usr/sbin/tcplay
Я просто воспользовался mc, зашел им в архив и нужное скопировал клавишей F5 в /tmp/tc-play, mc сам вызвал архиватор и распаковал все за меня. Далее, выходим из архива и копируем во временный каталог (ну чтоб все нужные файлы были в одном месте и мы не запутались) файл
/lib/libdevmapper.so.1.02 (если при создании initrd, вы пользовались опцией –L, то эта библиотека уже на месте) Теперь из временного каталога (да, можно было и сразу) скопируем файлы
libtcplay.so.2.0 libdevmapper.so.1.02
в /boot/initrd-tree/lib (каталог библиотек файловой системы initrd) а файл
tcplay в /boot/initrd-tree/bin
Также tcplay во время своей работы, а конкретно подключения зашифрованных разделов вызывает из каталога /usr/sbin программу dmsetup. Соответственно, необходимо положить dmsetup в /boot/initrd-tree/usr/sbin
Чтобы dmsetup работал правильно, ему необходим каталог /dev/mapper, его тоже надо создать
mkdir /boot/initrd-tree/dev/mapper
Далее выходим из каталога initrd-tree, удаляем из директории /boot ранее созданный initrd.gz и запускаем mkinitrd без параметров, далее примонтируем нашу загрузочную флешку, заменяем файл /mnt/sda2/absolute/initrd.gz на пересозданный initrd.gz, перезагружаем компьютер и выбираем созданный на этапе 8 пункт для тестирования initrd.gz
Если все сделано правильно, то в конце загрузки будет выведено сообщение "Hello, world!" и приглашение оболочки, в котором мы введем команду tcplay. Программа должна выдать краткую справку по своим параметрам. После чего вводим команду exit и загружаемся в основную ОС.
Этап #12. Генерация ключа для шифрования.
Для генерации ключа можно взять данные из /dev/urandom. Если было несколько перезагрузок основной ОС и ОС некоторое время работала, то это должно быть довольно надежно. Хотя при написании данной статьи я и сомневался в этом, но мои сомнения были развеяны более опытными специалистами :) Можно также воспользоваться генератором ключевых файлов, входящим в комплект Windows или Linux-версии Truecrypt, в таком случае следует использовать версию 7.1a, последнюю на момент закрытия проекта Truecrypt, скачать каковую можно, например отсюда.
Можно воспользоваться сторонними генераторами случайных высокоэнтропийных последовательностей, а можно взять (как и при использовании Truecrypt) любой файл, первый мегабайт которого и будет использован в качестве ключевого файла. Нежелательно в последнем случае использовать в качестве такого файла какой-нибудь стандартный системный файл или фотографию вашего кота, понятно, что при получении доступа к жесткому диску, злоумышленник сможет его без особого геморроя подобрать.
Вот команда для генерации ключа с помощью /dev/random – стандартного устройства для получения псевдослучайных последовательностей
dd if=/dev/random of=/путь/к/файлу/имя_файла bs=1 count=256
Команда dd подробно описана, например, здесь
( Далее под катом )
Это репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2019/11/14/ustanovka-linux-i-shifrovanie-ee-i-vsego-soderzhimogo-zhestkogo-diska-chast-ii/
11/14/19 11:27 pm
Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть III
Этап #16 Подготовка конфигурационных файлов и рабочего initrd
На этом этапе первым делом определимся, под каким именем мы будем обращаться к нашему зашифрованному жесткому диску. Это имя будет использоваться в команде map утилиты tcplay. Для примера здесь и далее я буду использовать имя cryp_sdb. Далее необходимо скопировать в отдельный каталог на загрузочной флешке (для примера пусть будет cfg) файлы /etc/fstab и /etc/mtab из основной ОС и отредактировать их, заменив /dev/sdaX на /dev/mapper/cryp_sdbX. Где X – номер конкретного раздела на жестком диске. ( Далее под катом )
Это репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2019/11/14/ustanovka-linux-i-shifrovanie-ee-i-vsego-soderzhimogo-zhestkogo-diska-chast-iii/
11/14/19 11:31 pm
Установка Linux и шифрование ее и всего содержимого жесткого диска. Часть IV
Этап #19 Восстановление системы на зашифрованный диск. Форматирование разделов
Сначала, как и на этапе 18, необходимо получить доступ к зашифрованному жесткому диску
tcplay --map=cryp_sdb --device=/dev/sdb --keyfile=/path/to/key/file
Далее, с помощью утилиты kpartx, доступ к разделам на жестком диске
kpartx -av /dev/mapper/cryp_sdb
где: Опция a – подключить разделы, содержащиеся на зашифрованном устройстве Опция v – отобразить, какие разделы были подключены.
/dev/mapper/cryp_sdb – подключенный с помощью tcplay зашифрованный диск.
Далее форматируем разделы. Главный:
mkfs –t ext2 /dev/mapper/cryp_sdb1
Дополнительный:
mkfs –t ext2 /dev/mapper/cryp_sdb5
И раздел подкачки:
mkswap /dev/mapper/cryp_sdb6
Отключаем подключенные разделы:
kpartx –dv /dev/mapper/cryp_sdb
Отключаем зашифрованный жесткий диск:
tcplay --unmap=cryp_sdb Перезагружаемся обратно в консоль тестового initrd
Этап #20 Восстановление системы на зашифрованный диск. Восстановление файлов из ранее созданных бэкапов.
Как и в предыдущем этапе, сначала получаем доступ к зашифрованному жесткому диску:
tcplay --map=cryp_sdb --device=/dev/sdb --keyfile=/path/to/key/file
И его разделам:
kpartx -av /dev/mapper/cryp_sdb
Предположим, что бэкапы системы были сохранены на первый FAT32 раздел флешки sda1 и находятся по следующим путям:
/mnt/sdb1/bak/system.tar.gz и /mnt/sdb1/bak/home.tar.gz
Создаем точку монтирования для флешки (если не создана):
mkdir /mnt/sdb1 И монтируем ее (если не примонтирована)
mount –t vfat /dev/sdb1 /mnt/sdb1
Создаем точки монтирования для разделов жесткого диска:
mkdir /mnt/sda1 mkdir /mnt/sda5
Внимание! Точки монтирования для жестких дисков должны называться также, как назывались при создании бэкапов!
Монтируем разделы:
mount –t ext2 /dev/mapper/cryp_sdb1 /mnt/sda1 mount –t ext2 /dev/mapper/cryp_sdb5 /mnt/sda5
Распаковываем архивы:
tar –xvf /mnt/sda1/bak/home.tar.gz –C / tar –xvf /mnt/sda1/bak/system.tar.gz –C /
где: Опция x – распаковать архив Опция v – отображать имена распаковываемых файлов Опция f – архив находится в файле (а не направлен со STDIN)
/mnt/sda1/bak/home.tar.gz – путь к файлу архива
–C – указывает, в какой каталог распаковать архив (сам каталог указывается через пробел, и в данном случае это корень, т.е. / ).
Скопируем заранее исправленные fstab и mtab, предположим, они были сохранены в первый раздел загрузочной флешки, в каталог tabs и данный раздел смонтирован:
cp /mnt/sdb1/tabs/fstab /mnt/sda1/etc/fstab cp /mnt/sdb1/tabs/fstab /mnt/sda1/etc/mtab
После копирования файлов отмонтируем разделы:
umount /mnt/sda1 umount /mnt/sda5
Отключаем подключенные разделы:
kpartx –dv /dev/mapper/cryp_sdb
Отключаем зашифрованный жесткий диск:
tcplay --unmap=cryp_sdb Перезагружаемся уже с рабочим initrd.
Поздравляю! Если система успешно загрузилась с рабочим initrd, значит, задача выполнена! После успешной загрузки можно подправить конфиг GRUB, так, чтоб сразу загружалась система с рабочим initrd.
Скачать мануал целиком в PDF
Это репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2019/11/14/ustanovka-linux-i-shifrovanie-ee-i-vsego-soderzhimogo-zhestkogo-diska-chast-iv/
|