Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Файл-серверы

1. FTP-сервер

Протокол передачи файлов (FTP) — это протокол TCP для передачи файлов между компьютерами. В прошлом он использовался также для загрузки файлов на сервер в интернете, но, поскольку этот метод не использует шифрование, пользовательские данные и содержимое файлов передаются в открытую и легко перехватываются. Поэтому, если вы здесь ищете способ безопасно передавать и загружать файлы, лучше обратитесь к статье по

OpenSSH в разделе Глава 6, Удалённое администрирование [93].

FTP работает на основе модели клиент/сервер. Серверный компонент называется сервисом FTP. Он постоянно слушает FTP-запросы от удалённых клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные клиентом FTP.

Доступ к FTP-серверу может быть установлен двумя путями:

Анонимный

Авторизованный

В анонимном режиме удалённый клиент может получить доступ к FTPсерверу, используя учётную запись пользователя по умолчанию с именем «anonymous» или «ftp» и передав адрес электронной почты в качестве пароля. В авторизованном режиме пользователь должен иметь учётное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если

вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP. Это скрывает корень файловой системы от удалённых сессий.

1.1. vsftpd — установка FTP-сервера

vsftpd — это демон FTP, доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду:

sudo apt-get install vsftpd

256

Файл-серверы

1.2. Настройка анонимного доступа по FTP

Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку, измените в /etc/vsftpd.conf следующее:

anonymous_enable=Yes

В процессе установки создается пользователь ftp с домашним каталогом / srv/ftp. Это каталог по умолчанию для FTP.

Если вы желаете поменять его расположение, например, на /srv/files/ ftp, просто создайте новый каталог и измените домашний каталог пользователя ftp:

sudo mkdir /srv/files/ftp

sudo usermod -d /srv/files/ftp ftp

После изменений перезапустите vsftpd:

sudo restart vsftpd

Под конец скопируйте все файлы и каталоги, которые вы хотите сделать доступными для анонимного FTP, в /srv/files/ftp, или /srv/ftp, если вы хотите оставить настройки по умолчанию.

1.3. Настройка авторизованного доступа по FTP

По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью скачивать файлы. Если вы хотите разрешить пользователям загружать файлы на сервер, измените в /etc/

vsftpd.conf:

write_enable=YES

после чего перезагрузите vsftpd:

sudo restart vsftpd

Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги, где они смогут скачивать и загружать файлы, создавать каталоги и т.д.

Аналогично, по умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP-сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd:

257

Файл-серверы

anon_upload_enable=YES

Разрешение анонимному пользователю загружать файлы на сервер может оказаться серьёзной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на серверы с прямым доступом из интернета.

Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде man 5 vsftpd.conf для уточнения деталей по каждому параметру.

1.4. Защита FTP

В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, пользователи могут быть ограничены своими домашними каталогами, если раскомментировать:

chroot_local_user=YES

Вы также можете определить список пользователей, имеющих доступ только в домашний каталог:

chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

После снятия комментариев с этих опций, создайте /etc/vsftpd.chroot_list, содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:

sudo restart vsftpd

Аналогично, файл /etc/ftpusers содержит список пользователей, которым запрещён доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей, просто добавьте их в этот список.

FTP может быть зашифрованным при использовании FTPS. В отличие от SFTP, FTPS — это FTP поверх SSL. SFTP — это сессия, подобная FTP, по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учётную запись с собственным окружением shell вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем, таких как веб-сервер общего доступа. Однако

258

Файл-серверы

есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации.

Для настройки FTPS, добавьте в конец файла /etc/vsftpd.conf следующее:

ssl_enable=Yes

Также обратите внимание на опции сертификата и ключа:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

По умолчанию эти опции установлены в значения, предоставленные пакетом ssl-cert. Для рабочей среды они должны быть заменены

на сертификат и ключ, созданные для определённого компьютера. Для дополнительной информации смотрите раздел Раздел 5, «Сертификаты» [194].

Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS:

sudo restart vsftpd

Чтобы позволить пользователям с оболочкой /usr/sbin/nologin получить доступ к FTP, но не предоставлять shell доступ, отредактируйте /etc/shells, добавив к оболочке nologin:

# /etc/shells: valid login shells /bin/csh

/bin/sh

/usr/bin/es

/usr/bin/ksh

/bin/ksh

/usr/bin/rc

/usr/bin/tcsh

/bin/tcsh

/usr/bin/esh

/bin/dash

/bin/bash

/bin/rbash

/usr/bin/screen

/usr/sbin/nologin

Это необходимо, поскольку по умолчанию vsftpd использует аутентификацию PAM, а файл настроек /etc/pam.d/vsftpd содержит:

259

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]