2 added
2 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Как зайти в<a>Slack-пространство</a>Хекслета (и не только) с черного хода, деликатно проигнорировав неявное требование о наличии смартфона.</strong></p>
1
<p><strong>Как зайти в<a>Slack-пространство</a>Хекслета (и не только) с черного хода, деликатно проигнорировав неявное требование о наличии смартфона.</strong></p>
2
<blockquote><p>В этой статье рассказывается про старое комьюнити Хекслета в Slack. Теперь мы<a>переехали</a>в Telegram, куда точно не обязательно пользоваться двухфакторной аутентификацией.</p>
2
<blockquote><p>В этой статье рассказывается про старое комьюнити Хекслета в Slack. Теперь мы<a>переехали</a>в Telegram, куда точно не обязательно пользоваться двухфакторной аутентификацией.</p>
3
</blockquote><p>Задавать вопросы и особенно отвечать на них - вот самая интенсивная часть обучения, как считают на Хекслете и не только. Помимо встроенного в сам сайт движка обсуждений с удобной группировкой по курсам и урокам, в Хекслете предлагают всем студентам присоединиться к чат-пространству, созданному на известной закрытой централизованной платформе Slack. В некотором смысле это тоже можно считать частью процесса обучения - Slack довольно популярен среди IT-компаний. Хорошо это или плохо, но выпускнику Хекслета весьма вероятно придётся встречаться с ним и в будущем, если тот решит продолжать идти по пути программиста.</p>
3
</blockquote><p>Задавать вопросы и особенно отвечать на них - вот самая интенсивная часть обучения, как считают на Хекслете и не только. Помимо встроенного в сам сайт движка обсуждений с удобной группировкой по курсам и урокам, в Хекслете предлагают всем студентам присоединиться к чат-пространству, созданному на известной закрытой централизованной платформе Slack. В некотором смысле это тоже можно считать частью процесса обучения - Slack довольно популярен среди IT-компаний. Хорошо это или плохо, но выпускнику Хекслета весьма вероятно придётся встречаться с ним и в будущем, если тот решит продолжать идти по пути программиста.</p>
4
<p>Но так ли легко туда попасть? Помимо инспирированного историческими событиями решения о фильтрации некоторых диапазонов IP-адресов на этапе регистрации, существует и ещё одно затруднение. Причём оно явно не задумывалось как преграда, и даже напротив, призвано сделать Slack более защищённым. Речь идёт о двухфакторной аутентификации, которая активирована в обязательном порядке для всех получивших приглашение от Хекслета.</p>
4
<p>Но так ли легко туда попасть? Помимо инспирированного историческими событиями решения о фильтрации некоторых диапазонов IP-адресов на этапе регистрации, существует и ещё одно затруднение. Причём оно явно не задумывалось как преграда, и даже напротив, призвано сделать Slack более защищённым. Речь идёт о двухфакторной аутентификации, которая активирована в обязательном порядке для всех получивших приглашение от Хекслета.</p>
5
<h2>Содержание</h2>
5
<h2>Содержание</h2>
6
<ul><li><a>О двухфакторной аутентификации</a></li>
6
<ul><li><a>О двухфакторной аутентификации</a></li>
7
<li><a>Так что же тут не так?</a></li>
7
<li><a>Так что же тут не так?</a></li>
8
<li><a>...дело рук самих утопающих</a></li>
8
<li><a>...дело рук самих утопающих</a></li>
9
<li><a>Так что же это?</a></li>
9
<li><a>Так что же это?</a></li>
10
<li><a>И вот наконец-то практика: как работать с KeePassXC</a></li>
10
<li><a>И вот наконец-то практика: как работать с KeePassXC</a></li>
11
<li><a>Вы великолепны</a></li>
11
<li><a>Вы великолепны</a></li>
12
<li><a>Но как же альтернативы?</a></li>
12
<li><a>Но как же альтернативы?</a></li>
13
<li><a>P.S.</a></li>
13
<li><a>P.S.</a></li>
14
</ul><h2>О двухфакторной аутентификации</h2>
14
</ul><h2>О двухфакторной аутентификации</h2>
15
<p>Принцип двухфакторной аутентификации, или сокращённо 2FA, подразумевает применение помимо классической пары логина и пароля, которые теперь считаются первым фактором аутентификации, дополнительного второго фактора. Его отличие от первого - в непостоянности, или зависимости от времени, говоря иначе. Если логин и пароль как правило статичны - смена пароля чаще всего происходит вручную по инициативе пользователя, а логин в ряде случаев и вовсе поменять невозможно, - то второй фактор сменяется автоматически через небольшие отрезки времени. Достигается это при помощи дополнительного секретного ключа, из которого впоследствии по заранее известному алгоритму будут генерироваться так называемые одноразовые пароли - по крайней мере так, если говорить в самых общих чертах, устроен протокол<a>TOTP (Time-based one-time passwords)</a>.</p>
15
<p>Принцип двухфакторной аутентификации, или сокращённо 2FA, подразумевает применение помимо классической пары логина и пароля, которые теперь считаются первым фактором аутентификации, дополнительного второго фактора. Его отличие от первого - в непостоянности, или зависимости от времени, говоря иначе. Если логин и пароль как правило статичны - смена пароля чаще всего происходит вручную по инициативе пользователя, а логин в ряде случаев и вовсе поменять невозможно, - то второй фактор сменяется автоматически через небольшие отрезки времени. Достигается это при помощи дополнительного секретного ключа, из которого впоследствии по заранее известному алгоритму будут генерироваться так называемые одноразовые пароли - по крайней мере так, если говорить в самых общих чертах, устроен протокол<a>TOTP (Time-based one-time passwords)</a>.</p>
16
<p>Кстати, для его корректной работы время на сервере и на клиентском устройстве должно быть синхронизировано, так как одним из аргументов функции генерации одноразового пароля является именно текущее точное время. Главная идея такого непостоянного фактора состоит в практической невозможности его подбора за отведённое время, что должно крайне затруднить неаутентифицированный доступ к защищённому вторым фактором аккаунту даже при утечке либо подборе "первого фактора" - логина и пароля.</p>
16
<p>Кстати, для его корректной работы время на сервере и на клиентском устройстве должно быть синхронизировано, так как одним из аргументов функции генерации одноразового пароля является именно текущее точное время. Главная идея такого непостоянного фактора состоит в практической невозможности его подбора за отведённое время, что должно крайне затруднить неаутентифицированный доступ к защищённому вторым фактором аккаунту даже при утечке либо подборе "первого фактора" - логина и пароля.</p>
17
<blockquote><h3>Читайте также:</h3>
17
<blockquote><h3>Читайте также:</h3>
18
<p>Защищает от хакерских атак и повышает производительность: что такое<a>обратный прокси</a></p>
18
<p>Защищает от хакерских атак и повышает производительность: что такое<a>обратный прокси</a></p>
19
</blockquote><h2>Так что же тут не так?</h2>
19
</blockquote><h2>Так что же тут не так?</h2>
20
<p>Классическая реализация клиента для протокола TOTP выглядит как приложение для современных смартфонов, которые и будут хранить вышеупомянутый дополнительный секретный ключ, а также генерировать одноразовые коды по запросу пользователя. Их характеристики практически идеальны для подобной задачи: они способны синхронизировать собственные часы с серверами точного времени, их вычислительной мощности с избытком достаточно для реализации алгоритма, а их размеры и типичный сценарий использования подразумевают, что "второй фактор" будет всегда под рукой. Возможность защиты аккаунта при помощи TOTP остаётся приятной возможностью для пользователя - ровно до тех пор, пока её использование не становится<a>обязательным</a>. Именно так настроено Slack-пространство Хекслета. К тому же теперь, после того, как целый GitHub<a>анонсировал</a>плавный переход на обязательную 2FA, проблема встала ещё острее.</p>
20
<p>Классическая реализация клиента для протокола TOTP выглядит как приложение для современных смартфонов, которые и будут хранить вышеупомянутый дополнительный секретный ключ, а также генерировать одноразовые коды по запросу пользователя. Их характеристики практически идеальны для подобной задачи: они способны синхронизировать собственные часы с серверами точного времени, их вычислительной мощности с избытком достаточно для реализации алгоритма, а их размеры и типичный сценарий использования подразумевают, что "второй фактор" будет всегда под рукой. Возможность защиты аккаунта при помощи TOTP остаётся приятной возможностью для пользователя - ровно до тех пор, пока её использование не становится<a>обязательным</a>. Именно так настроено Slack-пространство Хекслета. К тому же теперь, после того, как целый GitHub<a>анонсировал</a>плавный переход на обязательную 2FA, проблема встала ещё острее.</p>
21
<h2>...дело рук самих утопающих</h2>
21
<h2>...дело рук самих утопающих</h2>
22
<p>Однако выход есть. К счастью, TOTP является открытым и документированным стандартом, что даёт возможность независимым программистам создавать собственные реализации протокола. Помимо альтернативных смартфонных реализаций (совпадение или нет, но<a>документация Slack</a>словно бы из корпоративной солидарности обходит стороной абсолютно все свободные реализации, такие как<a>Mauth</a>,<a>Aegis</a>,<a>andOTP</a>,<a>FreeOTP+</a>и другие), существуют свободные варианты и для десктопа. Того самого десктопа, с которого вы сейчас читаете этот текст.</p>
22
<p>Однако выход есть. К счастью, TOTP является открытым и документированным стандартом, что даёт возможность независимым программистам создавать собственные реализации протокола. Помимо альтернативных смартфонных реализаций (совпадение или нет, но<a>документация Slack</a>словно бы из корпоративной солидарности обходит стороной абсолютно все свободные реализации, такие как<a>Mauth</a>,<a>Aegis</a>,<a>andOTP</a>,<a>FreeOTP+</a>и другие), существуют свободные варианты и для десктопа. Того самого десктопа, с которого вы сейчас читаете этот текст.</p>
23
<h2>Так что же это?</h2>
23
<h2>Так что же это?</h2>
24
<p>Ответ прост:<a>менеджеры паролей</a>. Почти все так или иначе сталкивались с проблемой запоминания или хранения паролей в надежном месте, и возможно даже решили ее при помощи того или иного менеджера паролей. Один из них, универсальный графический менеджер паролей под названием<a>KeePassXC</a>, помимо основной функции, также содержит реализацию протокола TOTP, позволяя хранить в зашифрованной базе паролей в том числе и необходимый для TOTP секретный ключ.</p>
24
<p>Ответ прост:<a>менеджеры паролей</a>. Почти все так или иначе сталкивались с проблемой запоминания или хранения паролей в надежном месте, и возможно даже решили ее при помощи того или иного менеджера паролей. Один из них, универсальный графический менеджер паролей под названием<a>KeePassXC</a>, помимо основной функции, также содержит реализацию протокола TOTP, позволяя хранить в зашифрованной базе паролей в том числе и необходимый для TOTP секретный ключ.</p>
25
<h2>И вот наконец-то практика: как работать с KeePassXC</h2>
25
<h2>И вот наконец-то практика: как работать с KeePassXC</h2>
26
-
<p>KeePassXC содержится в репозиториях многих дистрибутивов, скорее всего вы найдете свой в списке. А если нет - смотрите варианты установки на<a>официальном сайте</a>. Итак, предположим, что KeePassXC уже установлен.</p>
26
+
<p>KeePassXC содержится в репозиториях многих дистрибутивов, скорее всего вы найдете свой в спи��ке. А если нет - смотрите варианты установки на<a>официальном сайте</a>. Итак, предположим, что KeePassXC уже установлен.</p>
27
<h3>Создаём базу данных</h3>
27
<h3>Создаём базу данных</h3>
28
<p>KeePassXC хранит пароли и секретные ключи в зашифрованной локальной базе данных формата KDBX. Для работы с программой её необходимо создать.</p>
28
<p>KeePassXC хранит пароли и секретные ключи в зашифрованной локальной базе данных формата KDBX. Для работы с программой её необходимо создать.</p>
29
<p>Если вы не уверены в тонких параметрах, с которыми вы хотите шифровать вашу будущую базу с паролями, можете остановиться на предлагаемых по умолчанию настройках.</p>
29
<p>Если вы не уверены в тонких параметрах, с которыми вы хотите шифровать вашу будущую базу с паролями, можете остановиться на предлагаемых по умолчанию настройках.</p>
30
<p>Для инициализации базы данных необходим придуманный вами мастер-пароль - естественно, чем более сложным он будет, тем лучше. Разумеется, восстановить его будет принципиально невозможно. О выборе запоминающихся и в то же время сложных для подбора паролей сказано уже достаточно, добавим лишь такой прием: чтобы убедиться, что вы запомнили пароль как следует, создайте новую базу данных и сразу же закройте ее, ничего пока не записывая. Если на следующий день вы сможете вспомнить пароль - можно начинать пользоваться. Ну а если не сможете, потерять пустую базу будет не страшно.</p>
30
<p>Для инициализации базы данных необходим придуманный вами мастер-пароль - естественно, чем более сложным он будет, тем лучше. Разумеется, восстановить его будет принципиально невозможно. О выборе запоминающихся и в то же время сложных для подбора паролей сказано уже достаточно, добавим лишь такой прием: чтобы убедиться, что вы запомнили пароль как следует, создайте новую базу данных и сразу же закройте ее, ничего пока не записывая. Если на следующий день вы сможете вспомнить пароль - можно начинать пользоваться. Ну а если не сможете, потерять пустую базу будет не страшно.</p>
31
<p>Дизайнеру интерфейсов на заметку: желтый цвет фона в поле подтверждения пароля будет означать, что пароль и подтверждение еще не совпадают, но в уже введённой части подтверждения ошибок нет, красный - что подтверждение и пароль совпадать перестали.</p>
31
<p>Дизайнеру интерфейсов на заметку: желтый цвет фона в поле подтверждения пароля будет означать, что пароль и подтверждение еще не совпадают, но в уже введённой части подтверждения ошибок нет, красный - что подтверждение и пароль совпадать перестали.</p>
32
<h3>Создаем новую запись</h3>
32
<h3>Создаем новую запись</h3>
33
-
<p>Записи в KeePassXC организуются в иерархическую структуру, вы можете организовывать и сортировать записи л��бым удобным вам образом. Создаём новую группу - назовем ее Хекслет, и добавляем в него новую запись - назовем ее<em>Slack</em>.</p>
33
+
<p>Записи в KeePassXC организуются в иерархическую структуру, вы можете организовывать и сортировать записи любым удобным вам образом. Создаём новую группу - назовем ее Хекслет, и добавляем в него новую запись - назовем ее<em>Slack</em>.</p>
34
<p>Каждая запись соответствует одному аккаунту и может содержать несколько полей. То есть в одну запись можно сохранить как пароль от аккаунта, так и секретный ключ для TOTP. Разумеется, такой подход до некоторой степени нивелирует преимущества 2FA, принцип которой подразумевает отделение второго фактора от первого чем-то вроде относительного<a>"воздушного зазора"</a>. Однако хранение ключей и паролей в зашифрованном виде в свою очередь сводит на нет главные недостатки такого подхода, по-прежнему оставляя в силе преимущество в виде невозможности простого подбора второго фактора. Но для дополнительной безопасности ключ TOTP можно сохранять в отдельной базе или даже на отдельном компьютере. Баланс между удобством и безопасностью всегда непрост, впрочем.</p>
34
<p>Каждая запись соответствует одному аккаунту и может содержать несколько полей. То есть в одну запись можно сохранить как пароль от аккаунта, так и секретный ключ для TOTP. Разумеется, такой подход до некоторой степени нивелирует преимущества 2FA, принцип которой подразумевает отделение второго фактора от первого чем-то вроде относительного<a>"воздушного зазора"</a>. Однако хранение ключей и паролей в зашифрованном виде в свою очередь сводит на нет главные недостатки такого подхода, по-прежнему оставляя в силе преимущество в виде невозможности простого подбора второго фактора. Но для дополнительной безопасности ключ TOTP можно сохранять в отдельной базе или даже на отдельном компьютере. Баланс между удобством и безопасностью всегда непрост, впрочем.</p>
35
<h3>Добавляем TOTP</h3>
35
<h3>Добавляем TOTP</h3>
36
<p>Теперь, когда запись создана, остается только добавить в неё секретный ключ. Для удобства использования вместе со смартфоном ключ TOTP (и некоторая дополнительная информация) обычно выводится в виде QR-кода. Конечно, распознать QR-код с картинки могут и<a>некоторые</a><a>свободные</a><a>десктопные</a><a>программы</a>. Но Slack способен отдать ключ и в чистом текстовом виде, чем мы и воспользуемся.</p>
36
<p>Теперь, когда запись создана, остается только добавить в неё секретный ключ. Для удобства использования вместе со смартфоном ключ TOTP (и некоторая дополнительная информация) обычно выводится в виде QR-кода. Конечно, распознать QR-код с картинки могут и<a>некоторые</a><a>свободные</a><a>десктопные</a><a>программы</a>. Но Slack способен отдать ключ и в чистом текстовом виде, чем мы и воспользуемся.</p>
37
<p>Когда Slack предложит просканировать QR-код с параметрами - деликатно отказываемся, нажав на ссылку с надписью "Can't scan this barcode" (на скриншоте выделена жёлтым). Копируем открывшийся TOTP-ключ (набран малиновым моноширинным шрифтом) и переходим в KeePassXC. Там открываем контекстное меню нашего аккаунта в Slack, открываем пункт TOTP и выбираем "Настроить TOTP". Действуем без лишней спешки, но и без промедления! Slack не будет хранить один и тот же неподтверждённый TOTP-код вечно, и через какое-то время сгенерирует новый.</p>
37
<p>Когда Slack предложит просканировать QR-код с параметрами - деликатно отказываемся, нажав на ссылку с надписью "Can't scan this barcode" (на скриншоте выделена жёлтым). Копируем открывшийся TOTP-ключ (набран малиновым моноширинным шрифтом) и переходим в KeePassXC. Там открываем контекстное меню нашего аккаунта в Slack, открываем пункт TOTP и выбираем "Настроить TOTP". Действуем без лишней спешки, но и без промедления! Slack не будет хранить один и тот же неподтверждённый TOTP-код вечно, и через какое-то время сгенерирует новый.</p>
38
<p>Далее вставляем скопированный ключ в соответствующее поле. Оставляем параметры по умолчанию - в Slack используются именно те параметры, что описаны в<a>RFC 6238</a>.</p>
38
<p>Далее вставляем скопированный ключ в соответствующее поле. Оставляем параметры по умолчанию - в Slack используются именно те параметры, что описаны в<a>RFC 6238</a>.</p>
39
<h3>Активируем TOTP</h3>
39
<h3>Активируем TOTP</h3>
40
<p>Вот и все! Осталось лишь ввести сгенерированный код в Slack в первый раз, чтобы подтвердить, что мы все настроили правильно.</p>
40
<p>Вот и все! Осталось лишь ввести сгенерированный код в Slack в первый раз, чтобы подтвердить, что мы все настроили правильно.</p>
41
<h2>Вы великолепны</h2>
41
<h2>Вы великолепны</h2>
42
<p>Готово! Мы только что зарегистрировались в Slack, используя лишь свой десктоп и свободные программы. Не ждите, пока барьеры и препоны расступятся перед вами - ищите пути обхода, и да пребудет с вами сила!</p>
42
<p>Готово! Мы только что зарегистрировались в Slack, используя лишь свой десктоп и свободные программы. Не ждите, пока барьеры и препоны расступятся перед вами - ищите пути обхода, и да пребудет с вами сила!</p>
43
<h2>Но как же альтернативы?</h2>
43
<h2>Но как же альтернативы?</h2>
44
<p>Всецело зависеть от возможностей одной программы, пусть даже и качественной - не самая лучшая идея. На всякий случай лучше держать под рукой или хотя бы в уме пару возможных вариантов. Те, кто ищет альтернативы, или же предпочитает простоту и лаконичность текстовых интерфейсов, могут настроить и опробовать связку из<a>pass</a>и<a>oathtool</a>, двух отдельных консольных утилит в стиле Unix. К тому же это отличная возможность попрактиковаться в работе с консолью, если вы познакомились с ней лишь недавно.</p>
44
<p>Всецело зависеть от возможностей одной программы, пусть даже и качественной - не самая лучшая идея. На всякий случай лучше держать под рукой или хотя бы в уме пару возможных вариантов. Те, кто ищет альтернативы, или же предпочитает простоту и лаконичность текстовых интерфейсов, могут настроить и опробовать связку из<a>pass</a>и<a>oathtool</a>, двух отдельных консольных утилит в стиле Unix. К тому же это отличная возможность попрактиковаться в работе с консолью, если вы познакомились с ней лишь недавно.</p>
45
<h2>P.S.</h2>
45
<h2>P.S.</h2>
46
<p>Возможно, вы обратили внимание, что в этой статье ни слова не сказано о настройке 2FA на GitHub, несмотря на относительно свежий новостной повод. О причинах такого решения вы (возможно) узнаете в одной из следующих статей. Подписывайтесь, комментируйте... так, стоп, не будем забегать вперёд!</p>
46
<p>Возможно, вы обратили внимание, что в этой статье ни слова не сказано о настройке 2FA на GitHub, несмотря на относительно свежий новостной повод. О причинах такого решения вы (возможно) узнаете в одной из следующих статей. Подписывайтесь, комментируйте... так, стоп, не будем забегать вперёд!</p>
47
<blockquote><h3>Продолжайте учиться:</h3>
47
<blockquote><h3>Продолжайте учиться:</h3>
48
<p>На Хекслете есть несколько больших профессий, интенсивов и треков для джуниоров, мидлов и даже сеньоров: они позволят не только<a>узнать новые технологии, но и прокачать уже существующие навыки</a></p>
48
<p>На Хекслете есть несколько больших профессий, интенсивов и треков для джуниоров, мидлов и даже сеньоров: они позволят не только<a>узнать новые технологии, но и прокачать уже существующие навыки</a></p>
49
</blockquote>
49
</blockquote>