Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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. По умолчанию он включает root, daemon, 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| Список изменений на оф.сайте проекта]] | ||
---- | ---- |