Установка и настройка FTP сервера VsFTPd в Debian 7
VsFTPd ( Very secure FTP daemon ) - Быстрый и безопасный FTP сервер, легкий в установке, настройке и обслуживании.
К вышесказанному можно добавить следующие функциональные возможности:
Основные функциональные возможности VsFTPd
Настройка и использование виртуальных пользователей и IP адресов, поддержка шифрования SSL/TLS, гибкая настройка на уровне пользователей, контроль полосы пропускания, поддержка протокола ipv6 и т.д. Сокращение "...и т.д.", написано практически во всех мануалах (включая документацию разработчиков), и используется не зря, большинство функциональных возможностей ftp сервера VsFTPd раскрываются при решении каких-то не совсем стандартных задач, в данном-же опусе описывается стандартная установка и настройка VsFTPd на сервере с операционной системой Debian 7 "wheezy".Установка VsFTPd сервера и автозагрузка
Установка VsFTPd сервера ничем не отличается от установки любого другого софта в Debian, обновляем список источников пакетов затем устанавливаем сам сервер:root@debian7:/# apt-get update root@debian7:/# apt-get install vsftpd -y .................................. Starting FTP server: vsftpd.После установки VsFTPd запускается автоматически и слушает на всех сетевых интерфейсах сервера.
root@debian7:/# netstat -tupln | grep ftp tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4162/vsftpdДля управления автозагрузкой в debian можно использовать штатную утилиту update-rc.d, лично мне больше нравится псевдографическая утилита sysv-rc-conf. Ее нужно установить дополнительно, ну и дальше уже рулить автозапуском.
root@debian7:/# apt-get install sysv-rc-conf
Режимы работы FTP и настройка iptables
Упомяну парой слов фаервол iptables, режимы работы FTP сервера и используемые порты. FTP сервер использует для работы 2 порта и имеет два режима работы, активный и пассивный. Порт 21 используется для управляющего соединение ( по нему передаются команды ftp ), 20-й порт используется для передачи данных. И в активном и в пассивном режимах, FTP сервер получает запрос на установку управляющего соединения на 21-й порт, после чего: В активном режиме работы, ftp клиент отправляет номер своего порта, на который ftp сервер устанавливает соединение для передачи данных. Сервер использует на своей стороне порт 20. В пассивном режиме работы, ftp сервер отправляет клиенту номер порта из диапазона 1024-65535, на который клиент сам устанавливает соединение для передачи данных. Настройка портов для пассивного режима работы делается парой опций файла конфигурации vsftpd.conf, pasv_min_port и pasv_max_port. В соответствии с параметрами портов в файле конфигурации VsFTPd, нужно создать правила iptables (если он конечно настроен и по умолчанию блокирует порты). Если в vsftpd.conf мы прописали:pasv_min_port=60000 pasv_max_port=60100значит создадим правила iptables открывающие основные рабочие порты 20 и 21 плюс настроенный диапазон портов:
root@debian7:/# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT # управляющее соединение root@debian7:/# iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT # передача данных для активного режима root@debian7:/# iptables -A INPUT -p tcp -m tcp --dport 60000:60100 -j ACCEPT # передача данных для пассивного режиману или можно одной строкой для обоих режимов работы FTP сервера:
root@debian7:/# iptables -A INPUT -p tcp -m multiport --destination-port 20,21,60000:60100 -j ACCEPT
Настройка VsFTPd сервера
Файл конфигурации VsFTPd сервера лежит тут, /etc/vsftpd.conf. Копируем оригинал, что-бы был:root@debian7:/# cp /etc/vsftpd.conf /etc/vsftpd.conf.origБольшинство параметров ftp сервера не включены в дэфолтовый файл конфигурации vsftpd, но те что есть неплохо прокомментированы. Для полного списка опций почитайте man vsftpd.conf. Приведенного ниже конфига достаточно для обычной настройки ftp сервера, ну и плюс пара дополнительных опций.
listen=YES
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
dual_log_enable=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Разрешает вход на FTP только пользователям указанным в файле vsftpd.userlist
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Создание и настройка пользователей, проверка ftp сервера
Если просто создать пользователя, ftp сервер будет работать не так как ожидается. На домашний каталог пользователя должны быть установлены права доступа 555, то есть запрет на запись, папки которые лежат внутри будут иметь стандартные права и работать как обычно. Сначала делаем вручную:root@debian7:/# useradd -m -s /bin/false testuser root@debian7:/# passwd testuser Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullyБудет создан пользователь testuser а так-же его домашний каталог /home/testuser с правами 755 и содержать несколько служебных файлов. Сейчас VsFTPd сервер не даст залогиниться. Поэтому нужно установить на домашний каталог пользователя нужные права и создать в нем необходимые подкаталоги.
root@debian7:/# mkdir /home/testuser/www root@debian7:/# mkdir /home/testuser/data root@debian7:/# mkdir /home/testuser/logsназначаем нужного владельца на папки домашнего каталога:
root@debian7:/# chown -R testuser:testuser /home/testuserНе забываем добавить этого пользователя в файл /etc/vsftpd.userlist, иначе сервер его не пустит. Логинимся к нашему ftp серверу:
root@debian7:/etc# ftp localhost ftp: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): testuser 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.Получаем список файлов и директорий:
ftp> ls -la 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. dr-xr-xr-x 5 1001 1001 4096 Mar 10 03:40 . dr-xr-xr-x 5 1001 1001 4096 Mar 10 03:40 .. -rw-r--r-- 1 1001 1001 220 Sep 25 2014 .bash_logout -rw-r--r-- 1 1001 1001 3392 Sep 25 2014 .bashrc -rw-r--r-- 1 1001 1001 675 Sep 25 2014 .profile drwxr-xr-x 2 1001 1001 4096 Mar 10 03:40 data drwxr-xr-x 2 1001 1001 4096 Mar 10 03:40 logs drwxr-xr-x 2 1001 1001 4096 Mar 10 03:40 www 226 Directory send OK.Сервер VsFTPd не позволит создавать файлы и каталоги в корне домашнего каталога:
ftp> mkdir a 550 Create directory operation failed.Однако внутри остальных каталогов таких ограничений нет
ftp> cd www 250 Directory successfully changed. ftp> mkdir test 257 "/www/test" created ftp> ls -la 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. drwxr-xr-x 3 1001 1001 4096 Mar 10 03:49 . dr-xr-xr-x 5 1001 1001 4096 Mar 10 03:40 .. drwxr-xr-x 2 1001 1001 4096 Mar 10 03:49 test 226 Directory send OK.На этом можно закругляться, добавлю что, что-бы не заморачиваться с созданием каталогов и установкой прав доступа, можно все это дело автоматизировать. Утилита useradd, запущенная с ключем -m, создает домашнюю директорию по шаблону /etc/skel, то есть нужно просто создать там необходимую структуру каталогов, и при создании нового пользователя они будут автоматически созданы в его домашней директории. А что-бы не заморачиваться с правами доступа, нужно изменить значение UMASK в файле /etc/login.defs на 0222. Теперь при создании пользователя все будет сделано как нужно. Удачи.
Читать еще:
Комментарии
Отправить комментарий