Приветствую Вас Гость | RSS

Меню сайта

Мини-чат

Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0

Главная » 2015 » Ноябрь » 25 » Строим защищённую систему на основе TOR и I2P : Настройка Squid-prefetch
22:55
Строим защищённую систему на основе TOR и I2P : Настройка Squid-prefetch

9 мая 2012 в 19:07

Строим защищённую систему на основе TOR и I2P из песочницы

Введение


В этом посте я попробую расписать по шагам о том, как построить защищённую систему для безопасного приёма, передачи, хранения и обработки конфиденциальных и иных опасных данных. Ни для кого не секрет, что сейчас различные лица и организации пытаются удушить свободу как самого интернета, так и его пользователей, и зачастую им это удаётся. Поэтому сейчас мы попробуем соорудить небольшую, но прочную крепость внутри нашего компьютера.

На провокации вида «при помощи такой системы можно слить гостайну врагу» я отвечаю сразу: при помощи ядерных ракет можно не только устроить конец света, но и отогнать или расколоть угрожающий нашей планете астероид.
TrueCrypt
  • VirtualBox (качать с официального сайта пока не торопитесь)
  • Ubuntu. Я делал на версии 11.10 x86, поскольку 12.04 на тот момент не было. Поставьте образ качаться прямо сейчас, чтобы не терять времени. На диск резать не надо.
  • TOR
  • I2P

  • Обращаю внимание, что всё вышеперечисленное ПО имеет открытый код. Это очень важно, поскольку эти программы — ядро нашей безопасности, и какая-нибудь проприетарная закладка могла бы очень дорого обойтись.

    Начнём!


    Для того, чтобы защитить данные от прямого захвата жёсткого диска, нам необходимо их зашифровать. Для этого мы будем использовать утилиту TrueCrypt.

    Создадим с её помощью зашифрованный том, хранящийся в файле. Можно создать и на разделе, но, на мой взгляд, это менее удобно.

    Создавать ли скрытый том? Вопрос неоднозначный. Эта фича предназначена для использования в Англии, где невыдача паролей при конфискации ПК сама по себе является преступлением. В то же время в России такой законодательной нормы нет, а использование скрытого раздела съедает полезный объём диска. Я создавать скрытый раздел не стал.

    Размер раздела выберем на своё усмотрение. Лично я выбрал 50 ГБ.

    Алгоритм шифрования — я выбрал AES. Во-первых, ему доверяют американские военные для защиты высших грифов секретности, а во-вторых, он аппаратно ускоряется новыми процессорами Intel и TrueCrypt имеет поддержку этого ускорения.

    Далее всё стандартно: придумываем сложный и длинный пароль, генерируем энтропию хаотичными движениями мыши и создаём раздел. Тип раздела обязательно должен быть NTFS, поскольку в нём будут храниться большие файлы.

    Далее нам потребуется виртуальная машина. Всё, что мы оберегаем — будет храниться в ней.
    Связано это с тем, что:
    • работа в основной ОС оставляет в различных местах разнообразные следы;
    • если основная ОС проприетарна (не буду показывать пальцем) — в ней не исключено наличие закладок;
    • прикладное ПО в основной ОС тоже подпадает под предыдущее требование (вспомним PunkBuster, EULA которого позволяет сканировать жёсткий диск пользователя).

    Мы будем использовать VirtualBox, но не основной дистрибутив, а портативный. Скачаем инсталлятор на заранее примонтированный шифрованный диск, запустим и скачаем поддерживаемый дистрибутив Бокса посредством самой утилиты. Далее утилита распакует его и настроит на портативность.

    Создадим в Боксе машинку с двумя жёсткими дисками: одним — на 8-10 ГБ и вторым на всё оставшееся место, разумеется, расположив оба на шифрованном диске. Пройдёмся по настройкам, поставим сеть в NAT и настроим остальное по своему вкусу — особо критичного там ничего нет. Подключим образ Убунты (который, надеюсь, уже скачался) в качестве дисковода.

    Запускаем машину и начинаем установку ОС. При разбиении дисков поступим примерно так: разместим на первом, маленьком, корень и своп, а на большом — /home. Все данные мы будем хранить в /home. Таким образом, разделение системы и данных происходит между разными файлами жёстких дисков Бокса. Далее всё выполняем по своему вкусу.

    Установилось! Теперь начинаем настройку.

    Идея заключается в том, чтобы оставить прямой доступ в сеть только двоим избранным — маршрутизаторам TOR и I2P.

    Сначала ставим TOR из их собственного репозитория (в официальном версия может быть устаревшей) по инструкции с официального сайта. Потом поставим и I2P, опять же из собственного PPA-репа разработчиков — инструкция.

    Обратим внимание, что 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 не удастся никому.

    Однако (спасибо amarao за дополнение) смотрите внимательно, какие программы вы запускаете от рута! Поскольку вредоносная программа может обойти защиту двумя способами: прописав своё вредоносное правило в iptables или внедрив шпионский модуль ядра. Обе процедуры требуют рут.

    Систему строил полностью своими силами, не опираясь на готовые How-To (если такие вообще существуют, я не нашёл). Поэтому буду рад принять от читателей возможные усовершенствования и указания на недочёты.

    Спасибо за внимание! Надеюсь, хоть кому-нибудь я пользу принёс.

    Как-то у меня не вяжется безопасные прием-передача конфиденциальной информации и tor. При пользовании тором, я исхожу из предположения, что весь трафик на всех exit нодах снифается и анализируется. А также любая полученная страница может быть пооддельной.
    Т.е. передавать можно только ту информацию, которая попав в чужие руки будет совершенно бесполезной.
    Да, и по такой схеме многие приложения будут спотыкаться на днс-е. Сам когда-то настраивал, далеко не многие умеют днс- запросы через тор пускать.
    А даже если умеют, то из-за тупняков с днс-ом, все будет жутко тормозить. В данной схеме хорошо бы поднять ttdnsd + pdnsd, т.е. принудительное проксирование днс запросов и проброс их в тор. Со стороны приложений это будет выглядеть как обычный днс сервер, а при множественных днс запросах, непосредственно сам запрос будет только раз для домена, потом моментом будет вылетать из кэша.
    Схема такая: UDP dns -> proxy -> TCP dns запрос -> tor

    Tor и I2P из песочницы надо выносить. Либо на хост (но тут надо думать об оставляемых следах и уязвимости хост-ОС, хотя о ней всегда надо думать), либо на соседнюю безголовую виртуалку с ограниченным роутингом и логами запросов на прокси-порты. Оба приложения обладают информацией о реальном IP (в общем случае, не знаю насчёт строго клиентских режимов работы), да и вирус, распространяемый среди пользователей этих программ, скорее всего будет внедряться в них же, чтобы работать с сетью.

    А потом надо молиться, чтобы в ядре VirtualBox и компонентах, типа Guest Additions (даже в самом программном интерфейсе, без установки), файрвола и сетевого драйвера на хосте, не было дырок.

    Как минимум, в такой схеме утекает информация о времени работы виртуалки (Prefetch, дата создания временных файлов и всё такое прочее), которое можно будет с чем-то сопоставить (это более общая проблема, которая, в частности, декларирует необходимость круглосуточной работы узла сети). Только полностью шифрованная система с загрузчиком либо на неперезаписываемом устройстве, либо криптографически подписанным.



    habrahabr.ru
    Просмотров: 343 | Добавил: assuent | Рейтинг: 0.0/0
    Всего комментариев: 0
      Мой сайт   Главная   Регистрация   Вход  
    Вход на сайт

    Поиск

    Календарь
    «  Ноябрь 2015  »
    ПнВтСрЧтПтСбВс
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30

    Архив записей

    Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz