Показаны сообщения с ярлыком jabber. Показать все сообщения
Показаны сообщения с ярлыком jabber. Показать все сообщения

четверг, сентября 04, 2008

Жизнь на флэшке

Intro


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

Постановка задачи


Есть программа, клиент джаббер-сетей - Psi. Надо, что бы она работала с флэшки на любом компе. Дело осложняется тем, что к псайке очень надо шифрование, которое обеспечивается утилитой GPG. (Надо не в смысле, что psi без него не работает, а в смысле, что шифрование - ето секурно). Естесвенно, надо что бы не было лишних телодвижений на новом компе, никаких настроек, и ничего не должно оставаться, всё только на флэшке. Особенно логи psi и в обязательном порядке ключи GPG.

Начало


Для начала пойдём посмотреть доки на предмет домашних папок обоих программ.
Покопавшись в доках к psi, находим
PSIDATADIR is an envrionment variable pointing to the location of the Psi data files (configuration, profiles, history etc.).
по дефолту оно показывает в
%UserProfile%\PsiData\ (usually C:\Documents and Settings\username\PsiData )
в винде, разумеется.
Про GPG в доках написано следующее:
The default home directory is a directory named "gnupg" below the application data directory of the user.
и
Being only a default, it may be changed by setting the name of the home directory into the Registry under the key HKEY_CURRENT_USER\Software\GNU\GnuPG using the name "HomeDir". If an environment variable "GNUPGHOME" exists, this even overrides the registry setting.

В этот момент все продвинутые юзеры умчались галопом ваять скрипты запуска :). Оставшаяся часть аудитории сидит и внемлет далее.

Действуем


Если вкратце, то в теории всё выглядит следующим образом:
1. Создаём на флэшке нужную нам структуру папок;
2. Копируем нужные программы и файлы в соответствующие места;
3. Создаём скрипт, который инициализирует нужные нам переменные окружения и запускает Psi;
4. Проверяем работоспособность всего получившегося;
5. Донастраиваем скрипты;
6. Проверяем работоспособность всего получившегося;
7. Если не работает, то п.5;
8. Пьём шампанское и радуемся жизни.

Начнём выполнять всё по шагам.

Создаём структуру папок


Я выбрал следующую структуру:

.
.\gpg
.\gpg\keys
.\psi
.\psi\data

Остальные папки в psi показывать не стал, бо неважно для нашего дела.
Тут "." - выбранная папка, у меня в данный момент это C:\Temp, сути дела это не меняет. Вы можете сразу создавать её на флэшке или же создать и проверить на жёстком диске, а потом скопировать на флэшку. Заверяю, что у нас всё будет работать независимо от местоположения этой папки, ради этого, собственно, всё и затевалось :) .
Почему именно такая структура - так мне захотелось... И ещё почувствовалось, что так будет правильно.

Копируем файлы


Все операции проводим из нашей папки, то есть из .
GPG
От GPG нам надо только два файла - собственно gpg.exe и iconv.dll, но можно скопировать и всю папку. Откуда у меня в компе живёт iconv.dll - я уже не в курсе :), поэтому вам надо или найти его самим, или спросить у меня, или жить без него - gpg только предупреждает, но работает и без него.
Ключи gpg живут по адресу %userprofile%\Application Data\gnupg, почти всегда это "C:\Documents and Settings\user\Application Data\gnupg". Надо всё содержимое этой папки скопировать в .\gpg\keys:
copy "%userprofile%\Application Data\gnupg\*" .\gpg\keys

Psi
Папку Psi копируем целиком в .\psi . Профиль (все настройки, аккаунты и логи) лежит в %UserProfile%\PsiData\, как было сказано выше. Точно так же копируем всё оттуда в нашу папку:
xcopy /e "%userprofile%\psidata" .\psi\Data


Создаём скрипт


Тут всё просто - нам надо задать две переменные окружения, для Psi и GPG, задать пути для GPG, иначе Psi не сможет найти его и запустить Psi:

@echo off
set GNUPGHOME=%CD%\gpg\keys
set path=%path%;%CD%\gpg;%CD%\psi
set PSIDATADIR=%CD%\psi\data
start psi.exe

