• Ошибка при авторизации на VSFTPD (libgcc_s.so.1 must be installed for pthread_cancel to work) на Debian 8 Jessie.

    Развернув FTP-сервер vsftpd на Debian 8 Jessie и настроив использование виртуальных пользователей на базе MySQL, у меня при попытке подключения к FTP выдается вот такая ошибка: libgcc_s.so.1 must be installed for pthread_cancel to work.

     

    ftp 10.7.7.97
    Connected to 10.7.7.97.
    220 Jakonda FTP сервер.
    Name (10.7.7.97:jakonda): user1
    331 Please specify the password.
    Password:
    libgcc_s.so.1 must be installed for pthread_cancel to work
    Login failed.
    421 Service not available, remote server has closed connection

     

    Данная ошибка вызвана недостатком доступной процессу виртуальной памяти. Лимит определяется в значении VSFTP_AS_LIMIT в файле defs.h исходников vsftpd.

     

    Увеличить значение VSFTP_AS_LIMITможно пересобрав vsftpd из исходников, с нужным нам значением и потом установить исправленную версию. Разберем ниже как это сделать.

     

    Обновляем систему до актуального состояния:

    sudo apt-get update && sudo apt-get upgrade

     

    Устанавливаем необходимые пакеты:

    sudo apt-get install fakeroot build-essential

     

    Устанавливаем необходимые зависимости и загружаем исходник vsftpd из репозитария:

    sudo apt-get build-dep vsftpd
    sudo apt-get source vsftpd

     

    Переходим в каталог vsftpd (на момент написания статьи, версия vsftpd в репозитариях 3.0.2):

    pushd vsftpd-3.0.2/

     

    В файле defs.h находим строку — #define VSFTP_AS_LIMIT         100UL * 1024 * 1024 и приводим ее к виду — #define VSFTP_AS_LIMIT         400UL * 1024 * 1024

     

    Зафиксируем внесенные изменения (в процессе выполнения вводим имя патч-файла):

    sudo dpkg-source --commit

     

    Собираем пакет:

    sudo fakeroot dpkg-buildpackage

     

    Выходим из каталога:

    popd

     

    У вас должен создаться файл vsftpd_3.0.2-1ubuntu2.14.04.1_amd64.deb .

     

    Установим его (можно устанавливать по верх уже установленного vsftpd, конфигурационный файл затронут не будет):

    sudo dpkg --install vsftpd_3.0.2-1ubuntu2.14.04.1_amd64.deb

     

    После установки пробуем подключится к FTP-серверу и на этот раз авторизация должна пройти успешно.

    ftp 10.7.7.97
    Connected to 10.7.7.97.
    220 Jakonda FTP сервер.
    Name (10.7.7.97:jakonda): user1
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Использование виртуальных пользователей хранимых в MySQL базе данных в VSFTPD

    Рассмотрим как настроить vsftpd на авторизацию виртуальных пользователей, хранимых в MySQL базе данных.

     

    Использование виртуальных пользователей повышает безопасность FTP-сервера, т. к. при авторизации не будут использоваться реальные учетные записи пользователей указанные в системных файлах /etc/passwd и /etc/shadow.

     

    # Все ниже действия производились на Debian 8 Jessie.

     

    Устанавливаем необходимые пакеты:

    apt-get install libpam-mysql mysql-server mysql-client -y

     

    Входим в  mysql:

    mysql -uroot -p

     

    Создаем базу данных пользователей:

    CREATE DATABASE vsftpd;
    GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    USE vsftpd;
    CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user VARCHAR(50) NOT NULL, passwd VARCHAR(50) NOT NULL, UNIQUE (user));
    QUIT;

     

    Создаем нового пользователя:

    USE vsftpd;
    INSERT INTO users SET user='user1', passwd='passwd';
    QUIT;

     

    Смена пароля для пользователя:

    USE vsftpd;
    UPDATE users SET passwd='passwd' WHERE user='user1';
    QUIT;

     

    Удалить пользователя:

    USE vsftpd;
    DELETE FROM users WHERE user='user1';
    QUIT;

     

    Посмотреть имеющихся пользователей в базе:

    USE vsftpd;
    SELECT * FROM users;
    +----+-------+---------+
    | id | user  | passwd  |
    +----+-------+---------+
    | 1  | user1 | 1234    |
    +----+-------+---------+

     

    Создаем файл политики PAM:

    cat << EOF > /etc/pam.d/vsftpd.virtual
    auth required pam_mysql.so user=vsftpd passwd=password host=localhost db=vsftpd table=users usercolumn=user passwdcolumn=passwd crypt=0
    account required pam_mysql.so user=vsftpd passwd=password host=localhost db=vsftpd table=users usercolumn=user passwdcolumn=passwd crypt=0
    EOF

     

    Создаем каталог для каталогов ftp виртуальных пользователей:

    mkdir /srv/vftp_users

     

    Создаем симлинк на необходимую для доступа папку в папку /srv/vftp_users с именем пользователя, например для виртуального пользователя user1 доступ к /srv/ftp:

    ln -s /srv/ftp /srv/vftp_users/user1
    ИНФОРМАЦИЯ. Для закрытия доступа пользователю можно просто удалить его текущий симлинк, а для смены рабочей папки на другую удаляем текущий симлинк и создаем новый уже на другую папку.

     

    Выставим права для пользователя ftp на папку к которой указали симлинк, т.к. виртуальные пользователи будут представляться от имени пользователя ftp:

    chown -R ftp:nogroup /srv/ftp

     

    В конфигурационный файл /etc/vsftpd.conf добавляем параметры:

    local_enable=YES
    chroot_local_user=YES
    user_sub_token=$USER
    local_root=/srv/vftp_users/$USER
    virtual_use_local_privs=YES
    guest_enable=YES
    guest_username=ftp
    write_enable=YES
    hide_ids=YES
    pam_service_name=vsftpd.virtual

     

    Небольшое пояснение по некоторым пунктам настройки:

    user_sub_token Опция для автоматического создания домашней директории каждому виртуальному пользователю, основана на шаблоне.
    local_root Перенаправление подключившихся пользователей вместо домашнего каталога, в иной каталог.
    virtual_use_local_privs Виртуальные пользователи пользуются такими же привилегиями, что и локальные.
    guest_enable Если опция установлена, все не анонимные логины классифицируются как «guest» логины.
    guest_username Задается имя пользователя гостевого логина.
    write_enable Разрешить пользователям загружать файлы на сервер.
    hide_ids Если опция установлена, вся пользовательская и групповая информация в списке директорий, выводится как «ftp».
    pam_service_name Строка содержит имя сервиса PAM, который будет использоваться vsftp.

     

    Перезапускаем службу vsftpd:

    service vsftpd restart

     

    Проверяем работу, пробуем зайти на FTP-сервер используя логин и пароль виртуального пользователя.

    БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 5,00 из 5)
    Загрузка...
  • Доступ пользователей в VSFTPD без доступа к shell (/bin/false)

    Для обеспечения большей безопасности FTP-сервера vsftpd, запретим пользователям доступ к shell (/bin/false).

     

    Создаем пользователя без доступа к shell (/bin/false):

    sudo useradd username -b /home -m -s /bin/false

     

    Задаем пароль пользователя:

    sudo passwd username
    ИНФОРМАЦИЯ. Если необходимо отключить доступ к shell уже существующему пользователю, то в файле /etc/passwd в нужном пользователе меняем /bin/bash на /bin/false.

     

     

    По-умолчанию vsftpd настроен так что доступ к нему могут получить пользователи у которых включен shell, а пользователи у которых отключен shell не смогут авторизоваться на FTP-сервере.

     

    Для того чтобы vsftpd авторизовал пользователя с отключенным shell необходимо в файле /etc/pam.d/vsftpd закоментировать строку auth required pam_shells.so и перезапустить службу vsftpd.

    sudo service vsftpd restart

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 1,00 из 5)
    Загрузка...
  • Использование SSL-соединения в VSFTPD.

    В этой статье описано как установить и настроить FTP-сервер vsftpd. Рассмотрим как организовать на vsftpd подключения пользователей с использованием SSL-шифрования.

     

    Создаем самоподписной SSL-сертификат для vsftp (В процессе создания сертификата, нужно будет ответить на ряд формальных вопросов):

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.crt
    ИНФОРМАЦИЯ. Можно так же использовать сертификат выданный местным ЦА или купленным.

     

    В конфигурационном файле /etc/vsftpd.conf указываем путь к сертификату и его закрытому ключу:

    rsa_cert_file=/etc/ssl/private/vsftpd.pem
    rsa_private_key_file=/etc/ssl/private/vsftpd.pem

     

    Так же указываем параметры SSL Приводим следующие параметры к виду:

    ssl_enable=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    ssl_tlsv1=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_ciphers=DES-CBC3-SHA
    require_ssl_reuse=NO

    Небольшое пояснение по некоторым пунктам настройки:

    allow_anon_ssl Если установлена в YES, анонимные пользователи могут использовать защищенное SSL соединение.
    force_local_data_ssl Если установлена в YES, все не анонимные логины вынуждены использовать защищенные SSL соединения при передаче и получении данных, при соединении.
    force_local_logins_ssl Если она активирована, все не анонимные логины вынуждены использовать защищенные SSL соединения при передаче паролей.
    ssl_ciphers Задается допустимые методы шифрования.
    require_ssl_reuse Многократное использование одной сессии.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Установка и настройка FTP сервера VSFTPD на Debian 8 Jessie.

    Разберем как установить и настроить FTP-сервер VSFTPD на на Debian 8 Jessie.

     

    Перед установкой, обновляем систему до актуального состояния:

    sudo apt-get update && sudo apt-get upgrade

     

    Установка и настройка

    Устанавливаем vsftpd:

    sudo apt-get install vsftpd

     

    Настройка vsftpd производится через конфигурационный файл /etc/vsftpd.conf.

     

    Конфигурация FTP-сервера, для работы с анонимными пользователями:

    listen=YES
    anonymous_enable=YES
    anon_root=/srv/ftp
    use_localtime=YES
    connect_from_port_20=YES
    dirmessage_enable=YES
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log

     

    Создаем ftp каталог который указали в файле конфигурации vsftpd и задаем права доступа:

    mkdir -p /srv/ftp
    
    chown nobody:nogroup /srv/
    chmod 775 /srv
    chmod 777 /srv/ftp

     

    Перезапускаем vsftpd:

    sudo /etc/init.d/vsftpd restart

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (2 голос(ов), в среднем: 4,00 из 5)
    Загрузка...
© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика