FTP сервера

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Содержание

FTP

Общее

Назначение: Этот документ затрагивает основные аспекты настройки и управления vsftpd. Аудитория: Документ создан для каждого кто хочет настроить свой собственный vsftpd в качестве FTP сервера. Необходимые требования: Установленная ОС Fedora, TCP/IP и DNS настроены. Учётные записи пользователей добавлены и есть доступ к паролю root. Настройка файрвола разрешает доступ к портам, и у пользователя есть базовые знания по командам vi и bash. Документы по теме: Инструкция по установке Fedora. Основы использования Fedora и получение доступа к CLI. DNS для настройки разрешения имен. UserAccounts инструкция для создания пользователей и групп. ConfiguringServices охватывает настройку служб. Ведущий Автор: MikeDittmeier

Вступление

FTP сервер vsftpd это демон, который позволяет остальным компьютерам получать доступ к файлам, используя FTP клиент на удалённом компьютере. Сервер FTP позволяет распределять ресурсы между анонимными и зарегистрированными пользователями.

Пакетные средства

Эта статья использует следующие пакеты из репозитория Fedora:

Установка

Чтобы проверить установлен ли vsftpd наберите:

rpm -q vsftpd

на экране вы увидите следующее:

vsftpd-2.2.2-7.fc14.x86_64

Если нет, тогда установите vsftpd следующей командой:

su -c 'yum install -y vsftpd system-config-vsftpd'

Для графической установки, используйте Приложения > Установка и удаление программ. Потребуется пароль root для запуска. С левой стороны выберите группу СЕРВЕРЫ, а затем выберите опцию Very Secure FTP Daemon в правом окне. Нажмите кнопку Применить, чтобы программное обеспечение и все зависимости были установлены. Чтобы vsftpd запускался после перезагрузки наберите следующую команду в консоли:

su -c 'chkconfig --levels 345 vsftpd on'

Настройка VSFTPd

Для настройки FTP сервера используются три главных файла конфигурации :

Перевод VSFTPd сервера в пассивный режим

Добавим две строки в файл : /etc/vsftpd/vsftpd.conf

connect_from_port_20=NO
pasv_min_port=50000
pasv_max_port=50100

Это означает, что для доступа к FTPd в пассивном режиме будут использованы порты tcp с 50000 по 50100. Для внесения изменений перегружаем ftpd сервер:

su -c 'service vsftpd restart'

Также не забываем при включенном firewall открыть соответствующие порты в iptables, вот что нужно добавить в файл: /etc/sysconfig/iptables перед строкой -A INPUT -j REJECT --reject-with icmp-host-prohibited

-A INPUT -m state --state NEW -m tcp -p tcp --dport 50000:50100 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Также для внесения изменений не забываем перегрузить правила iptables

su -c 'service iptables restart'

Использование виртуальных пользователей в VSFTPd

Проверям установлен ли пакет db4-utils, и если не установлен то устанавливаем его:

su -c 'yum install db4-utils'

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

su -c 'vi /etc/vsftpd/virtual-users.txt'

Заполняем этот файл виртальными аккаунтами по правилу, одна строка - один логин, вторая строка пароль и т.д.

VUSER1
PASSWORD1
VUSER2
PASSWORD2
...

Расставим соответсвующие права на файлы и преобразуем полученый текстовый файл в файл базы данных

su -c 'chmod 600 /etc/vsftpd/virtual-users.txt'
su -c 'db_load -T -t hash -f /etc/vsftpd/virtual-users.txt /etc/vsftpd/virtual-users.db'
su -c 'chmod 600 /etc/vsftpd/virtual-users.db'

Создаем новый файл :

su -c 'vi /etc/pam.d/vsftpd'

С содержимым :

#%PAM-1.0
auth    required        pam_userdb.so   db=/etc/vsftpd/virtual-users
account required        pam_userdb.so   db=/etc/vsftpd/virtual-users

Создаем директорию

su -c 'mkdir /etc/vsftpd/vsftpd_user_conf'

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

cat /etc/vsftpd/vsftpd_user_conf/vuser1
local_root=/var/ftpusers/vuser1

В даном случае параметр local_root определяет место для файлов для виртуального пользователя vuser1.

Добавим несколько строк в файл : /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
guest_username=ftpuser # пустой ( /sbin/nologin ) системный аккаунт для использования ВСЕМИ виртуальными пользователями

И для задействования всех изменений перезапускаем VSFTPd сервер :

su -c 'service vsftpd restart'

Включение SSL/TLS в VSFTPd

Создаем самоподписаный сертификат

cd /etc/pki/tls/certs 
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem 

Заполняем сертификат

Country Name (2 letter code) [EN]: RU # Страна
State or Province Name (full name) [Some-State]: Russia # штат
Locality Name (eg, city) []: Saratov # Город
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Home # Компания
Organizational Unit Name (eg, section) []: IT Solution # Департамент
Common Name (eg, YOUR name) []: ftp.home # имя сервера в FQDN
Email Address []: xxx@home # email address

Изменяeм права на файл :

su -c 'chmod 600 vsftpd.pem'

Добавим несколько строк в файл : /etc/vsftpd/vsftpd.conf

ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES

И перегружаем ftpd сервер :

su -c 'service vsftpd restart' 

Для доступа к ssl/tls ftpd серверу с консоли можно использовать lftp, для графического доступа Filezilla

Виртуальные хосты

В отличие от протокола http, протокол фтп не поддерживает DNS и поэтому для организации виртальных ftpd на одном компьютере вы должны обеспечить второй ( для каждого виртуального хоста свой ) IP адрес. Это может быть даже альяс на сетевой интерфейс.

Копируем файл конфигурации :

su -c 'cp /etc/vsftpd/vsftpd.conf /etc/vsftpd2.conf'

Добавляем строчку в файл /etc/vsftpd/vsftpd.conf указывающую на каком адресе слушать входящие соединения :

listen_address=192.168.0.1

Другой адрес добавляем файл /etc/vsftpd/vsftpd2.conf:

listen_address=192.168.0.2

Не забываем перегрузить vsftpd сервер :

su -c 'service vsftpd restart' 

Соответственно в каждом файле указываются настройки только для нужного фиртуального фтп сервера. Так же можно через firewall iptables разграничить доступ к нужному виртуальному фтп серверу.

Примечание

Файл: /etc/vsftpd/vsftpd.conf не содержит многие конфигурационные параметры. Пожайлуста прочтите man vsftpd.conf для просмотра всех опций по умолчанию.

Дополнительные материалы