OpenSSH и eToken
2015-07-02 12:58:03
Попробовал воспользоваться выданным на работе eToken для доступа на линукс-машину по ssh.
+ развернуть текст сохранённая копия
Попробовал воспользоваться выданным на работе eToken для доступа на линукс-машину по ssh.
Естественно, на машине, куда я втыкал токен, уже установлен Safenet Authentication Client, родной софт от производителя токена, который содержит PKCS11-модуль libeTPkcs11.so. С его помощью можно использовать этот токен в firefox-е и еще много где, причем с ключами и сертификатами, созданными виндовым софтом.
Интерес представляло, насколько хорошо поддержка pkcs11 интегрирована в OpenSSH.
Наибольшую сложность составило почему-то преобразование открытого ключа, извлеченного из сертификата средствами OpenSSL в формат openssh-вого identity.pub. Команда
ssh-keygen -i -m pem -f filename.pem
злобно ругается на нераспознаваемый формат.
Это потому что, openssl полностью перешла на PKCS8 форматы а под pem в опции -m ssh-keygen понимается старый формат.
Правильная команда выглядит как
openssl x509 -in fromtoken.crt -noout -pubkey >filename.pem
ssh-keygen -i -m PKCS8 -f filename.pem
Получить старый формат средствами OpenSSL можно, Для этого в команде rsa есть ключик -RSAPublicKey_out
Можно взять ключик, выдрранный командой x509 (выше) из сертификата и сконвертировать.
Сертификат из токена достается командой:
pkcs11-tool --module libeTPkcs11.so --type cert --id <какой-там-у-вас-id> --read-object
Эта команда выдает сертификат в формате der на stdout, поэтому надо либо переназначить в файл, либо сразу направлять в openssl x509, не забыв ей сказать -inform DER.
Пин-кода чтение сертификата по очевидным причинам не спрашивает.
После того, как ключ получен и положен куда надо в authorized_keys дальше все просто:
Либо
ssh -I libeTPkcs11.so куда.надо
и мы попадаем на нужный хост, одноразово обратившись к токену.
Либо
ssh-add -s libeTPkcs11.so
и золотой ключик у вас в агенте. В обоих случаях, конечно PIN спросят.
Агент нормально переживает внезапное выдергивание токена. Правда, ключ в списке остается.
Что интересно, при попытке его удалить (командой
ssh-agent -e libeTPkcs11.so
спрашивают пассфразу.
При выдернутом токене.
Поиграться что-ли еще с pam-pkcs11?
Там интересно - предоставляются разные способы мэппинга информации из сертификата на карте в юзернеймы, что полезно в моём случае, поскольку юзернеймы на машине куда ходить и информация помещаемая в сертификат, контролиуются разными людьми. Сертификат - сисадмином конторы, а машина - мной.
Кроме того, в состав pkcs11 входит pkcs11_eventmgr, который позволяет, например, лочить экран при выдергивании токена. Интересно, удастся ли сделать так, чтобы ssh-agent при выдергивании токена "забывал" пассфразу от него, но когда после вставления токена она вводится в screensaver, получал бы ее оттуда средствами pam.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1103668.html. Please comment there using OpenID. Now there are comments
Тэги:
debian,
open,
source,
криптография
Управление энергопитанием
2015-06-28 11:18:48
Оторвал, наконец у своего ноутбука привычку уходить в suspend при закрытии крышки.
...
+ развернуть текст сохранённая копия
Оторвал, наконец у своего ноутбука привычку уходить в suspend при закрытии крышки.
Которая появилась при апгрейде на jessie.
Оказалось, что за переход в саспенд при закрытии крышки теперь ответствененен logind.
Раньше это отрывалось на уровне acpi-support.
Нет, все-таки Поттеринга зря не довелит до самоубийства.
Сорок лет не было в unix'е logind. Был login который делал ровно одну вещь -
проверял имя и пароль и запускал то, что для этого имени в /etc/passwd написано. exec-ом.
А теперь завели хрень, которая что-то явно лишнее, и не относящееся к этой задаче делает - реагирует на кнопку питания, закрытие крышки etc.
Нет, я понимаю, что та концепция сессии, которую придумали 40 лет назад для PDP-8 с последовательными терминалами, устарела и её надо менять.
Но то что придумал Поттеринг всем хуже. Оно блин, похоже на того азимовского робота который не мог перемещаться. если у него на плечах не сидел человек. По соображениям безопасности. То есть типа sshd у меня на ноутбуке быть не может.
Понятно, что он не сам это придумиал, он это то ли с MacOS, то ли с андроида слизал.
Но вообще ублюдков. которые притащили в linux из эппловского мира avahi, хочется поубивать с еще большей жестокостью, чем Поттеринга.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1102651.html. Please comment there using OpenID. Now there are comments
Тэги:
debian,
open,
source
Почтовый ящик с бананами
2015-06-24 10:39:31
Вчера я, наконец, нашел время и доделал последний штрих к конфигурации почтового сервера на Banana ...
+ развернуть текст сохранённая копия
Вчера я, наконец, нашел время и доделал последний штрих к конфигурации почтового сервера на Banana Pi.
Так я вообще-то уже две недели им пользуюсь, но до сих пор у пользователей не было возможности самостоятельно, без обращения к системному администратору, то есть мне, менять свои пароли. Теперь есть. Заодно разобрался в некоторых, еще не во всех, тонкостях взаимодействия Prayer Web mail с managesieve.
На мой взгляд, получилось вполне self-contained решение.
Конечно некоторые могут сказать, что почта должна использовать общесетевую базу пользователей, например из ldap, но эти некоторые пускай сами настраивают.
Собственно, новой для меня задачей в этой истории было сделать так, чтобы почтовые пользователи не должны были быть системными пользователям. Если заводить всех почтовых польозователей как системных, то prayer-accountd из дистрибутива задачу управления паролями и finger information решает из коробки.
Но мне интересно было решить задачу с виртуальными пользователями, авторизационная информация по которым хранится в базе данных (sqlite). Поэтому пришлось нарисовать свой собственный accountd. Благо протокол accountd крайне простой.
Получилось решение, которое
1. Хранит архивы почты у меня на столе, а не где-то в облаке
2. Позволяет доступ по IMAP и отправку почты из любой точки земного шара
3. Позволяет доступ через web-интерфейс, если вдруг по каким-то причинам нет возможности использовать нормальный эргономичный почтовый клинент
4. Осуществляет server-side фильтрацию почты, например раскладывает списки рассылки в отдельные папки. Правила фильтрации настраиваются через стандартный протокол managesieve, к которому есть и отдельные клиенты и плагины к почтовым клиентам, либо через веб-интерфейс.
5. Имеет обучаемый пользователями байесовский спамфильтр, причем общий для всех пользователей.
Обучение сводится к тому что проскочивший фильтры спам надо складывать в папку "спам", а весь не спам куда-то перекладывать из INBOX-а. Можно - в "Корзину".
Кстати, спама почему-то стало ощутимо меньше. Возможно потому что я поменял исторически сложившиеся настройки spamassassin-а на дистрибутивные.
6. Пользователи могут менять пароли (через веб-интерфейс к почте).
Получилась следующая картина:
Аппаратура:
Banana PI, 16 Гб UHS SD-карта, самодельный жестяной корпус.
Установлены:
postfix, dovecot, spamassassin и prayer.
Есть sqlite-база которой пользуется dovecot для авторизации и postfix для проверки существования адреса.
Вообще есть мысль в ту же базу засунуть еще таблицу алиасов (которая virtual_alias_map) и научить accountd ее редактировать, чтобы в web-интерфейсе prayer заработала функциональность "перенаправить почту на более другой адрес". Мне это нафиг не нужно, но ради спортивного интереса и полноты реализации протокола accountd...
У postfix в master.cf описан транспорт dovecot, который сначала фильтрует почту через spamc, а потом отправляет в dovecot-lda. Этот транспорт прописан как виртуальный транспорт для всех доменов. Естетсвенно, включена smtp-авторизация. Через dovecot-овский sasl, то есть кончается все дело той же sqlite-базой.
С доменами у меня сделано так, что каждый пользователь имеет адрес во всех доменах, которые поддерживаются на сервере. Можно было бы развести, но зачем?
Соответственно доступ к почте поддерживается по imap over ssl и через web-интерфейс. Управление фильтрами - через manage-sieve (благо в нем есть starttls) или через тот же web-интерфейс. У prayer, кстати, есть довольно неплохой консруктор фильтров, который пишет за человека sieve скрипты. Если бы он еще знал о существовании в sieve расширения spamtest...
На входном роутере у меня порты 443 993 465 и 4190 отправляются на эту коробочку. А 22 и 80 - на рабочую станцию. 25 вообще у провайдера закрыт. Поэтому приходится направлять MX на VDS, с которой почта перенаправляется опять же через postfix-овские virtual transport через openvpn. Что позволяет вообще пользоваться провайдером за NAT-ом. Где бы я эту коробочку ни включил, как только она загрузится и установит OpenVPN-соединение с VDS, почта в обе стороны ходить будет (Правда читать ее смогут только те, кто в одной локальной сети с этой коробочкой). Но поскольку провайдер дает достижимый извне IP, то читать почту и отправлять ее можно откуда угодно - 465 порт не фильтруется. А зафильтруют, так 587 есть.
На самом деле еще на этой коробочке крутится SNIProxy, которая перенаправляет https-запросы к home.wagner.pp.ru (а не к mail.wagner.pp.ru) на рабочую станцию. Чтобы можно было снаружи рулить transmission-ом через web-интерфейс.
К сожалению, найти web-mail, который бы уживался на одном виртуальном сервере с другими веб-приложениями мне не удалось, поэтому весь https://mail.wagner.pp.ru занят prayer-ом (и он же является там web-сервером).
В данной конструкции не описан greylisting и мендежер списков рассылки, потому что они стоят на VDS. Грейлистинг - по совершенно очевидным причинам, а менеджер списков рассылки чтобы не гонять их траффик туда-обратно через vpn.
Резервное копирование:
По крону rsync-ом на рабочую станцию. Не rsnapshot-ом а просто rsync-ом. rsnapshot-ом оно потом на внешний носитель копируется, а на диске рабочей станции есть просто ровно одна копия всей файловой системы почтового сервера.
http://vitus-wagner.dreamwidth.org/1099737.html. Please comment there using OpenID. Now there are
comments
Тэги:
banana,
debian,
open,
source
SNIproxy
2015-06-12 18:02:16
Нашел тут замечательный инстурмент SNIProxy
Позволяет решить задачу раскидывания https- ...
+ развернуть текст сохранённая копия
Нашел тут замечательный инстурмент SNIProxy
Позволяет решить задачу раскидывания https-траффика по машинам (в том числе виртуальным), сидящим за однм внешним IP. Причем полноценного такого раскидыванрия. когда каждый сервер имеет собственные ключи и хранит их у себя, может сам проверять клиентские сертификаты etc.
Под Bananian собралось, тестирвоать еще не тестировал, потому что для тестирования нужно иметь хотя бы два https-ных сервера, в локальной сети. А у меня в ЭТОЙ сети нет ни одного.
Хотя, конечно, такую штуку надо держать на роутере, а не на одном из серверов внутри сети. Но собирать ее под dd-wrt или openwrt мне ломы.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1096121.html. Please comment there using OpenID. Now there are comments
Тэги:
debian,
open,
source,
вебстроительское,
компьютерное
Банановое
2015-06-09 15:18:00
Вчера наконец собрался поиграться с Banana PI.
Для этого надо было собрать в одном месте ...
+ развернуть текст сохранённая копия
Вчера наконец собрался поиграться с Banana PI.
Для этого надо было собрать в одном месте USB-шную клавиатуру, какой-нибудь дисплей с HDMI входом и нормальную сеть. Последнее привело к тому, что развлекаться этим на работе было крайне неинтересно.
В общем пришлось дождаться пока отец уедет в деревню, оторвать клавиатуру от его машинки (остальные все в доме PS/2) и поюзать его телевизор в качестве дисплея.
Выяснилось, что ставить vanilla jessie из образов вот отсюда - это для настоящих героев, умеющих цепляться к GPIO и имеющх в хозяйстве USB-RS232, - оно там serial console хочет.
Поэтому для начала взял Bananian у которого в sources.list сплошной wheezy, зато ядро 3.4. Можно еще попробовать вот эти образы. Хотя в общем, непонятно зачем. Можно и bananian до jessie сапгрейдить.
И bananian, и они имеют четкие инструкции как пересадить систему на SATA-диск.
Но у меня почему-то прикрутить жесткий диск не получилось. Вернее, несмотря на помощь
3a_5648 не получилось снять с разъема на котором написано SATA Power достаточно питания, чтобы раскрутить диск. Наверное, этим не в час ночи надо заниматься.
Попытался сдизайнить максимально компактный корпус (на предмет согнуть его из жести). Если делать так, чтобы влезал диск, получается примерно 70x30x127мм, при том что разъем аналогового видео и аудио торчит за пределы этих габаритов, а кабелю данных SATA потребуется Г-образный
разъем по крайней мере со стороны платы. (блин, где берут SATA кабели длиной не более 10 см?),
а разъемы питания и HDMI оказывается утоплены очень глубоко в корпус.
Так что вот думаю, а может отказаться от идеи SATA, так и жить на SD? Современные SD вроде довольно живучие. Без диска габариты получаются 65x20x115. Нет, разница не настолько велика, пожалуй, надо все-таки делать корпус под диск. А питание для диска снять прямо с того USB-шнурка, которым питание подается.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1095124.html. Please comment there using OpenID. Now there are comments
Тэги:
banana,
debian,
компьютерное
Страницы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...