Всё это надо вставить в bat-файл, например start_psi.bat.

Так как я всё это протестил, прежде чем запостить, то пункты 4-7 опускаю и сразу приступаю к п.8 :) .

Заключение


Цели своей мы добились, теперь наша Psi всегда с нами и, что примечательно, все наши ключи и всё шифрование теперь тоже ходит с нами вместе. Достигнуто это минут за 10-20 времени, небольшой работой рук и чуть поболе - работой мозга. В дальшейшем я планирую перевезти на флэшку свой почтовик (Sylpheed) и всё, что попадётся под руку :).

Дальше...

вторник, апреля 01, 2008

Psi, Jabber.ru и сертификат

Intro


В Psi есть такая вещь, как подключение к серверу по протоколу SSL.

-А что такое SSL и на кой оно надо?

SSL (Secure Socket Layer) служит для того, чтобы передавать данные по открытым каналам (таким как интернет), но так, чтобы никто не смог их прочесть даже в случае перехвата трафика каким-набудь третьим лицом. Технически представляет собой прослойку (layer) между протоколом высокого уровня и протоколом TCP, для шифрования использует асимметричные алгоритмы.

Обычно применяется между сервером и клиентом, например, протокол https представляет именно SSL-трафик, в который завёрнут обычный http-протокол. Наш любимый жабер тоже поддерживает работу по етому протоколу. Привет любопытным админам ;) .

Как использовать


Влючается в настройках аккаунта, вкладка Connection, комбобокс Encrypt connection (рис.1). Выбрать надо или Always, или When available. Что есть что - думаю, сами поймёте.



Но тут есть одна фича - на стандартной виньХП Псайка плачет при подключении к jabber.ru, говорит,что сертификат какой-то левый (рис.2).

Мы не ленимся, тыкаем батончик Details и видим что да, Certificate is not valid, потому что Self-signed (рис.3).

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

Можно терпеть ето окошко, тыкая каждый раз Continue, но настоящий ленивый компьютерщик так делать не станет. Тем более что тыкать придётся на каждом реконнекте. А станет он искать пути избавления от етого надоедливого окошка.

Лечение


Есть два варианта убрать ету надоедливую мессагу:

1. Подавить предупреждение;

2. Заставить Psi доверять сертификату.

1. Давим предупреждение

Порядок действий следующий:

Лезем в настройки аккаунта, вкладка Connection, ставим галочку Ignore SSL warnings (рис.4). Метод действенный, но не совсем кошерный (на мой взгляд).



2. Заставляем Psi доверять сертификату.

Снова обратим внимание на рис.3. Приглядевшись, видим строку: Organizational unit: http://www.cacert.org. Не ленимся, идём на етот сайт, и сразу на главной странице видим линк Root Certificate. Переходим на него, и качаем Root Certificate либо в PEM-формате, либо в DER-формате.

Далее нам надо установить ети сертификаты в ось. Идём к нашему скачанному сертификату, тычем его два раза, выходит окошко с информацией про сертификат (рис.5).

Тычем батон "Установить сертификат", далее нас приветствует мастер импорта сертификатов, Далее, Далее, Готово.

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

После етой операции, наша ось начинает доверять сертификатам, выданным Сacert, а Псайка как раз проверяет через ось, стало быть, она тоже доверяет сертификату от Jabber.ru, который как-раз-таки получен от Cacert :).

Мораль


Что тут скажешь... Надо быть достаточно ленивым, что бы запариться каждый раз выполнять одни и те же действия, и при етом достаточно любопытным, что бы найти решение, которое избавит вас от етой рутины. Заодно по пути знаний наберётесь и получите через некоторе время левелап :).

+P.S. Да, весь етот SSL даёт шифрование от клиента до сервера, то есть кроме сервера никто не сможет прочесть сообщения. Но настоящим параноикам и етого мало - им надо, чтобы и сервер не мог читать нашу переписку :) . И это тоже можно сделать, используя Псайку и GnuPG-шифрование. Об етом я буду писать позже.

Дальше...