HTML Diff
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>