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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2012/11/29 01:51]
[Защита 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====
 +
 +<note important>​Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета
 +<​code>​sudo cp /​etc/​vsftpd.conf /​etc/​vsftpd.conf.orig</​code></​note>​
  
 Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку,​ измените в /​etc/​vsftpd.conf следующее:​ Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку,​ измените в /​etc/​vsftpd.conf следующее:​
-<​code>​anonymous_enable=Yes</​code>​+<​code>​anonymous_enable=YES</​code>​
 В процессе установки создается пользователь **//ftp//** с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP. В процессе установки создается пользователь **//ftp//** с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP.
  
Строка 36: Строка 49:
 </​code>​ </​code>​
 После изменений перезапустите vsftpd: После изменений перезапустите vsftpd:
-<​code>​sudo ​restart ​vsftpd</​code>​+<​code>​sudo ​service ​vsftpd ​restart</​code>​
 Под конец скопируйте все файлы и каталоги,​ которые вы хотите сделать доступными для анонимного FTP в /​srv/​files/​ftp (или /srv/ftp, если вы хотите оставить настройки по умолчанию). Под конец скопируйте все файлы и каталоги,​ которые вы хотите сделать доступными для анонимного FTP в /​srv/​files/​ftp (или /srv/ftp, если вы хотите оставить настройки по умолчанию).
  
 +По умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd:
 +<​code>​anon_upload_enable=YES</​code>​
 +<note important>​Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.</​note>​
 ====Настройка авторизованного доступа по FTP==== ====Настройка авторизованного доступа по FTP====
 +
 +<note important>​Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета
 +<​code>​sudo cp /​etc/​vsftpd.conf /​etc/​vsftpd.conf.orig</​code></​note>​
  
 Для аутентификации локальных пользователей надо раскоментировать строчку Для аутентификации локальных пользователей надо раскоментировать строчку
Строка 45: Строка 64:
 По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы, измените в /​etc/​vsftpd.conf:​ По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы, измените в /​etc/​vsftpd.conf:​
 <​code>​write_enable=YES</​code>​ <​code>​write_enable=YES</​code>​
-после чего перзагрузите vsftpd: +после чего перезагрузите vsftpd: 
-<​code>​sudo ​restart ​vsftpd</​code>​+<​code>​sudo ​service ​vsftpd ​restart</​code>​
 Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги,​ где они смогут скачивать,​ загружать [файлы],​ создавать каталоги и т.д. Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги,​ где они смогут скачивать,​ загружать [файлы],​ создавать каталоги и т.д.
- 
-Аналогично,​ по умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd: 
-<​code>​anon_upload_enable=YES</​code>​ 
-<note important>​Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.</​note>​ 
- 
-Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде <​code>​man 5 vsftpd.conf</​code>​ для уточнения деталей по каждому параметру. 
- 
 ====Защита FTP==== ====Защита FTP====
  
-В /​etc/​vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например,​ пользователи могут быть ​ограничены своими домашними ​каталогами, ​если раскомментировать:+===Ограничение пользователей=== 
 +В /​etc/​vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, ​данная опция позволяет поместить локального ​пользователя в chroot() "заточение", выше которого (по дереву ​каталогов) он не сможет подняться.
 <​code>​chroot_local_user=YES</​code>​ <​code>​chroot_local_user=YES</​code>​
 Вы также можете определить список пользователей,​ имеющих доступ только в домашний каталог:​ Вы также можете определить список пользователей,​ имеющих доступ только в домашний каталог:​
-<​code>​ +<​code>​chroot_list_enable=YES 
-chroot_list_enable=YES +chroot_list_file=/​etc/​vsftpd.chroot_list</​code>​
-chroot_list_file=/​etc/​vsftpd.chroot_list +
-</​code>​+
 После снятия комментариев с этих опций, создайте /​etc/​vsftpd.chroot_list,​ содержащий список пользователей по одному на строку. Затем перезапустите vsftpd: После снятия комментариев с этих опций, создайте /​etc/​vsftpd.chroot_list,​ содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:
-<​code>​sudo ​restart ​vsftpd</​code>​+<​code>​sudo ​service ​vsftpd ​restart</​code>​
  
 <note important>​Если вы сняли комментарии со всех трёх строчек,​ то пользователи из списка не будут ограничены своими домашними каталогами,​ в отличии от пользователей не вошедших в список</​note>​ <note important>​Если вы сняли комментарии со всех трёх строчек,​ то пользователи из списка не будут ограничены своими домашними каталогами,​ в отличии от пользователей не вошедших в список</​note>​
  
-Если при попытке подключения вы видите ошибку:​+Аналогично файл /​etc/​ftpusers содержит список пользователей,​ которым запрещен доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей,​ просто добавьте их в этот список. 
 + 
 +Если при попытке подключения вы видите ошибку ​((Эта ошибка появляется на версиях vsftpd 2.3.5 и выше с Ubuntu 12.04)):
 <​code>​Ответ:​ 500 OOPS: vsftpd: refusing to run with writable root inside chroot()</​code>​ <​code>​Ответ:​ 500 OOPS: vsftpd: refusing to run with writable root inside chroot()</​code>​
-то вам надо изменить права на домашний каталог ​локального пользователя +то это значит, что локальный ​пользователь имеет доступ ​на запись в домашний каталог, чего быть не должно. Способов решения этой ошибки несколько:
-<​code>​sudo chmod a-w /​home/​user/</​code>​+
  
-Аналогично файл /​etc/​ftpusers содержит список ​пользователей, которым запрещен ​доступ по FTP. По умолчанию он включает ​rootdaemon, nobody ​и т.пДля запрета ​доступа по FTP для дополнительных пользователей, просто добавьте их в этот список.+  * Запретить запись в домашний каталог ​локальному пользователю (подходит не всем и не всегда
 +<​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>​
  
 +===Шифрование===
 FTP может быть зашифрованным при использовании **FTPS**. В отличие от **SFTP**, **FTPS** - это FTP поверх SSL. **SFTP** - это сессия,​ подобная FTP, по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем,​ таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации. FTP может быть зашифрованным при использовании **FTPS**. В отличие от **SFTP**, **FTPS** - это FTP поверх SSL. **SFTP** - это сессия,​ подобная FTP, по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем,​ таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации.
  
Строка 88: Строка 106:
  
 Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS: Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS:
-<​code>​sudo restart vsftpd</​code>​+<​code>​sudo ​service ​restart vsftpd</​code>​
  
 Чтобы позволить пользователям с оболочкой /​usr/​sbin/​nologin получить доступ к FTP, но не предоставлять shell доступ,​ отредактируйте /​etc/​shells,​ добавив к оболочке nologin: Чтобы позволить пользователям с оболочкой /​usr/​sbin/​nologin получить доступ к FTP, но не предоставлять shell доступ,​ отредактируйте /​etc/​shells,​ добавив к оболочке nologin:
Строка 116: Строка 134:
 ====Ссылки==== ====Ссылки====
  
-  -- Обратитесь к сайту ​[[http://vsftpd.beasts.org/​vsftpd_conf.html|vsftpd]] для дополнительной информации. +  -- [[https://security.appspot.com/vsftpd/​vsftpd_conf.html| ​man страница конфига]] 
-  -- Подробности по опциям ​/etc/vsftpd.conf доступны в man руководстве [[http://manpages.ubuntu.com/​manpages/​precise/​en/​man5/vsftpd.conf.5.html|vsftpd.conf]].+  -- [[http://www.opennet.ru/​base/​net/​vsftpd_overview.txt.html| Русскоязычный перевод ​man страницы конфига]] 
 +  -- [[https://security.appspot.com/vsftpd/Changelog.txtСписок изменений на оф.сайте проекта]]
  
 ---- ----