Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2012/07/28 19:12] [vsftpd - установка FTP сервера] |
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2017/11/23 23:04] (текущий) |
||
---|---|---|---|
Строка 11: | Строка 11: | ||
FTP работает на основе модели клиент/сервер. Серверный компонент называется сервисом FTP. Он постоянно слушает FTP запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом. | FTP работает на основе модели клиент/сервер. Серверный компонент называется сервисом FTP. Он постоянно слушает FTP запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом. | ||
+ | |||
+ | ====vsftpd - установка FTP сервера==== | ||
+ | |||
+ | **vsftpd** - это сервис FTP, доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду: | ||
+ | <code>sudo apt install vsftpd</code> | ||
+ | |||
+ | Для запуска сервиса требуется добавить его в автозагрузку. Начиная с версии Ubuntu 15.04 используется [[wiki:systemd|Systemd]], поэтому для добавления vsftpd в автозапуск надо ввести следующие команды: | ||
+ | <code>sudo systemctl start vsftpd | ||
+ | sudo systemctl enable vsftpd</code> | ||
+ | |||
+ | В Ubuntu Server может использоваться файервол [[wiki:руководство_по_ubuntu_server:безопасность:firewall|ufw]]. Тогда вам потребуется разрешить порты 20 и 21 | ||
+ | <code>sudo ufw allow 20/tcp | ||
+ | sudo ufw allow 21/tcp</code> | ||
+ | |||
+ | Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде <code>man 5 vsftpd.conf</code> для уточнения деталей по каждому параметру. | ||
Доступ к FTP серверу может быть организован двумя способами: | Доступ к FTP серверу может быть организован двумя способами: | ||
Строка 18: | Строка 33: | ||
В **анонимном режиме** удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем "anonymous" или "ftp" и передав адрес email в качестве пароля. В **авторизованном режиме** пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP. Это скрывает корень файловой системы от удаленных сессий. | В **анонимном режиме** удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем "anonymous" или "ftp" и передав адрес email в качестве пароля. В **авторизованном режиме** пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP. Это скрывает корень файловой системы от удаленных сессий. | ||
- | |||
- | ====vsftpd - установка FTP сервера==== | ||
- | |||
- | **vsftpd** - это сервис FTP, доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду: | ||
- | <code>sudo apt-get install vsftpd</code> | ||
====Настройка анонимного доступа по FTP==== | ====Настройка анонимного доступа по FTP==== | ||
- | By default vsftpd is not configured to allow anonymous download. If you wish to enable anonymous download edit /etc/vsftpd.conf by changing: | + | <note important>Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета |
- | + | <code>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig</code></note> | |
- | anonymous_enable=Yes | + | |
- | + | ||
- | During installation a ftp user is created with a home directory of /srv/ftp. This is the default FTP directory. | + | |
- | If you wish to change this location, to /srv/files/ftp for example, simply create a directory in another location and change the ftp user's home directory: | + | Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку, измените в /etc/vsftpd.conf следующее: |
+ | <code>anonymous_enable=YES</code> | ||
+ | В процессе установки создается пользователь **//ftp//** с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP. | ||
+ | Если вы желаете поменять его расположение, например, на /srv/files/ftp, просто создайте новый каталог и измените домашний каталог пользователя ftp: | ||
+ | <code> | ||
sudo mkdir /srv/files/ftp | sudo mkdir /srv/files/ftp | ||
sudo usermod -d /srv/files/ftp ftp | sudo usermod -d /srv/files/ftp ftp | ||
+ | </code> | ||
+ | После изменений перезапустите vsftpd: | ||
+ | <code>sudo service vsftpd restart</code> | ||
+ | Под конец скопируйте все файлы и каталоги, которые вы хотите сделать доступными для анонимного FTP в /srv/files/ftp (или /srv/ftp, если вы хотите оставить настройки по умолчанию). | ||
- | After making the change restart vsftpd: | + | По умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd: |
- | + | <code>anon_upload_enable=YES</code> | |
- | sudo restart vsftpd | + | <note important>Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.</note> |
- | + | ||
- | Finally, copy any files and directories you would like to make available through anonymous FTP to /srv/files/ftp, or /srv/ftp if you wish to use the default. | + | |
====Настройка авторизованного доступа по FTP==== | ====Настройка авторизованного доступа по FTP==== | ||
- | By default vsftpd is configured to authenticate system users and allow them to download files. If you want users to be able to upload files, edit /etc/vsftpd.conf: | + | <note important>Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета |
- | + | <code>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig</code></note> | |
- | write_enable=YES | + | |
- | + | ||
- | Now restart vsftpd: | + | |
- | + | ||
- | sudo restart vsftpd | + | |
- | + | ||
- | Now when system users login to FTP they will start in their home directories where they can download, upload, create directories, etc. | + | |
- | + | ||
- | Similarly, by default, anonymous users are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line, and restart vsftpd: | + | |
- | + | ||
- | anon_upload_enable=YES | + | |
- | + | ||
- | Enabling anonymous FTP upload can be an extreme security risk. It is best to not enable anonymous upload on servers accessed directly from the Internet. | + | |
- | + | ||
- | The configuration file consists of many configuration parameters. The information about each parameter is available in the configuration file. Alternatively, you can refer to the man page, man 5 vsftpd.conf for details of each parameter. | + | |
+ | Для аутентификации локальных пользователей надо раскоментировать строчку | ||
+ | <code>local_enable=YES</code> | ||
+ | По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы, измените в /etc/vsftpd.conf: | ||
+ | <code>write_enable=YES</code> | ||
+ | после чего перезагрузите vsftpd: | ||
+ | <code>sudo service vsftpd restart</code> | ||
+ | Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги, где они смогут скачивать, загружать [файлы], создавать каталоги и т.д. | ||
====Защита FTP==== | ====Защита FTP==== | ||
- | There are options in /etc/vsftpd.conf to help make vsftpd more secure. For example users can be limited to their home directories by uncommenting: | + | ===Ограничение пользователей=== |
+ | В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() "заточение", выше которого (по дереву каталогов) он не сможет подняться. | ||
+ | <code>chroot_local_user=YES</code> | ||
+ | Вы также можете определить список пользователей, имеющих доступ только в домашний каталог: | ||
+ | <code>chroot_list_enable=YES | ||
+ | chroot_list_file=/etc/vsftpd.chroot_list</code> | ||
+ | После снятия комментариев с этих опций, создайте /etc/vsftpd.chroot_list, содержащий список пользователей по одному на строку. Затем перезапустите vsftpd: | ||
+ | <code>sudo service vsftpd restart</code> | ||
- | chroot_local_user=YES | + | <note important>Если вы сняли комментарии со всех трёх строчек, то пользователи из списка не будут ограничены своими домашними каталогами, в отличии от пользователей не вошедших в список</note> |
- | You can also limit a specific list of users to just their home directories: | + | Аналогично файл /etc/ftpusers содержит список пользователей, которым запрещен доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей, просто добавьте их в этот список. |
- | chroot_list_enable=YES | + | Если при попытке подключения вы видите ошибку ((Эта ошибка появляется на версиях vsftpd 2.3.5 и выше с Ubuntu 12.04)): |
- | chroot_list_file=/etc/vsftpd.chroot_list | + | <code>Ответ: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()</code> |
+ | то это значит, что локальный пользователь имеет доступ на запись в домашний каталог, чего быть не должно. Способов решения этой ошибки несколько: | ||
- | After uncommenting the above options, create a /etc/vsftpd.chroot_list containing a list of users one per line. Then restart vsftpd: | + | * Запретить запись в домашний каталог локальному пользователю (подходит не всем и не всегда) |
+ | <code>sudo chmod a-w /home/user/</code> | ||
+ | * Отменить проверку записи в домашний каталог прописав в конфиге ((Данная опция не прописана в man странице проекта, но упоминается в change-log версии 3.0.0 на оф.сайте проекта)) | ||
+ | <code>allow_writeable_chroot=YES</code> | ||
+ | * Прописать /home каталогом, куда будут попадать локальные пользователи после входа на FTP сервер. Тогда каждый из них будет иметь возможность писать только в свой домашний каталог | ||
+ | <code>local_root=/home</code> | ||
- | sudo restart vsftpd | + | ===Шифрование=== |
- | + | FTP может быть зашифрованным при использовании **FTPS**. В отличие от **SFTP**, **FTPS** - это FTP поверх SSL. **SFTP** - это сессия, подобная FTP, по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем, таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации. | |
- | Also, the /etc/ftpusers file is a list of users that are disallowed FTP access. The default list includes root, daemon, nobody, etc. To disable FTP access for additional users simply add them to the list. | + | |
- | + | ||
- | FTP can also be encrypted using FTPS. Different from SFTP, FTPS is FTP over Secure Socket Layer (SSL). SFTP is a FTP like session over an encrypted SSH connection. A major difference is that users of SFTP need to have a shell account on the system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more. | + | |
- | + | ||
- | To configure FTPS, edit /etc/vsftpd.conf and at the bottom add: | + | |
- | + | ||
- | ssl_enable=Yes | + | |
- | + | ||
- | Also, notice the certificate and key related options: | + | |
+ | Для настройки FTPS, добавьте в конец файла /etc/vsftpd.conf следующее: | ||
+ | <code>ssl_enable=Yes</code> | ||
+ | Также обратите внимание на опции сертификата и ключа: | ||
+ | <code> | ||
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem | rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem | ||
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key | rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key | ||
+ | </code> | ||
+ | По умолчанию эти опции установлены в значения, предоставленные пакетом **ssl-cert**. Для рабочей среды они должны быть заменены на сертификат и ключ, созданные для определенного компьютера. Для дополнительной информации смотрите раздел [[wiki:руководство_по_ubuntu_server:безопасность:certificates|Сертификаты]]. | ||
- | By default these options are set to the certificate and key provided by the ssl-cert package. In a production environment these should be replaced with a certificate and key generated for the specific host. For more information on certificates see Certificates. | + | Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS: |
- | + | <code>sudo service restart vsftpd</code> | |
- | Now restart vsftpd, and non-anonymous users will be forced to use FTPS: | + | |
- | + | ||
- | sudo restart vsftpd | + | |
- | + | ||
- | To allow users with a shell of /usr/sbin/nologin access to FTP, but have no shell access, edit /etc/shells adding the nologin shell: | + | |
+ | Чтобы позволить пользователям с оболочкой /usr/sbin/nologin получить доступ к FTP, но не предоставлять shell доступ, отредактируйте /etc/shells, добавив к оболочке nologin: | ||
+ | <code> | ||
# /etc/shells: valid login shells | # /etc/shells: valid login shells | ||
/bin/csh | /bin/csh | ||
Строка 114: | Строка 125: | ||
/usr/bin/screen | /usr/bin/screen | ||
/usr/sbin/nologin | /usr/sbin/nologin | ||
+ | </code> | ||
+ | Это необходимо, поскольку по умолчанию vsftpd использует авторизацию PAM, а файл настроек /etc/pam.d/vsftpd содержит: | ||
+ | <code>auth required pam_shells.so</code> | ||
+ | Модуль PAM **shells** ограничивает доступ к оболочкам, перечисленным в файле /etc/shells. | ||
- | This is necessary because, by default vsftpd uses PAM for authentication, and the /etc/pam.d/vsftpd configuration file contains: | + | Наиболее популярные клиенты FTP могут быть настроены на использование FTPS. FTP клиент командной строки lftp также имеет возможность использовать FTPS. |
- | + | ||
- | auth required pam_shells.so | + | |
- | + | ||
- | The shells PAM module restricts access to shells listed in the /etc/shells file. | + | |
- | + | ||
- | Most popular FTP clients can be configured to connect using FTPS. The lftp command line FTP client has the ability to use FTPS as well. | + | |
====Ссылки==== | ====Ссылки==== | ||
- | See the vsftpd website for more information. | + | -- [[https://security.appspot.com/vsftpd/vsftpd_conf.html| man страница конфига]] |
- | + | -- [[http://www.opennet.ru/base/net/vsftpd_overview.txt.html| Русскоязычный перевод man страницы конфига]] | |
- | For detailed /etc/vsftpd.conf options see the vsftpd.conf man page. | + | -- [[https://security.appspot.com/vsftpd/Changelog.txt| Список изменений на оф.сайте проекта]] |
---- | ---- |