LinOTP — для многофакторной аутентификации

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

LinOTP — для многофакторной аутентификации

Сообщение ya »

https://github.com/LinOTP/LinOTP

Репозиторий:
https://www.linotp.org/download.html

$

Код: Выделить всё

curl https://dist.linotp.org/debian/gpg-keys/linotp-archive-current.asc | sudo tee /etc/apt/trusted.gpg.d/linotp-archive-current.asc

Код: Выделить всё

echo 'deb http://dist.linotp.org/debian/linotp3 bullseye linotp' | sudo tee /etc/apt/sources.list.d/linotp.list

Код: Выделить всё

sudo apt-get update

Код: Выделить всё

sudo apt-get install linotp-archive-keyring linotp
apt --fix-broken install

создать каталог
mkdir /var/linotp/install/mysql

Установить таблицы бд из

Код: Выделить всё

/usr/share/dbconfig-common/scripts/linotp/install/mysql

Код: Выделить всё

linotp local-admins add <username>

linotp local-admins password <username>

LinOTP поддерживает множество различных алгоритмов OTP, используя модульный подход. Сюда входят стандарты OATH, такие как HMAC (RFC 4226) и HMAC на основе времени. Но конструкция LinOTP позволяет легко создавать собственные токены с различными алгоритмами, включая токены «запрос-ответ», токены на основе QR-кодов и токены на основе push-сообщений.

Код: Выделить всё

sudo apt install pwgen python3-passlib python3-pycryptodome python3-beaker python3-bcrypt python3-configobj python3-decorator python3-docutils python3-formencode python3-httplib2 python3-ldap python3-m2crypto python3-mako python3-mysqldb python3-netaddr python3-passlib python3-paste python3-pastedeploy python3-pastescript python3-pygments python3-socks python3-pyrad python3-pysodium python3-qrcode python3-routes python3-simplejson python3-sqlalchemy python3-tempita python3-webob python3-requests
https://github.com/LinOTP/LinOTP

sudo python3 setup.py install


Другие компоненты, такие как модули аутентификации LinOTP или клиенты администрирования LinOTP, упрощают интеграцию строгой многофакторной аутентификации в вашу среду.

Установку LinOTP можно легко выполнить, введя команду::

$ pip install linotp

(обратите внимание, что мы рекомендуем использовать виртуальную среду).

Перед запуском сервера LinOTP необходимо убедиться в наличии ряда важных каталогов. Вы можете проверить их значения по умолчанию с помощью команды

$ linotp config show ROOT_DIR LOG_FILE_DIR CACHE_DIR

и используйте файл конфигурации, чтобы изменить их:

$ sudo mkdir /etc/linotp
$ sudoedit /etc/linotp/linotp.cfg
# ... hack away at linotp.cfg ...
$ export LINOTP_CFG=/etc/linotp/linotp.cfg
$ cat $LINOTP_CFG
CACHE_DIR = "/tmp/linotp-cache" # for example
$ linotp config show CACHE_DIR

CACHE_DIR=/tmp/linotp-cache

Мы рекомендуем использовать /etc/linotpas ROOT_DIRи поместить linotp.cfgтуда файл с вашими настройками. Подходящие значения по умолчанию для LOG_FILE_DIR, и , CACHE_DIRсоответственно . Обратите внимание, что эти каталоги должны принадлежать пользователю, который будет запускать LinOTP. Возможно, вам будет удобно создать для этой цели системного пользователя./var/log/linotp/var/cache/linotplinotp

Также обратите внимание, что переменные среды можно использовать для указания параметров конфигурации LinOTP. Если параметр конфигурации внутри LinOTP имеет имя , для его установки можно использовать XYZпеременную, названную в среде процесса . Это переопределяет любые настройки в файлах конфигурации или жестко запрограммированные значения по умолчанию и полезно в настройках, подобных Docker, где файлы конфигурации неудобно использовать.LINOTP_XYZXYZ

(Для более подробного обсуждения конфигурации LinOTP обратитесь к подробной документации.)

Если вы настроили каталоги по своему вкусу в файле конфигурации (или среде процесса), вы можете создать их с помощью команды типа

$ for d in $(linotp config show --values ROOT_DIR LOG_FILE_DIR CACHE_DIR)
> do
> sudo mkdir -p "$d"
> sudo chown $USER "$d"
> done

( sudoОбязательно, если вы используете каталоги, подобные /var/cache/linotpкоторым можно только rootсоздавать.)

Вы можете начать непосредственно с создания ключей шифрования и журнала аудита, а также структуры таблицы базы данных:

$ linotp init enc-key --dump
$ linotp init audit-keys
$ linotp init database

Обратите внимание, что по умолчанию LinOTP будет использовать базу данных SQLite, которая хороша для тестирования и экспериментов, но непригодна для промышленного использования. LinOTP может создавать базы данных SQLite, поэтому вам не о чем беспокоиться. Если вы используете какой-либо другой тип сервера базы данных (например, MariaDB, MySQL или PostgreSQL), вы должны создать базу данных — или уговорить своего дружественного администратора базы данных создать базу данных для вас — сначала, чтобы вы знали, что поместить в LinOTP. конфигурация базы данных (см. ниже).

Как только база данных будет создана, вам необходимо установить таблицы, индексы и другие артефакты базы данных LinOTP, чтобы она могла делать то, что ей нужно. Вот для чего это linotp init databaseнужно. Причина, по которой это отдельная команда, а не то, что LinOTP будет делать всякий раз, когда это необходимо, заключается в том, что это позволяет вам использовать пользователя базы данных с полными привилегиями DDL для создания схемы, а затем позже запускать LinOTP с пользователем базы данных, имеющим минимальные привилегии ( в основном SELECT, INSERT, UPDATE, и DELETE). Если вы забудете это сделать linotp init database, то если вы захотите сделать с LinOTP что-нибудь интересное (т. е. что-нибудь, что не начинается с linotp initили linotp configили что связано с WSGI), LinOTP просто отобразит сообщение об ошибке и завершит работу.

Последний шаг перед запуском LinOTP — создание учетной записи администратора, иначе вы не сможете получить доступ к интерфейсу управления. Чтобы создать администратора с именем «admin», выполните::

$ linotp local-admins add admin
$ linotp local-admins password admin

Эта последняя команда предложит вам ввести пароль для администратора.

Далее вы готовы запустить веб-сервер, выполнив команду::

$ linotp run

Теперь вы можете войти в веб-интерфейс по адресу http://localhost:5000/manage под своей учетной записью администратора и настроить свой экземпляр LinOTP. Мы рекомендуем вам просмотреть документацию по созданию преобразователя идентификаторов пользователей и области, а также по регистрации токенов.
Параметры

Вы можете адаптировать /etc/linotp/linotp.cfgфайл. Там вам необходимо настроить соединение с существующей базой данных и пользователем:

DATABASE_URI = mysql+mysqldb://user:password@localhost/LinOTP

Убедившись, что ваш сервер базы данных знает о базе данных и что она доступна с использованием заданного имени пользователя и пароля, вы можете снова создать схему базы данных, как указано выше:

$ linotp init database

Соображения безопасности

Обратите внимание, что сервер разработки Flask, который LinOTP использует по умолчанию, не подходит для продуктивного использования.

Мы рекомендуем запускать LinOTP с веб-сервера, такого как Apache или Nginx, где вы можете настроить безопасность и другие параметры. Пример файла конфигурации Apache доступен по адресу etc/apache2/sites-available/linotp.conf
Ответить