Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:файловые_сервера:ftp_server [2017/11/17 19:45] [Защита 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 серверу может быть организован двумя способами: | ||
Строка 19: | Строка 34: | ||
В **анонимном режиме** удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем "anonymous" или "ftp" и передав адрес email в качестве пароля. В **авторизованном режиме** пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP. Это скрывает корень файловой системы от удаленных сессий. | В **анонимном режиме** удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем "anonymous" или "ftp" и передав адрес email в качестве пароля. В **авторизованном режиме** пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP. Это скрывает корень файловой системы от удаленных сессий. | ||
- | ====vsftpd - установка FTP сервера==== | + | ====Настройка анонимного доступа по FTP==== |
- | **vsftpd** - это сервис FTP, доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду: | + | <note important>Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета |
- | <code>sudo apt-get install vsftpd</code> | + | <code>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig</code></note> |
- | + | ||
- | Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде <code>man 5 vsftpd.conf</code> для уточнения деталей по каждому параметру. | + | |
- | ====Настройка анонимного доступа по FTP==== | + | |
Настройка 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. | ||
Строка 44: | Строка 56: | ||
<note important>Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.</note> | <note important>Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.</note> | ||
====Настройка авторизованного доступа по FTP==== | ====Настройка авторизованного доступа по FTP==== | ||
+ | |||
+ | <note important>Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета | ||
+ | <code>sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig</code></note> | ||
Для аутентификации локальных пользователей надо раскоментировать строчку | Для аутентификации локальных пользователей надо раскоментировать строчку | ||
Строка 54: | Строка 69: | ||
====Защита FTP==== | ====Защита FTP==== | ||
+ | ===Ограничение пользователей=== | ||
В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() "заточение", выше которого (по дереву каталогов) он не сможет подняться. | В /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 service vsftpd restart</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)): | Если при попытке подключения вы видите ошибку ((Эта ошибка появляется на версиях vsftpd 2.3.5 и выше с Ubuntu 12.04)): | ||
Строка 77: | Строка 93: | ||
<code>local_root=/home</code> | <code>local_root=/home</code> | ||
- | Аналогично файл /etc/ftpusers содержит список пользователей, которым запрещен доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей, просто добавьте их в этот список. | + | ===Шифрование=== |
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 для дополнительной информации. | ||