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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2012/07/28 20:03]
[Защита FTP]
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2017/11/23 22:31]
[vsftpd - установка FTP сервера] добавлена информация по добавлению в автозапуск и файерволл
Строка 22: Строка 22:
  
 **vsftpd** - это сервис FTP, доступный в Ubuntu. Его легко устанавливать,​ настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду:​ **vsftpd** - это сервис FTP, доступный в Ubuntu. Его легко устанавливать,​ настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду:​
-<​code>​sudo apt-get install vsftpd</​code>​+<​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====
  
Строка 36: Строка 45:
 </​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====
  
 +Для аутентификации локальных пользователей надо раскоментировать строчку
 +<​code>​local_enable=YES</​code>​
 По умолчанию 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
Строка 63: Строка 71:
 </​code>​ </​code>​
 После снятия комментариев с этих опций, создайте /​etc/​vsftpd.chroot_list,​ содержащий список пользователей по одному на строку. Затем перезапустите vsftpd: После снятия комментариев с этих опций, создайте /​etc/​vsftpd.chroot_list,​ содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:
-<​code>​sudo restart ​vsftpd</​code>​ +<​code>​sudo ​service vsftpd ​restart</​code>​
-Также файл /​etc/​ftpusers содержит список пользователей,​ которым запрещен доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей,​ просто добавьте их в этот список.+
  
-FTP может быть зашифрованным ​при использовании ​FTPS. +<note important>​Если вы сняли комментарии со всех трёх строчек, то пользователи из списка не будут ​ограничены своими домашними каталогами,​ в отличии от пользователей ​не вошедших в список</​note>​
  
-FTP can also be encrypted using FTPS. Different from SFTPFTPS 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 systeminstead of a nologin shell. Providing all users with a shell may not be ideal for some environmentssuch as a shared web hostHoweverit is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more.+Аналогично файл /​etc/​ftpusers содержит список пользователейкоторым запрещен доступ по FTP. По умолчанию он включает rootdaemonnobody и т.п. Для запрета доступа по FTP для дополнительных пользователейпросто добавьте их в этот список.
  
-To configure FTPS, edit /etc/vsftpd.conf and at the bottom add:+Если при попытке подключения вы видите ошибку ((Эта ошибка появляется на версиях ​vsftpd ​2.3.5 и выше с Ubuntu 12.04)): 
 +<​code>​Ответ:​ 500 OOPS: vsftpd: refusing to run with writable root inside chroot()</​code>​ 
 +то это значит,​ что локальный пользователь имеет доступ на запись в домашний каталог,​ чего быть не должноСпособов решения этой ошибки несколько:
  
-ssl_enable=Yes+  * Запретить запись в домашний каталог локальному пользователю (подходит не всем и не всегда) 
 +<​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>​
  
-Alsonotice the certificate and key related options:+===Шифрование=== 
 +FTP может быть зашифрованным при использовании **FTPS**. В отличие от **SFTP****FTPS** - это FTP поверх SSL. **SFTP** - это сессия,​ подобная FTP, по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем,​ таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации.
  
 +Для настройки 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
Строка 102: Строка 120:
 /​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| Список изменений на оф.сайте проекта]]
  
 ---- ----