Сразу оговорюсь: подробных инструкций/настроек я не даю, просто делюсь мыслями, как это сделать.
Также под FTP я имею в виду не только классический FTP, но и SFTP и SSL-FTP — это статья о безопасности паролей, а не протокола как такового.
Представьте себе хостинговую компанию, предоставляющую хостинг-аккаунты с повышенной безопасностью, а именно двухфакторной аутентификацией.
В этом нет ничего сложного, нужно просто реализовать на сервере один или несколько вариантов подключаемых модулей аутентификации со вторым фактором (например code.google.com/p/google-authenticator/wiki/PamModuleInstructions или motp.sourceforge.net/#6 ) и связать с ними пользователей.
В большинстве случаев PAM можно указать в конфигурации FTP-серверов, и в принципе проблема безопасности FTP будет решена таким же образом.
Проблема в другом; дело в том, что в зависимости от скорости соединения, настроек сервера/маршрутизатора или режима FTP-соединения, FTP-сессия может прерваться при отсутствии активности в течение определенного времени (а то и просто прерваться в самый неподходящий момент).
В «классическом» FTP клиент просто подключится снова, нужно только поставить галочку «сохранить пароль».
В случае двухфакторной аутентификации это не сработает; пароль и код от «токена» придется вводить довольно часто, а это очень неудобно для конечного пользователя.
Если как-то можно убедить пользователя в необходимости использования «токена» при входе в систему, то уже сложно объяснить необходимость делать это несколько раз в процессе скачивания файлов.
Надеюсь, я объяснил проблему.
Теперь поделюсь идеей по повышению удобства для конечных пользователей.
Генерация временных паролей для FTP
На самом деле сам принцип не оригинален, предлагаю сделать что-то вроде пароли приложений используется для учетных записей Google с включенной двухэтапной проверкой.Для этого вам понадобится какой-то веб-интерфейс для генерации паролей приложений.
Сам веб-интерфейс будет доступен только с использованием двухфакторной аутентификации.
После входа в систему пользователь сгенерирует пароль FTP, который будет активен только определенное время и только для определенного IP-адреса (по умолчанию будет предложен текущий адрес).
Примерный интерфейс может выглядеть так:
При создании скрипт вводит данные в таблицу базы данных (например, MySQL), а именно имя пользователя, IP-адрес и временную метку времени, указанного пользователем, а также сгенерированный пароль FTP, который отображается пользователю в интерфейс.
Этот временный пароль будет использоваться для доступа по FTP. Таблица будет выглядеть так:
Конфигурация FTP-сервера
В качестве примера возьмем PureFTPD, поскольку его можно связать с MySQL. Направленный инструкции настройте PureFTPD следующим образом: MYSQLSocket /tmp/mysql.sock
MYSQLUser root
MYSQLPassword rootpw
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT temp_password FROM temp_pass WHERE username="\L" AND IP="\R" AND expires <= UNIX_TIMESTAMP()
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
Переменные используются в файле конфигурации
\L — логин пользователя
\R — IP-адрес клиента
Вот и все.
В идеале вам также понадобится какой-нибудь cron-скрипт для очистки таблицы паролей с истекшим сроком действия.
Теги: #MySQL #pure-ftpd #двухэтапная проверка #информационная безопасность
-
Кеттелл, Джеймс Маккин
19 Dec, 24 -
Анкара
19 Dec, 24 -
Форекс. Игра Или Бизнес?
19 Dec, 24 -
Необычайный Ажиотаж Вокруг App Store
19 Dec, 24 -
Openoffice.org 2.2.0
19 Dec, 24