Сервер FTP Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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/ftpThis is the default FTP directory.+
  
-If you wish to change this locationto /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 filesedit /​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 secureFor 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 lineThen 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 connectionA major difference is that users of SFTP need to have a shell account ​on the system, instead of a nologin ​shellProviding all users with a shell may not be ideal for some environmentssuch as a shared ​web hostHowever, it is possible to restrict such accounts to only SFTP and disable shell interactionSee 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| Список изменений на оф.сайте проекта]]
  
 ---- ----