Ошибка обновления proftpd
На сервере под управлением FreeBSD 8.2-RELEASE в качестве ftp-сервера работает proftpd. 23 декабря команда безопасности The FreeBSD Project опубликовала бюллетень, в котором указывается на уязвимость при запуске ProFTPD в chroot-окружении. Уязвимость заключается в возможности выполнения произвольного кода пользователем, попавшего в chroot-окружение демона ftpd (если он так сконфигурирован). Но, в процессе обновления до требуемой последней версии proftpd-1.3.3g возникла ошибка. |
При выполнении обновления установленных портов выскочила такая ошибка:
# portsnap fetch update # portaudit -Fda auditfile.tbz 100% of 71 kB 60 kBps New database installed. Database created: вторник, 27 декабря 2011 г. 13:30:00 (MSK) Affected package: proftpd-1.3.3g Type of problem: proftpd -- arbitrary code execution vulnerability with chroot. Reference: http://portaudit.FreeBSD.org/022a4c77-2da4-11e1-b356-00215c6a37bb.html 1 problem(s) in your installed packages found. You are advised to update or deinstall the affected package(s) immediately. # portupgrade -v -a ... ! ftp/proftpd (proftpd-1.3.3g) (linker error)
Ошибка компиляции выглядит следующим образом:
# cd /usr/ports/ftp/proftpd # make config # make reinstall clean ... src/fsio.o(.text+0x98): In function `sys_chroot': : undefined reference to `__FreeBSD_libc_enter_restricted_mode' libtool: link: rm -f ".libs/proftpdS.o" gmake: *** [proftpd] Ошибка 1 *** Error code 1 Stop in /usr/ports/ftp/proftpd. *** Error code 1 Stop in /usr/ports/ftp/proftpd.
Как видно из ошибки, компилятору не достает ссылки на __FreeBSD_libc_enter_restricted_mode
, берущейся из какой-то libc
библиотеки. По всей видимости ее необходимо обновить вручную. Только вот в какой библиотечке дело?
Проблема разрешилась после выполнения команды freebsd-update
:
# freebsd-update fetch # freebsd-update install
Т.е. мной были получены и установлены последние двоичные обновления к FreeBSD (не забывайте, что команда применима только к последним RELEASE: 7.4 или 8.2). После этих действий ошибка обновления ProFTPD пропала.
P.S. не забудьте после обновления выполнить # /usr/local/etc/rc.d/proftpd restart
.
не забывайте, что команда применима только к последним RELEASE: 7.4 или 8.2
Поясните, пожалуйста, почему только к этим версиям??? на 7.2 так обновится нельзя?
Да, команда такого обновления применима только к последним релизам FreeBSD. Если вы хотите обновиться с более раннего релиза – вам необходимо прочитать эту статью: http://www.freebsd.org/doc/en/books/handbook/makeworld.html
если же вы желаете обновиться с помощью команды freebsd-update, то сперва необходимо пройти процедуру freebsd-update -r 8.2-RELEASE upgrade (или 7.4-RELEASE, в зависимости от ветки)…
Эх, а вот мне что-то не помогло…
Обновил 7.4 с помощью # freebsd-update fetch # freebsd-update install
Поставил из портов новый “proftpd-1.3.3g_2”, но он, зараза, все-равно:
———лог proftpd——-
FTP session opened.
Preparing to chroot to directory ‘/usr/home/someuser’
error: FreeBSD with vulnerable chroot (FreeBSD-SA-11:07.chroot)
chroot to ‘/usr/home/someuser’ failed for user ‘someuser’: Operation not permitted
error: unable to set default root directory
FTP session closed.
———————————
Ну, думаю, ладно, тогда “пересобирем мир” – скачал патч
# fetch http://security.FreeBSD.org/patches/SA-11:07/chroot7.patch
Применил этот патч:
# patch < chroot7.patch
пересобрал мир и установил его:
# make buildworld
# make installkernel
Ребутнулся. Снова перекомпилил proftpd-1.3.3g_2 из портов….
Та же проблема – те же ошибки.
PS: Конфиг proftp.conf не менял.
Ключевой параметр указан так:
DefaultRoot ~
Есть мысли???
Может как-то по другому надо кофиг писать?
Задача – ограничить пользователя только его домашней директорией.
На одном из серверов с freebsd 8.2 amd64 столкнулся с такой же проблемой после обновления proftpd до версии 1.3.3g. Немного погуглив решения пока не нашел – в итоге снес proftpd и поставил pure-ftpd – с ним все прекрасно работает …
Ну, как-то уж слишком радикально! :)