- PVSM.RU - https://www.pvsm.ru -
В это посте я попробую расписать по шагам о том, как построить защищённую систему для безопасного приёма, передачи, хранения и обработки конфиденциальных и иных опасных данных. Ни для кого не секрет, что сейчас различные лица и организации пытаются удушить свободу как самого интернета, так и его пользователей, и зачастую им это удаётся. Поэтому сейчас мы попробуем соорудить небольшую, но прочную крепость внутри нашего компьютера.
На провокации вида «при помощи такой системы можно слить гостайну врагу» я отвечаю сразу: при помощи ядерных ракет можно не только устроить конец света, но и отогнать или расколоть угрожающий нашей планете астероид.
Задачи нашей системы будут сформулированы следующим образом:
Во-первых, это компьютер достаточной производительности с большим объёмом оперативной памяти. Его операционная система значения не имеет, поскольку устанавливаемое на него ПО кроссплатформенно. Ну, разве что, за исключением экзотических или совсем уж древних ОС.
Во-вторых, программное обеспечение. Я перечислю его в порядке, в котором оно потребуется в построении системы:
Обращаю внимание, что всё вышеперечисленное ПО имеет открытый код. Это очень важно, поскольку эти программы — ядро нашей безопасности, и какая-нибудь проприетарная закладка могла бы очень дорого обойтись.
Для того, чтобы защитить данные от прямого захвата жёсткого диска, нам необходимо их зашифровать. Для этого мы будем использовать утилиту TrueCrypt.
Создадим с её помощью зашифрованный том, хранящийся в файле. Можно создать и на разделе, но, на мой взгляд, это менее удобно.
Создавать ли скрытый том? Вопрос неоднозначный. Эта фича предназначена для использования в Англии, где невыдача паролей при конфискации ПК сама по себе является преступлением. В то же время в России такой законодательной нормы нет, а использование скрытого раздела съедает полезный объём диска. Я создавать скрытый раздел не стал.
Размер раздела выберем на своё усмотрение. Лично я выбрал 50 ГБ.
Алгоритм шифрования — я выбрал AES. Во-первых, ему доверяют американские военные для защиты высших грифов секретности, а во-вторых, он аппаратно ускоряется новыми процессорами Intel и TrueCrypt имеет поддержку этого ускорения.
Далее всё стандартно: придумываем сложный и длинный пароль, генерируем энтропию хаотичными движениями мыши и создаём раздел. Тип раздела обязательно должен быть NTFS, поскольку в нём будут храниться большие файлы.
Далее нам потребуется виртуальная машина. Всё, что мы оберегаем — будет храниться в ней.
Связано это с тем, что:
Мы будем использовать VirtualBox, но не основной дистрибутив, а портативный [3]. Скачаем инсталлятор на заранее примонтированный шифрованный диск, запустим и скачаем поддерживаемый дистрибутив Бокса посредством самой утилиты. Далее утилита распакует его и настроит на портативность.
Создадим в Боксе машинку с двумя жёсткими дисками: одним — на 8-10 ГБ и вторым на всё оставшееся место, разумеется, расположив оба на шифрованном диске. Пройдёмся по настройкам, поставим сеть в NAT и настроим остальное по своему вкусу — особо критичного там ничего нет. Подключим образ Убунты (который, надеюсь, уже скачался) в качестве дисковода.
Запускаем машину и начинаем установку ОС. При разбиении дисков поступим примерно так: разместим на первом, маленьком, корень и своп, а на большом — /home. Все данные мы будем хранить в /home. Таким образом, разделение системы и данных происходит между разными файлами жёстких дисков Бокса. Далее всё выполняем по своему вкусу.
Установилось! Теперь начинаем настройку.
Идея заключается в том, чтобы оставить прямой доступ в сеть только двоим избранным — маршрутизаторам TOR и I2P.
Сначала ставим TOR из их собственного репозитория (в официальном версия может быть устаревшей) по инструкции с официального сайта [4]. Потом поставим и I2P, опять же из собственного PPA-репа разработчиков — инструкция [5].
Обратим внимание, что TOR сам по себе предоставляет только SOCKS5-прокси, и его поддержка есть не во всех программах. Поэтому установим Polipo — свободный HTTP-прокси:
sudo apt-get install polipo
Настроим его:
sudo nano /etc/polipo/config
Добавим в него строчку:
proxyPort = 8118
Ниже раскомментируем (или подправим, если что-то не так):
socksParentProxy = "localhost:9050"
socksProxyType = socks5
Сохраним. Перезапустим Полип:
sudo service polipo restart
Теперь настроим I2P:
sudo nano /etc/default/i2p
Включим запуск в качестве демона:
RUN_DAEMON="true"
Заодно видим в файле имя пользователя, от которого работает маршрутизатор — у меня это i2psvc
Сохраняем.
Запускаем: sudo service i2p start
Теперь узнаем пользователя, от которого работает TOR:
lsof -c tor
У меня это debian-tor.
И теперь — самое вкусное: рубим доступ в сеть всему, что не TOR и не I2P. Ещё раз — всему.
Вот готовый скрипт iptables-restore, только проверьте ещё раз имена пользователей.
Общая политика DROP, разрешён доступ всем на локалхост, I2P и TOR — во внешнюю сеть.
sudo nano /etc/iptables.up.rules
Содержимое:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A OUTPUT -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -m owner --uid-owner debian-tor -j ACCEPT
-A OUTPUT -m owner --uid-owner i2psvc -j ACCEPT
COMMIT
Откроем файл настройки сети:
sudo nano /etc/network/interfaces
Допишем команду загрузки правил:
pre-up iptables-restore < /etc/iptables.up.rules
У меня выглядит так:
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.up.rules
Поскольку управление сетью у меня идёт посредством network-manager — интерфейса eth0 в файле нет. Правила прописываются при поднятии лупбэка, но разницы нет, поскольку эти правила едины для всех интерфейсов.
Загрузим правила в iptables. Можно перезапустить сеть, но мы сделаем так:
sudo iptables-restore < /etc/iptables.up.rules
Готово! Крепость построена, ров вырыт, лучники на стенах выставлены. Но мы ещё не раздали пропуска её жителям! Исправим.
Для доступа во внешний интернет лучше применять TOR, HTTP-интерфейс которого у нас на 8118 порту.
nano ~/.bashrc
Допишем в конец:
export http_proxy="http://127.0.0.1:8118/"
Теперь в терминале просто
bash
При этом шелл перечитает свой конфиг. Однако apt, без которого в Убунте — как без воды (и ни туды, и ни сюды), чихать хотел на эту переменную окружения. Разъясним ему персонально внутриобъектный режим нашей крепости:
sudo nano /etc/apt/apt.conf.d/proxy
Там должно быть:
Acquire::http::Proxy "http://127.0.0.1:8118/";
Сохраняем, закрываем.
Ну вот вроде и всё. Теперь осталось поставить браузер (если чем-то не нравится установленный по умолчанию Фокси) и начинать пользоваться не очень быстрым, зато защищённым со всех сторон доступом. И повторюсь — программа внутри виртуалки может быть нашпигована хоть тысячей закладок — данные она, может, и сольёт, только они будут анонимными. Вычислить внешний IP не удастся никому.
Систему строил полностью своими силами, не опираясь на готовые How-To (если такие вообще существуют, я не нашёл). Поэтому буду рад принять от читателей возможные усовершенствования и указания на недочёты.
Спасибо за внимание! Надеюсь, хоть кому-нибудь я пользу принёс.
Автор: Raegdan
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bezopasnost/7159
Ссылки в тексте:
[1] TrueCrypt: http://truecrypt.org/
[2] Ubuntu: http://ubuntu.com/
[3] портативный: http://www.vbox.me/
[4] по инструкции с официального сайта: https://www.torproject.org/docs/debian.html.en
[5] инструкция: http://www.i2p2.de/debian.html
Нажмите здесь для печати.