klink0v (klink0v) wrote,
klink0v
klink0v

Что ж вы, твари*, с vsftpd сделали?

* до недавного времени ссылка на офсайт vsftpd читалась как "http://vsftpd.beasts.org". "Beast" по-английски означает "тварь, зверь, скотина".

В принципе, хороший был FTP-сервер. До поры до времени он меня полностью устраивал. Лёгкий, малокушающий, достаточно просто настраивается и развертывается, если понимать как он устроен. Только вот его разработчики тут недавно учинили знатную подставу.

В репозиториях Debian 6 (Squeeze) лежала версия vsftpd 2.3.2. Для 7-ки (Wheezy) собрали 2.3.5. И между этими версиями автор решил сделать "чисто крутое пацанское security-усовершенствование". Он насильно запретил подключаться к серверу в том случае, если корневой каталог пользователя (chroot) доступен для записи. В таком случае демон отвечает



500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

и сразу тупо посылает клиента на три весёлые.

Ядрён-батон... Естественно, в инете со всех сторон раздался хай в адрес разработчика. Тот услышал молитвы одминов и добавил в синтаксис конфига опцию "allow_writeable_chroot". Проблема только в том, что энтот параметр появился только в 3-ей версии клиента, а в стабильных релизах Debian и Long-term Ubuntu доступна угадайте какая? Правильно, 2.3.5-ая, в которой такой опции нема.

Как поётся в веселой песенке про 1С: "Так! У меня, блин, слов не хватает бранных!". Вот и у меня тоже. И что прикажете делать простому enterprise-одмину в такой ситуации? Выключить chroot? Пробовал, не помогает. Организовать другой homedir? Это у клиентов надо менять настройки, не вариант. Потому что с той стороны файлы забирают роботы по заранее зашитым адресам. Все остальные способы, описанные в разных howto-шках не помогают. И вот почему.

В соответствии с идеологией vsftpd все пользователи (клиенты) условно делятся на три типа: анонимные, локальные (те, которые прописаны в /etc/passwd) и виртуальные (они же гости). С анонимными вроде и так всё ясно, локальные читают-пишут от своего имени, а виртуальные чисто формально имеют логин от FTP-сервера, но в контексте операций с файловой системой по понятным причинам мапятся на один и тот же системный аккаунт. Дык вот с последней категорией в самом изначальном дизайне vsftpd вечно происходит какая-то путаница. В некоторых ситуациях виртуальные пользователи расцениваются как local (локальные), в некоторых как anon (анонимные), а иногда и так и так одновременно. Соответственно, и конфигурируется вся эта радость через одно известное место (оно же филейная часть).

И сколько я не пытался играться с различными параметрами типа "chroot_local_user", "virtual_use_local_privs", "user_sub_token", "local_root" и иже с ними, всё без толку. Если я задаю "домашнюю" директорию для виртуального пользователя, то vsftpd без вариантов делает туда chroot, несмотря на то, что его об этом никто не просил. Если он делает туда chroot, то версия 2.3.5 не дает туда писать. Другую домашнюю директорию (например, уровнем выше) я задать не могу; запретить писать меня не устраивает; переделывать всех пользователей из виртуальных в локальных тоже не вариант. И что? А ничего.

В конечном итоге я взял 3-ю версию vsftpd из тестового дистрибутива (Jessie), благо, она не потянула за собой дополнительных библиотек. После чего благополучно добавил в конфиг "allow_writeable_chroot", всё взлетело. Но ёлки-палки. Внезапно меня озарило, что с vsftpd пора завязывать. В гробу я видал такую "безопасность". Пойду на Pure-FTPd. Чего и вам желаю.

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments