The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Введение в безопасный FTP-демон vsftpd (ftp inetd)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ftp, inetd,  (найти похожие документы)
From: Лебедев Александр Сергеевич <slice(at)list.ru> Newsgroups: http://www.linuxfocus.org Date: Mon, 20 Dec 2004 18:21:07 +0000 (UTC) Subject: Введение в безопасный FTP-демон vsftpd Оригинал: http://www.linuxfocus.org/Russian/July2004/article341.shtml Автор Mario M. Knopf <netzmeister/at/neo5k/dot/org> Перевод на Русский: Лебедев Александр Сергеевич <slice(at)list.ru> Резюме: Эта статья описывает основные возможности "Very Secure FTP Daemon". Я начну с описания основ работы FTP и vsftpd. После этого мы произведем установку и настройку vsftpd-демона. И закончим тестом работоспособности нашего сервера. Введение File Transfer Protocol (FTP) предназначен для передачи данных в интернете независимо от платформы на которой он установлен, он основан на клиент/сервер архитектуре. RFC 959 ftp://ftp.rfc-editor.org/in-notes/rfc959.txt определяет FTP разделив его на 2 различных канала. Один служит для отправки данных (через TCP-порт 20), а другой для передачи комманд (TCP-порт 21). Этим каналом управляют клиент и сервер, обмениваясь друг с другом информацией о передаваемых данных. FTP соединение происходит в несколько этапов: * Авторизация пользователя * Установление соединения на 21 порт * Установка соединения на 20 порт * Закрытие соединения Контроль над передачей данных выполняет протокол TCP (Transmission Control Protocol), который гарантирует получателю доставку сообщения, поэтому FTP нет необходимости проверять были ли пакеты потеряны и произошли ли какие-нибудь ошибки во время их передачи. TCP гарантирует, пришли ли они без ошибок и в правильной последовательности. Передача данных происходит тремя различными способами маркировки потока, которые могут означать конец файла (EOF) или двумя другими, использующими маркировку конца записи (EOR). * Поток * Блок * Сжатие Определяют еще два различных режима: * ASCII-режим * Binary-режим ASCII-режим используется для передачи текстовой информации, а бинарный - для передачи других данных, обычно программ. Пользователю не нужно менять режимы при передачи своих данных, обычно функции определения их типа выполняет FTP-клиент. Каждый пользователь должен понять, что пароли, передаваемые при авторизации, не шифруются , и на это нужно особо обратить внимание. Над этим стоит серьезно призадуматься. В октябре 1997 в RFC 2228 ftp://ftp.rfc-editor.org/in-notes/rfc2228.txt были опубликованы некоторые поправки, касающиеся безопасности FTP. vsftpd vsftpd - представляет собой сервер для Linux-подобных операционных систем, он запускается на таких платформах как Linux, *BSD, Solaris, HP-UX и IRIX. Он включает в себя множество полезных функций, которых нет в других FTP-серверах. Такие как: * высокие требования к безопасности * контроль над полосой пропускания канала * хорошая расширяемость * возможность создавать виртуальных пользователей * поддержка IPnG * высокая производительность * возможность устанавливать виртуальные IP-адреса * высокая скорость работы Название vsftpd произошло от "very secure FTP deamon" (чрезвычайно безопасный FTP-демон) который разрабатывается под руководством Chris Evans. С самого начала этапа разработки FTP-сервера, безопасности уделялось особое внимание. К примеру, vsftpd можно запустить в chroot-среде. Это означает, что программа ( vsftpd)создает для нее новую корневую директорию (l), к которой не будут иметь доступ внешние программы или файлы. Поэтому, если FTP-сервер будет скомпрометирован злоумышленником, он не сможет выйти за пределы этой директории и нанести вред системе. Больше информации о chroot вы можете подчерпнуть из другой статьи http://www.linuxfocus.org/Russian/January2002/article225.shtml Следующая статья http://vsftpd.beasts.org/DESIGN также рекомендуется к прочтению об этом интересном механизме безопасности в vsftpd Среди многих требований предъявляемых к FTP-серверу, безопасность имеет наибольший приоритет, и в этом плане vsftpd значительно превосходит другие FTP-сервера. Достаточно упомянуть WU-FTPD[5] в котором было выявлено огромное количество ошибок за последние несколько лет. Инсталляция Установку vsftpd можно легко произвести из rpm-пакета, который входит во многие дистрибутивы. Также его можно установить из исходников, которые можно найти здесь http://www.vsftpd.beasts.org/ После того как вы скачали и распаковали архив с исходниками, зайдите в созданную распаковщиком директорию и запустите make. Ниже показан один из способов, как можно это сделать: neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gz neo5k@phobos> cd vsftpd-x.x.x neo5k@phobos> make Настоятельно рекомендуется проверить существует ли пользователь "nobody", а также проверить наличие директории "/usr/share/empty" и если ее нет, то создать ее. Если планирутся предоставить доступ анонимным пользователям, то также потребуется создать пользователя"ftp" и предоставить ему домашнюю директорию "/var/ftp". Это можно сделать при помощи следующих комманд: neo5k@phobos> mkdir /var/ftp neo5k@phobos> useradd -d /var/ftp ftp Для обеспечения безопасности директория"/var/ftp" не должна принадлежать пользователю"ftp" с правами записи. Следующие две команды позволяют сменить владельца папки и отобрать у него эти привелегия. neo5k@phobos> chown root.root /var/ftp neo5k@phobos> chmod og-w /var/ftp После всего этого мы можем приступить к установке vsftp-демона: neo5k@phobos> make install Man-страницы, а также сама программа должны быть скопированы в надлежащие директории. В случае каких-нибудь проблем сделайте это самостоятельно. neo5k@phobos> cp vsftpd /usr/sbin/vsftpd neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5 neo5k@phobos> cp vsftpd.8 /usr/share/man/man8 Пока не скопирован конфигурационный файл - сделаем наше вступление более доступным - начнем новый раздел: neo5k@phobos> cp vsftpd.conf /etc Конфигурирование Файл конфигурации может быть найден в директории "/etc" под именем "vsftpd.conf". Как и в большинствах конфигурационных файлах комментарий обозначается знаком #("решетка"). # Это - комментарий # Простейшая конфигурация демона может выглядеть примерно вот так: # Разрешать ли анонимный доступ ? YES/NO anonymous_enable=NO # Разршать ли загрузку файлов анонимному пользователю? YES/NO anon_upload_enable=NO # Разрешать ли анонимному пользователю создавать свои директории ? YES/NO anon_mkdir_write_enable=NO # Разрешать ли пользователю производить операции с записью, такие как # перименование или удаление ? YES/NO anon_other_write_enable=NO # Регистрировать ли сообщения локальных пользователей ? YES/NO local_enable=YES # Должны ли пользователи находится только в своих директориях ? YES/NO chroot_local_user=YES # Максимальная скорость передачи данных для зарегистрированных # пользователей. По-умолчанию = 0 (неограниченная). local_max_rate=7200 # Разрешать ли запись в каталог ? YES/NO write_enable=YES # Включать сообщения при смене директории ? YES/NO dirmessage_enable=YES # Показ баннера при регистрации пользователя. ftpd_banner="Welcome to neo5k's FTP service." # Включить регистрацию событий ? YES/NO xferlog_enable=YES # Регистрировать все ативные FTP-соединения ? YES/NO # Осторожно! Возможно на экране будет огромное количество информации. log_ftp_protocol=NO # Разрешать соединения только на порт 20 (ftp data) ? YES/NO connect_from_port_20=YES # Таймаут сессии idle_session_timeout=600 # Таймаут передачи данных data_connection_timeout=120 # Предоставлять вход через Pluggable Authentication Modules (PAM) pam_service_name=vsftpd # Запускать вручную ? YES/NO - зависит от режима (inetd, xinetd, Standalone). # У автора FTP-сервис запускается через xinetd, поэтому у него стоит значение NO. listen=NO Запуск FTP-службы vsftpd может быть запущен тремя различными способами. Первый способ - запуск через inetd или xinetd, третий - запускать сервер вручную. inetd Если FTP-сервис должен запускаться через inetd, то следует поместить следующие строчки в конфигурационный файл "/etc/inetd.conf" : neo5k@phobos> vi /etc/inetd.conf Далее, надо найти строку, в которой упоминается FTP, раскомментировать ее, и в конце строки вписать vsftpd . Затем следует перезапустить inetd. У вас должно получиться примерно так, как показано ниже: # ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd xinetd Рекомендуется запускать vsftp именно таким способом, так как xinetd намного новее, чем inetd. В нем есть такие вещи как регистрация запросов, контроль доступа, привязка сервиса к определенному сетевому интерфейсу и т.д. Очень хорошая статья, посвященная xinetd находиться здесь (http://www.linuxfocus.org/Russian/November2000/article175.shtml). После изменений в конфигурационном файле перезапустите xinetd . Этот файл может выглядеть примерно вот так: # vsftp daemon. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10 } Ручной способ Существует также возможность запуска vsftp вручную. Для этого откройте его конфиг и внесите следующие изменения: # Должен ли vsftpd-демон запускаться вручную? YES/NO listen=YES После этого можно запустить сервер: neo5k@phobos> /usr/sbin/vsftpd & А если было правильно указано, в какой папке искать в первую очередь, то просто: neo5k@phobos> vsftpd & Просмотреть, является ли эта папка проверяемой по-умолчанию можно вот так: neo5k@phobos> echo $PATH /usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin Естественно, если мы запускаем сервер вручную, мы должны убедиться, что сервер не запущен при помощи inetd или xinetd. Проверка работы После удачной инсталляции и конфигурирования давайте проверим доступ к FTP-серверу: neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to neo5k's FTP service." Name (phobos:neo5k): testuser 331 Please specify the password. Password: 230 Login successful Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -l 229 Entering Extended Passive Mode 150 Here comes the directory listing drwxr-xr-x 11 500 100 400 May 07 16:22 docs drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds drwxr-xr-x 39 500 100 4168 May 10 09:15 projects 226 Directory send OK. ftp> Вывод Как вы наверно уже убедились, vsftp не является сложным ни в инсталляции, ни в конфигурировании. Однако он является достаточно функциональным средством и предоставляет высокий уровень безопасности. Конечно, эта статья описывает лишь малую часть того, что может предоставить нам vsftpd, раскрыты не все аспекты его конфигурирования. Если вы хотите найти больше информации о vsftpd , то вы можете посетить его домашнюю страничку http://www.vsftpd.beasts.org/ и прочитать более подробную документацию. Webpages maintained by the LinuxFocus Editor team © Mario M. Knopf "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org Translation information: de --> -- : Mario M. Knopf <netzmeister/at/neo5k/dot/org> de --> en: Juergen Pohl <sept.sapins/at/verizon.net> en --> ru: Лебедев Александр Сергеевич <slice(at)list.ru>

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, hookymars (?), 14:51, 02/12/2005 [ответить]  
  • +/
    Не могу нормально работать под xineted работает только при 127.0.0.1, а сели удаленно то не может соеденится с сервером. Если запустить в ручну то все нормально
     
  • 2, RAmil (?), 16:43, 10/08/2010 [ответить]  
  • +/
    [root@zero xinetd.d]# cat /etc/xinetd.d/vsftpd
    # default: off
    # description: The vsftpd FTP server.
    service ftp
    {
            disable         = no
            only_from       += 0/0 # << доступ из вне!
            socket_type     = stream
            protocol        = tcp
            wait            = no
            user            = root
            nice            = 10
            rlimit_as       = 64M
            server          = /usr/sbin/vsftpd
    #       server_args     =
    }
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру