Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
21 Сентябрь 2018, 16:29:02
Новости:

Страниц: [1]   Вниз
Печать
Автор Тема: Настройка FTP сервера на примере vsftpd  (Прочитано 12171 раз)
0 Пользователей и 1 Гость смотрят эту тему.
admin
Знания не сила, сила - это воля и умение применить знания
Администратор
Бог
*****

Карма: +226/-23
Offline Offline

Пол: Мужской
Сообщений: 2142


Главный


WWW
« : 28 Сентябрь 2011, 14:16:35 »

Настройка FTP сервера в Debian 5 (Lenny)

В этой статье опишем настройку FTP сервера на базе Debian 5 (Lenny), однако данный рецепт подойдёт для любого Debian-подобного дистрибутива, включая дистрибутивы проекта и Ubuntu. Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6, SSL, виртуальные пользователи, есть контроль скорости полосы пропускания. На vsftpd работают ftp.debian.org, ftp.freebsd.org, ftp.suse.com, ftp.openbsd.org, ftp.gnu.org, ftp.kernel.org, ftp.gnome.org, ftp.gimp.org, ftp.rpmfind.net, ftp.linux.org.uk, ftp-stud.fht-esslingen.de, gd.tuwien.ac.at, ftp.sunet.se, ftp.ximian.com, ftp.engardelinux.org, ftp.sunsite.org.uk, ftp.isc.org, ftp.redhat.com.
В статье будут описаны несколько конфигураций:
Простая конфигурация. Анонимные пользователи имеют доступ только на чтение. Для записи информации на FTP сервер используется пользователь ftpuser. Разрешён доступ локальных пользователей к своим домашним каталогам.
Более сложная конфигурация. Анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся в MySQL. Каждому виртуальному пользователю можно задать свои параметры работы с FTP. Используется PAM авторизация.
Более защищённая конфигурация. Анонимные пользователи не используются. Используются только виртуальные пользователи, учётные записи которых хранятся в MySQL. Для каждого пользователя можно задать свою конфигурацию. Используется SSL.

Простая конфигурация FTP сервера

#aptitude install vsftpd
При этом создаются:
Системный пользователь ftp, который добавляется в группу nogroup
Домашняя директория пользователя ftp - /home/ftp. Интересная особенность: при установке пакета выдаётся сообщение о том, что домашний каталог НЕ создаётся!
Создаётся файл /etc/ftpusers. В нём перечислены пользователи, которым запрещён доступ к FTP.
Пользователь ftp не будет работать с FTP сервером, но он нужен для его корректной работы. Так как директория FTP сервера будет располагаться в /var/ftp, то изменим домашнюю директорию для пользователя ftp:
# usermod -d /var/ftp ftp
Удалим прежнюю директорию этого пользователя:
# rmdir /home/ftp
Теперь настроим пользователя, у которого будут права записи в корневую директорию FTP сервера:
Cоздаём группу ftpuser
# addgroup ftpuser
Создаём пользователя ftpuser, добаляем его в группу ftpuser и устанавливаем домашним каталогом директорию FTP сервера, а так же меняем пароль
#useradd -d /var/ftp -g ftpuser ftpuser
#passwd ftpuser
Создаём директорию FTP сервера и устанавливаем права:
# mkdir /var/ftp
# chmod 555 /var/ftp
# chown root:ftpuser /var/ftp
Создаём публичный каталог.
# mkdir /var/ftp/pub
# chown ftpuser:ftpuser /var/ftp/pub
Конфигурационный файл vsftpd располагается в /etc/vsftpd.conf. Сделаем его резервную копию.
#cp /etc/vsftpd.conf /etc/vsftpd.conf_old
Теперь очистим /etc/vsftpd.conf, откроем текстовым редактором:
# cat /dev/null > /etc/vsftpd.conf
# vim /etc/vsftpd.conf
и напишем:
# Запускать vsftpd в независимом режиме
listen=YES
# Делаем анонимный доступ
anonymous_enable=YES
# Анонимные входят без пароля
no_anon_password=YES
# Анонимные будут попадать в публичную директорию
anon_root=/var/ftp/pub
anon_umask=022
# Разрешаем вход локальным пользователям с правом записи в домашних директориях
local_enable=YES
write_enable=YES
local_umask=022
# Локальные пользователи будут входить только в свои домашние каталоги
chroot_local_user=YES
chroot_list_enable=NO
# Сообщения будут записываться в собственный журнал
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
Теперь перестартуем vsftpd:
/etc/init.d/vsftpd restart
Если всё работает как надо и сервер будет использоваться не только локально, то добавим ещё несколько строк после listen:
# Установки публичного FTP
max_clients=100
max_per_ip=10
hide_ids=YES
idle_session_timeout=600
data_connection_timeout=120
dirmessage_enable=YES
ftpd_banner=Welcome!
Скачать готовый конфигурационный файл можно по следующей ссылке.
 
Более сложная конфигурация

Рассмотрим более сложную конфигурацию: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся в MySQL. Каждому виртуальному пользователю можно задать свои параметры работы с FTP. Используется PAM авторизация.
За основу возьмём предыдущую конфигурацию. Установим MySQL и поддержку авторизации PAM:
# aptitude install mysql-server mysql-client libpam-mysql
Во время установки будет создан суперпользователь root для управления MySQL. Нужно будет задать пароль для этого пользователя.
Авторизуемся в MySQL:
# mysql -u root -p
Создаём базу данных для хранения информации о пользователях FTP:
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'passftpd';
FLUSH PRIVILEGES;
Создаём таблицу для хранения пользователей и паролей. Таблица называется users и содержит три поля: id — целочисленный идентификатор пользователя, login — имя пользователя и pass — пароль пользователя. Под пароль отведено 60 символов, т. к. пароли хранятся в зашифрованном виде и длина шифра на много превышает длину секретного слова. Логины пользователей в таблице будут уникальными:
USE vsftpd;
CREATE TABLE 'users' (
'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'login' VARCHAR(60) NOT NULL ,
'pass' VARCHAR(60) NOT NULL ,
UNIQUE (
'login'
)
) ENGINE = MYISAM ;
Заводим в нашей базе данных пользователя для работы.
INSERT INTO users (login, pass) VALUES('firstuser', PASSWORD('topsecret'));
Выходим из MySQL:
quit;
Открываем файл /etc/vsftpd.conf и редактируем его, чтобы получилось следующее:
# Запускать vsftpd в независимом режиме
listen=YES
# Установки для публичного FTP
max_clients=100
max_per_ip=40
hide_ids=YES
idle_session_timeout=600
data_connection_timeout=120
dirmessage_enable=YES
ftpd_banner=Welcome!
# Делаем анонимный доступ
anonymous_enable=YES
# Анонимные входят без пароля
no_anon_password=YES
# Анонимные будут попадать в публичную директорию
anon_root=/var/ftp/pub
anon_umask=022
# Гостевой вход. Не анонимный вход рассматривается как гостевой
guest_enable=YES
guest_username=ftpuser
nopriv_user=ftpuser
# Исползуем PAM
pam_service_name=vsftpd
# Виртуальные пользователи будут иметь права локальных пользователей
virtual_use_local_privs=YES
local_root=/var/ftp/$USER
user_sub_token=$USER
# Специальные настройки пользователей находятся в этой директории
user_config_dir=/etc/vsftpd/user_conf
# Разрешаем вход для теперь уже виртуальных пользователей
local_enable=YES
write_enable=YES
local_umask=022
# Виртуальные пользователи будут входить в свои «домашние» каталоги
chroot_local_user=YES
chroot_list_enable=NO
# Сообщения будут записываться в собственный журнал
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
Создаём директорию, в которой будут располагается конфигурационные файлы пользователей FTP сервера:
# mkdir -p /etc/vsftpd/user_conf
Настроим PAM авторизацию. Сделаем резервную копию файла /etc/pam.d/vsftpd
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_old
Очистим его:
# cat /dev/null > /etc/pam.d/vsftpd
И отредактируем следующим образом:
# vim /etc/pam.d/vsftpd
auth required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2
Рестартуем vsftpd:
# /etc/init.d/vsftpd restart
Создаём для пользователя firstuser директорию:
# mkdir /var/ftp/firstuser
Меняем владельца:
# chown ftpuser:nogroup /var/ftp/firstuser
Создаём файл со специальными настройками для firstuser. Для этого, в папке /etc/vsftpd_user_conf создадим файл с именем пользователя
# touch /etc/vsftpd/user_conf/firstuser
и подредактируем его:
# vim /etc/vsftpd/user_conf/firstuser
В данном файле можете зададим следующие параметры:
# Домашний каталог для пользователя firstuser. Можно задать какой #угодно путь к домашнему каталогу. Например:/var/ftp/
local_root=/var/ftp/firstuser/
# Ограничим скорость для данного пользователя
local_max_rate=15000
ну и так далее для для разных параметров.
Сохраняем файл и рестартуем vsftpd:
/etc/init.d/vsftpd restart
Создадим ещё одного пользователя: seconduser.
Mysql -u root -p
USE vsftpd;
INSERT INTO users (login, pass) VALUES('seconduser', PASSWORD('topsecret'));
quit;
Создаём для пользователя seconduser директорию:
# mkdir /var/ftp/seconduser
Меняем владельца:
# chown ftpuser:nogroup /var/ftp/seconduser
Создаём файл со специальными настройками для seconduser. Для этого, в папке /etc/vsftpd_user_conf создадим файл с именем пользователя
# touch /etc/vsftpd/user_conf/seconduser
и подредактируем его:
# vim /etc/vsftpd/user_conf/seconduser
Нарпимер, запретим запись:
write_enable=NO
Рестартуем vsftpd. Всё.
Не забываем, что владельцем корневого каталога /var/ftp должен быть пользователь ftpuser с правами 755. Если пользователю не определены персональные настройки, он будет иметь права пользователя ftpuser и попадать в его домашний каталог.
Скачать пакет файлов, используемых в статье можно по следующим ссылкам:
в формате zip

Конфигурация с шифрованием SSL

Теперь изменим нашу конфигурацию следующим образом: анонимные пользователи не используются. Используются только виртуальные пользователи, учётные записи которых хранятся в MySQL. Для каждого пользователя можно задать свою конфигурацию. Обеспечено шифрование SSL.
Установим OpenSSL:
# aptitude install openssl
Создаём директорию для сертификата
# mkdir /etc/vsftpd/ssl/
Создадим самоподписанный сертификат, срок действия которого 2 года:
openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem
В процессе создания сертификата заполняем предлагаемые поля:
Country Name: (пишем двухбуквенное название своей страны, например RU)
State or Province Name: (пишем название своего региона)
Locality Name: (пишем название своего города)
Organization Name: (пишем название своей организации)
Organization Unit Name: (пишем название подразделения организации)
Common Name: (пишем доменное имя организации)
Email Address: (пишем адрес электронной почты)
Открываем файл /etc/vsftpd.conf и редактируем его, чтобы получилось следующее:
# Запускать vsftpd в независимом режиме
listen=YES
max_clients=100
max_per_ip=10
hide_ids=YES
idle_session_timeout=600
data_connection_timeout=120
dirmessage_enable=YES
ftpd_banner=Welcome!
# Убираем анонимный доступ
anonymous_enable=NO
# Гостевой вход. Не анонимный вход рассматривается как гостевой
guest_enable=YES
guest_username=ftpuser
nopriv_user=ftpuser
# Виртуальные пользователи будут иметь права локальных пользователей
virtual_use_local_privs=YES
local_root=/var/ftp/$USER
user_sub_token=$USER
# Специальные настройки пользователей находятся в этой директории
user_config_dir=/etc/vsftpd/user_conf
# Разрешаем вход для теперь уже виртуальных пользователей
local_enable=YES
write_enable=YES
local_umask=022
# Виртуальные пользователи будут входить в свои «домашние» каталоги
chroot_local_user=YES
chroot_list_enable=NO
# Сообщения будут записываться в собственный журнал
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
# настройки SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
Рестартуем сервис
/etc/init.d/vsftpd restart
Необходимо помнить, что теперь для подключения к нашему серверу следует использовать ftp — клиент, который поддерживает шифрование. Например File Zilla.
Конфигурационный файл можно скачать здесь.

Автор: Золкин А. Н.
Записан

Страниц: [1]   Вверх
Печать
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

Страница сгенерирована за 0.092 секунд. Запросов: 20.