On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Установка FTP сервера с переназначаемым корневым каталогом (chrooted FTP server)

Это раздел вставлен Marcus J Ranum <mjr@tis.com>
  1. Пререкомпилируйте ваш ftpd без использования динамических библиотек и попестите его в каталог ~ftp/bin. Влажельцем должен быть root.

     

  2. Скомпилируйте без использования динамических библиотек программу ls и поместите ее тоже в каталог ~ftp/bin. Для Sun, можно использовать портированную из BSD версию комманы ls. Ее можно найти на ftp://ftp.tis.com/pub/firewalls/toolkit/patches/ls.tar.Z Владельцем для ls должет быть root.

     

  3. Владельцем для каталога ~ftp сделайте root и права доступа установите в 0755 (ЭТО ОЧЕНЬ ВАЖНО!)

     

  4. Создайте копии файлов ~ftp/etc/passwd и ~ftp/etc/group (незабудьте убрать пароли), владельцем должен быть root.

     

  5. Создайте программу враппер ("wrapper") (один из вариантов приведен ниже) и пропишите ее в /etc/inetd.conf


    /*

    ** Программа подразумевает, что вы выбрати в катестве базоваго каталога /var/ftp

    ** Если у вас другой каталог, то замените во всем тексте /var/ftp на полный путь

    ** к выбранному вами каталогу

    ** Прим: Не используйте для ftp катагог '/' (корневой)!

    */

    main()

    {



    if(chdir("/var/ftp")) {

    perror("chdir /var/ftp");

    exit(1);

    }

    if(chroot("/var/ftp")) {

    perror("chroot /var/ftp");

    exit(1);

    }



    /* optional: seteuid(FTPUID); */

    execl("/bin/ftpd","ftpd","-l",(char *)0);

    perror("exec /bin/ftpd");

    exit(1);

    }

    Options:

    Вы можете использовать 'netacl' из toolkit или tcp_wrappers для достижения такого же эффекта.

    Также вы можете в исходных текстах ftpd найти все места где вфзфвается ф-ция seteuid() убрать эти вызовы, и в программе "враппере" вставить вызов setuid(ftp) перед вызовом ftpd. Это предотвратит возможность подучения root привелегий, если в вашем ftpd будет найдена "дырка".

     

  6. Проследите, что бы во всей иерархии каталогов на FTP сервере были правильно устаеовленны права доступа и владельцы файлов, и никогда не размещайте на FTP исполняемые файлы (с установленным флагом executed).

     

  7. Теперь файл ~/dtp/etc/passwd полностью отдельный и независимый от системного файла /etc/passwd.

    ЗАПОМНИТЕ:

    Если через ваш ftpd кто то сможет получить привелегии "root" то это может закончиться очень печально. В связи с этим очень хорошей рекомендацией является следующее - старайтесь не запускать "демонов" от пользователя root. Многие так стартуют, но не всем им нужны root'овые привелегии. Вы можете проверить с какимы правами работают программы с помощью комманды 'ps uax'

Назад       Содержание       Вперёд