Как Сделать Обычный Ftp-Сервер По-Настоящему Безопасным И Удобным Одновременно?

Сразу оговорюсь: подробных инструкций/настроек я не даю, просто делюсь мыслями, как это сделать.

Также под 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-адреса (по умолчанию будет предложен текущий адрес).

Примерный интерфейс может выглядеть так:

Как Сделать Обычный Ftp-Сервер По-Настоящему Безопасным И Удобным Одновременно?

При создании скрипт вводит данные в таблицу базы данных (например, MySQL), а именно имя пользователя, IP-адрес и временную метку времени, указанного пользователем, а также сгенерированный пароль FTP, который отображается пользователю в интерфейс.

Этот временный пароль будет использоваться для доступа по 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 #двухэтапная проверка #информационная безопасность

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2011-04-06 15:02:00
Баллов опыта: 501
Всего постов на сайте: 2
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.