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, vsftpd - это Очень Безопастный (Very Secure) FTP демон, написанный с нуля. -
system-config-vsftpd, System-config-vsftpd - это графическая утилита настройки для Very Secure FTP Daemon ( VSFTPD )
Установка
Чтобы проверить установлен ли 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 сервера используются три главных файла конфигурации :
-
/etc/vsftpd/vsftpd.conf, Главный конфигурационный файл; -
/etc/vsftpd/ftpusers, Пользователи, которым запрещён доступ к ftp серверу; -
/etc/vsftpd/user_list, Управление доступом пользователей, по умолчанию пользователям перечисленым в этом файле запрещен доступ на 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
- конкретные адреса 192.168.0.1 и 192.168.0.2 указаны для примера.
Не забываем перегрузить vsftpd сервер :
su -c 'service vsftpd restart'
Соответственно в каждом файле указываются настройки только для нужного фиртуального фтп сервера. Так же можно через firewall iptables разграничить доступ к нужному виртуальному фтп серверу.
Примечание
| Файл: /etc/vsftpd/vsftpd.conf не содержит многие конфигурационные параметры. Пожайлуста прочтите man vsftpd.conf для просмотра всех опций по умолчанию. |
