Настройка ftp vsftpd

Тема в разделе "Администрирование серверов", создана пользователем djav, 11 апр 2013.

Модераторы: mefish, stooper
  1. djav

    djav Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    116
    Симпатии:
    49
    Прошу помочь в решение следующей проблемы.
    Ftp Server - Vsftpd
    Машина - VPS + ISPManger
    завел пользователя, назначил ему сайт.
    Когда пытаюсь залогиниться то логи такие:

    Код:
    Статус:Соединяюсь с 46.38.xx.xxx:21...
    Статус:Соединение установлено, ожидание приглашения...
    Ответ:220 Welcome to bla-bla
    Команда:USER xxxxx
    Ответ:331 Please specify the password.
    Команда:PASS ********
    Ответ:230 Login successful.
    Команда:SYST
    Ответ:215 UNIX Type: L8
    Команда:FEAT
    Ответ:211-Features:
    Ответ:EPRT
    Ответ:EPSV
    Ответ:MDTM
    Ответ:PASV
    Ответ:REST STREAM
    Ответ:SIZE
    Ответ:TVFS
    Ответ:UTF8
    Ответ:211 End
    Команда:OPTS UTF8 ON
    Ответ:200 Always in UTF8 mode.
    Статус:Соединение установлено
    Статус:Получение списка каталогов...
    Команда:PWD
    Ответ:257 "/"
    Команда:TYPE I
    Ответ:200 Switching to Binary mode.
    Команда:PASV
    Ошибка:Превышено время ожидания соединения
    Ошибка:Не могу получить список каталогов! 

    И на этом все. Каталоги не показываются

    Вот конфиг vsftpd
    Код:
    # Example config file /etc/vsftpd/vsftpd.conf
    #
    # The default compiled in settings are fairly paranoid. This sample file
    # loosens things up a bit, to make the ftp daemon more usable.
    # Please see vsftpd.conf.5 for all compiled in defaults.
    #
    # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
    # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
    # capabilities.
    #
    # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
    anonymous_enable=NO
     
    #
    # Uncomment this to allow local users to log in.
    local_enable=YES
     
    #
    # Uncomment this to enable any form of FTP write command.
    write_enable=YES
    #
    # Default umask for local users is 077. You may wish to change this to 022,
    # if your users expect that (022 is used by most other ftpd's)
    local_umask=022
    #
    # Uncomment this to allow the anonymous FTP user to upload files. This only
    # has an effect if the above global write enable is activated. Also, you will
    # obviously need to create a directory writable by the FTP user.
    anon_upload_enable=NO
    #
    # Uncomment this if you want the anonymous FTP user to be able to create
    # new directories.
    #anon_mkdir_write_enable=YES
    #
    # Activate directory messages - messages given to remote users when they
    # go into a certain directory.
    dirmessage_enable=YES
    #
    # The target log file can be vsftpd_log_file or xferlog_file.
    # This depends on setting xferlog_std_format parameter
    xferlog_enable=NO
    #
    # Make sure PORT transfer connections originate from port 20 (ftp-data).
    connect_from_port_20=NO
    #
    # If you want, you can arrange for uploaded anonymous files to be owned by
    # a different user. Note! Using "root" for uploaded files is not
    # recommended!
    #chown_uploads=YES
    #chown_username=whoever
    #
    # The name of log file when xferlog_enable=YES and xferlog_std_format=YES
    # WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
    xferlog_file=/var/log/xferlog
    #
    # Switches between logging into vsftpd_log_file and xferlog_file files.
    # NO writes to vsftpd_log_file, YES to xferlog_file
    xferlog_std_format=YES
    log_ftp_protocol=YES
    #
    # You may change the default value for timing out an idle session.
    idle_session_timeout=600
    #
    # You may change the default value for timing out a data connection.
    data_connection_timeout=120
    #
    # It is recommended that you define on your system a unique user which the
    # ftp server can use as a totally isolated and unprivileged user.
    #nopriv_user=ftpsecure
    #
    # Enable this and the server will recognise asynchronous ABOR requests. Not
    # recommended for security (the code is non-trivial). Not enabling it,
    # however, may confuse older FTP clients.
    #async_abor_enable=YES
    #
    # By default the server will pretend to allow ASCII mode but in fact ignore
    # the request. Turn on the below options to have the server actually do ASCII
    # mangling on files when in ASCII mode.
    # Beware that on some FTP servers, ASCII support allows a denial of service
    # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
    # predicted this attack and has always been safe, reporting the size of the
    # raw file.
    # ASCII mangling is a horrible feature of the protocol.
    #ascii_upload_enable=YES
    #ascii_download_enable=YES
    #
    # You may fully customise the login banner string:
    ftpd_banner=Welcome to xxxx
    #
    # You may specify a file of disallowed anonymous e-mail addresses. Apparently
    # useful for combatting certain DoS attacks.
    #deny_email_enable=YES
    # (default follows)
    #banned_email_file=/etc/vsftpd/banned_emails
    #
    # You may specify an explicit list of local users to chroot() to their home
    # directory. If chroot_local_user is YES, then this list becomes a list of
    # users to NOT chroot().
    chroot_local_user=YES
    #chroot_list_enable=YES
    # (default follows)
    #chroot_list_file=/etc/vsftpd/chroot_list
    #
    # You may activate the "-R" option to the builtin ls. This is disabled by
    # default to avoid remote users being able to cause excessive I/O on large
    # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
    # the presence of the "-R" option, so there is a strong case for enabling it.
    #ls_recurse_enable=YES
    #
    # When "listen" directive is enabled, vsftpd runs in standalone mode and
    # listens on IPv4 sockets. This directive cannot be used in conjunction
    # with the listen_ipv6 directive.
    listen=YES
    #
    # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
    # sockets, you must run two copies of vsftpd with two configuration files.
    # Make sure, that one of the listen options is commented !!
    #listen_ipv6=YES
     
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    local_root=/var/www

    Пробовал играться с local_root, не помогло. По факту структура где находится сайт это /var/www/xxxx/data/www и в этом списке все сайты.

    З.Ы. xxxx- это скрытые символы.
     
  2. unkn0wn

    unkn0wn

    Регистр.:
    22 дек 2006
    Сообщения:
    163
    Симпатии:
    86
    Попробуй в активном режиме подключаться, пассивный фтп иногда криво работает, если на сервере есть зарубки файрвола.
     
  3. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    или настройте фаяр для работы с пассивным режимом, в vsftpd можно задать диапазон портов для пассивного режима
     
  4. djav

    djav Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    116
    Симпатии:
    49
    Товарищи, советы это хорошо, но что и как делать не написали (руководство дайте, т.е зайди сюда и сделай то)
     
  5. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    покажите вывод iptables -xvnL
     
  6. stooper

    stooper hoster

    Moderator
    Регистр.:
    14 апр 2006
    Сообщения:
    528
    Симпатии:
    312
    не могу понять, а причем тут фаерволл и пассивный режим? :)
    когда Fw блокирует доступ, то vsftpd показывает вот такое:
    а здесь есть коннект, судя по логу. к стати, до кучи, но vsftpd.log тоже надо смотреть, там сообщения все валятся, а не в лог соединения ;)
    и так... если вы все таки хотите добавить опцию работы в пассивном режиме, то для этого:
    убедитесь(на всякий случай), что пассивный режим включен:
    определите порты для установки пассивного соединения:
    откройте диапазон на fw:
    это то, что касается работы в пассивном режиме. а теперь к вашему вопросу)))))
    listen=YES
    connect_from_port_20=YES
    local_enable=YES
    write_enable=YES
    async_abor_enable=YES
    xferlog_enable=YES
    vsftpd_log_file=/var/log/vsftpd.log
    local_root=/var/username - определите каталог для доступа
    nopriv_user=username -
    chroot_local_user=YES
    background=YES
    вот и всё, что нужно для работы.
    и самое важное - это как раз то, что как раз могло вызвать вашу проблему:
    chown username /var/username
    если у вас юзер vsftpd, и local_root = /var/www/xxx, то будет выглядеть как
    chown vsftpd /var/www/xxx
    т.е. сделать надо обязательно юзера владельцем локал_рут каталога. конечно этот юзер должен быть заведен в системе и иметь права доступа на каталог, к которому вы подключаетесь по фтп (и желательно, что бы юзер был без шелла, т.е. с /sbin/nologin)
     
  7. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    ну во первых молодой человек учите мат. часть, узнайте как работает пассивный режим фтп, и какие есть побочные эффекты когда недоступны его порты чтобы не задавать таких вопросов,

    во вторых Вы сами указали правило для фаервола чтобы заработал пассивный режим, вот Вам и прямая связь

    к томуже еще надо и правило для 21 порта, но судя по логу он открыт
     
  8. stooper

    stooper hoster

    Moderator
    Регистр.:
    14 апр 2006
    Сообщения:
    528
    Симпатии:
    312
    так я же написал, что во первых - пассивный режим, что бы заработал - нужно настроить конфиг. где вы увидели в конфиге ТС-а, что в обще его vsftpd настроен на работу в пассивном режиме? нигде! он не настроен. это раз. второе - когда фаевролл блокирует вы либо в обще не можете соединиться, либо после соединения получаете No route to host из-за того, что закрыты этим самые FTP-data порты, о которых шла речь.
    ПС: я настроил не один и даже не пару vsftpd, после того как перешел на него с proftpd, но ваш совет по поводу матчасти обязательно учту :D
     
  9. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    Вы снова почти ответили на свой вопрос, из за недоступности дата портов возникает такая ситуация как у ТС в логах
    управляющий порт доступен, логин/пароль проходит, но получить листинг файлов и т.д. уже не может

    чтобы не флудить в теме, просто настройте по указанному Вами же конфигу фтп с пассивным режимом, сделайте
    Код:
    -A RH-Firewall-1-INPUT -p tcp --dport 10000:11010 -j DROP
    и помотрите на результат

    з.ы. настроили это хорошо, но читать и понимать как это все работает было бы тоже не плохо
     
  10. djav

    djav Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    116
    Симпатии:
    49
    Код:
    [root@imho ~]# iptables -xvnL
    Chain INPUT (policy ACCEPT 776040 packets, 186975559 bytes)
        pkts      bytes target     prot opt in     out     source               destination
      776040 186975559 ISPMGR     all  --  *      *       0.0.0.0/0            0.0.0.0/0
     
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
        pkts      bytes target     prot opt in     out     source               destination
     
    Chain OUTPUT (policy ACCEPT 583235 packets, 937296091 bytes)
        pkts      bytes target     prot opt in     out     source               destination
      583235 937296091 ISPMGR     all  --  *      *       0.0.0.0/0            0.0.0.0/0
     
    Chain ISPMGR (2 references)
        pkts      bytes target     prot opt in     out     source               destination