Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
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 SFTP, FTPS 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 system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more. | + | Аналогично файл /etc/ftpusers содержит список пользователей, которым запрещен доступ по FTP. По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по 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> | ||
- | Also, notice 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| Список изменений на оф.сайте проекта]] |
---- | ---- |