Страницы

четверг, 13 сентября 2012 г.

FTP-сервер Vsftpd на Hp proliant microserver

Настройка ftp сервера VSFTPD

VSFTPD - FTP сервер, с развитыми возможностями аутентификации пользователей, посредством цифровых сертификатов.
Однако, использование цифровых сертификатов - дело хорошее, но требующее тщательного продумывания, поэтому, настроим ftp-сервер без их использования, для простого анонимного обмена файлами.

Установка ftp сервера на микросервере, под Ubuntu 12.04
$sudo apt-get install vsftpd

Главный конфигурационный файл /etc/vsftpd.conf
Файл журнала /var/log/vsftpd.log

Произведём настройку ftp-сервера, для доступа анонимных пользователей, с максимальными полномочиями по манипулированию файлами.

root@microserver:~# cat /etc/vsftpd.conf

# Конфигурация FTP сервиса микросервера - /etc/vsftpd.conf
# http://gimmor.blogspot.com/2012/09/ftp-vsftpd-hp-proliant-microserver.html
# 13 сентября 2012
# сервер: микросервер
# Особенности: анонимный доступ на чтение и запись
# Для просмотра всех опций ftp-сервера: man 5 vsftpd.conf

# Сервер будет запущен в отдельном(standalone) режиме

listen=YES
listen_ipv6=NO
# По умолчанию, ftp-сервер доступен на всех локальных интерфейсах микросервера
# Чтобы отобрать интерфейсы, на которых будет доступен ftp-сервер, задается опция:
listen_address=192.168.3.1,192.168.5.1
# в нашем случае, ftp-сервер будет работать в локальной сети

# Порт, на котором  ftp-сервер слушает подключения, 21- стандартный порт FTP.
listen_port=21
#
ftp_data_port=20
connect_from_port_20=YES

# Разрешен доступ анонимных пользователей, с известными именами ftp, anonymous
anonymous_enable=YES
# Не требуется пароль для анонимных пользователей
no_anon_password=YES
# Опция ftp_username позволяет задать имя анонимного пользователя
ftp_username=ftp

# Каталог для анонимных пользователей, /srv/ftp по-умолчанию
# каталог должен принадлежать пользователю ftp, иначе соединение закрывается
anon_root=/srv/ftp


#secure_chroot_dir=/var/run/vsftpd/empty


# Опции разрешающие анонимному пользователю, загружать файлы, создавать, удалять каталоги
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

# Разрешена выгрузка файлов пользователем
download_enable=YES

ls_recurse_enable=YES

# Права на доступ к загруженным пользователем файлам на ftp сервер (вновь созданным)
anon_umask=0013
file_open_mode=0766
chown_upload_mode=0011

 # Разрешить доступ локальным пользователям
local_enable=NO


# Журнал ftp-сервера
vsftpd_log_file=/var/log/vsftpd.log

# Можно перенаправить журнальный вывод в стандартный системный журнал
syslog_enable=NO
# Журналирование команд протокола
log_ftp_protocol=NO


# Регистрация активности(выгрузка/загрузка) пользователей в журнале /var/log/vsftpd.log
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

Права на каталог /srv/ftp и его файлы

Чтобы было можно менять каталоги в клиенте ftp, бит исполнения (x) должен быть установлен для пользователя, группы, для всех.

$ ls -l /srv
 dr-xrwxr-x 3 ftp ftp 4096 мая   27 19:14 ftp


Чтобы можно было читать (загружать c ftp, Download) файлы, у любого файла должны быть права на чтения для пользователя, группы, для всех.
$ ls -l /srv/ftp/test
-rw-r--r-- 1 ftp ftp 528881 мая   27 19:45 IMG_20140525_004452.jpg

Для задания прав на загружаемый файл есть основная опция, file_open_mode, задающая права на доступ к созданному (загруженному)файлу.
Затем к этому значению, применяются маски anon_umask и chown_upload_mode.

Пример - будут созданы файлы, загруженные на ftp (Upload), файлы с правами на чтение и запись, при этом будет сброшена возможность записи для всех остальных, но пользователь (ftp) и его группа (ftp) смогут читать и писать в файл. Также для всех будет сброшена исполняемость файла, т.е. файлы
anon_umask=0113
file_open_mode=0666
chown_upload_mode=0111

Права представлены в восьмеричной системе, т.к. для пользователя, группы, всех выделено по 3 бита, задающего соответствено чтение, запись, исполнение.

Например: 07 = b111 - rwx, 06 = b110 - rw-, 01 = b001 - --x

Часто используется значение 0644 - которое разрешает на запись и чтение, только пользователю, а всем остальным - только чтение.

Чтобы анонимный пользователь мог создавать папку (например, копировать целую папку на ftp-сервер), бит исполнения для вновь создаваемой папки должен быть. Т.е. маска file_open_mode = 0766
Тогда
anon_umask=0013
file_open_mode=0766
chown_upload_mode=0011


Есть некоторый баг, что невозможно загрузить в корневой каталог ftp-сервера какой-либо файл. Выручает в этом случае, предварительное создание любого каталога на сервере.
mkdir /srv/ftp/testdir
chown ftp:ftp /srv/ftp/testdir


Запуск сервера в standalone режиме

из под пользователя root
# /usr/sbin/vsftpd

Анонимный доступ к серверу пользователя ftp

$ ftp://ftp@microserver/

ftp@ - это указывает пользователя


Локальные (зарегистрированые) пользователи и их доступ к FTP серверу

Для локальных пользователей есть свои опции:
local_enable=YES
local_root=/home
chroot_local_user=YES
# Маска доступности файла, другим пользователям. Здесь - недоступна всем, но доступна на чтение группе зарегистрировавшегося пользователя
local_umask=0013

После этого, локальные, системные пользователи из /etc/passwd будут попадать в /home
Выхода за пределы /home у них не будет, но вот друг друга просматривать будут, что не есть хорошо.

Вполне возможно, что использовать локальных пользователей для доступа по ftp не самая хорошая идея.
Но тут приходят на выручку - виртуальные пользователи, т.е. те кто могут заходить по ftp, но они не системные.


Публикация ftp-сервера посредством avahi


При установленном на сервере пакете avahi-daemon, возможно публикация сервиса ftp, посредством mDNS.
Для этого создается файл, в папке /etc/avahi/services/ следующего содержания:

root@microserver:~# cat /etc/avahi/services/ftp.service 

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!-- Публикация FTP сервера
     8 сентября 2012 
     сервер: микросервер
-->
    <service-group>
    <name>Microserver File Transfer</name>
    <service>
    <type>_ftp._tcp</type>
    <port>21</port>
    </service>
    </service-group>

После этого, сервис доступен для просмотра с помощью Nautilus. Ссылки на ftp-сервер микросервера появляются во всех программах поддерживающих mDNS (Nautilus, Web-Epiphany)

Просмотр опубликованного сервиса FTP через Nautilus
Вход на ftp-сервер настроен для анонимного использования (для быстрого доступа).

Вход на FTP сервер через Nautilus


1 комментарий:

Dmitriy комментирует...

Опция в файле /etc/vsftpd.conf ftpd_banner задает приветствие появляющееся при входе на ftp-сервер
ftpd_banner=Welcome to private microserver powered by Ubuntu server