![Разделение сетевого кабеля на 2. Как удлинить и соединить интернет-кабель в домашних условиях](https://i0.wp.com/nastroisam.ru/2014/udlinit-cable-5.jpg)
Разделение сетевого кабеля на 2. Как удлинить и соединить интернет-кабель в домашних условиях
Протокол передачи файлов (FTP) - это TCP протокол для передачи файлов между компьютерами. В прошлом он использовался также для загрузки [файлов в интернете], но, поскольку этот метод не использует шифрование, пользовательские данные как и содержимое файлов передаются в открытую и легко перехватываются. Поэтому, если вы здесь ищете способ безопасно передавать и загружать файлы, лучше обратитесь к статье по OpenSSH в разделе Удаленное администрирование .
FTP работает на основе модели клиент/сервер. Серверный компонент называется сервисом FTP . Он постоянно слушает FTP запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом.
vsftpd - установка FTP сервера
vsftpd - это сервис FTP , доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду:
Sudo apt install vsftpd
Для запуска сервиса требуется добавить его в автозагрузку. Начиная с версии Ubuntu 15.04 используется Systemd , поэтому для добавления vsftpd в автозапуск надо ввести следующие команды:
Sudo systemctl start vsftpd sudo systemctl enable vsftpd
В Ubuntu Server может использоваться файервол ufw . Тогда вам потребуется разрешить порты 20 и 21
Sudo ufw allow 20/tcp sudo ufw allow 21/tcp
Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде
Man 5 vsftpd.conf
для уточнения деталей по каждому параметру.
Доступ к FTP серверу может быть организован двумя способами:
В анонимном режиме удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем «anonymous» или «ftp» и передав адрес email в качестве пароля. В авторизованном режиме пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP . Это скрывает корень файловой системы от удаленных сессий.
Настройка анонимного доступа по FTP
Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку, измените в /etc/vsftpd.conf следующее:
Anonymous_enable=YES
В процессе установки создается пользователь ftp с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP .
Если вы желаете поменять его расположение, например, на /srv/files/ftp, просто создайте новый каталог и измените домашний каталог пользователя ftp:
Sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp
После изменений перезапустите vsftpd:
Под конец скопируйте все файлы и каталоги, которые вы хотите сделать доступными для анонимного FTP в /srv/files/ftp (или /srv/ftp, если вы хотите оставить настройки по умолчанию).
По умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd:
Anon_upload_enable=YES
Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.
Настройка авторизованного доступа по FTP
Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Для аутентификации локальных пользователей надо раскоментировать строчку
Local_enable=YES
По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы, измените в /etc/vsftpd.conf:
Write_enable=YES
после чего перезагрузите vsftpd:
Sudo service vsftpd restart
Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги, где они смогут скачивать, загружать [файлы], создавать каталоги и т.д.
Защита FTP
Ограничение пользователей
В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() «заточение», выше которого (по дереву каталогов) он не сможет подняться.
Chroot_local_user=YES
Вы также можете определить список пользователей, имеющих доступ только в домашний каталог:
Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
После снятия комментариев с этих опций, создайте /etc/vsftpd.chroot_list, содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:
Sudo service vsftpd restart
Если вы сняли комментарии со всех трёх строчек, то пользователи из списка не будут ограничены своими домашними каталогами, в отличии от пользователей не вошедших в список
Аналогично файл /etc/ftpusers содержит список пользователей, которым запрещен доступ по FTP . По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей, просто добавьте их в этот список.
Если при попытке подключения вы видите ошибку :
Ответ: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
то это значит, что локальный пользователь имеет доступ на запись в домашний каталог, чего быть не должно. Способов решения этой ошибки несколько:
Запретить запись в домашний каталог локальному пользователю (подходит не всем и не всегда)
Прописать /home каталогом, куда будут попадать локальные пользователи после входа на FTP сервер. Тогда каждый из них будет иметь возможность писать только в свой домашний каталог
Шифрование
FTP может быть зашифрованным при использовании FTPS . В отличие от SFTP , FTPS - это FTP поверх SSL . SFTP - это сессия, подобная FTP , по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем, таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации.
Для настройки FTPS, добавьте в конец файла /etc/vsftpd.conf следующее:
Ssl_enable=Yes
Также обратите внимание на опции сертификата и ключа:
Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
По умолчанию эти опции установлены в значения, предоставленные пакетом ssl-cert . Для рабочей среды они должны быть заменены на сертификат и ключ, созданные для определенного компьютера. Для дополнительной информации смотрите раздел Сертификаты .
Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS:
Sudo service restart vsftpd
Чтобы позволить пользователям с оболочкой /usr/sbin/nologin получить доступ к FTP , но не предоставлять shell доступ, отредактируйте /etc/shells, добавив к оболочке nologin:
# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin
Это необходимо, поскольку по умолчанию vsftpd использует авторизацию PAM, а файл настроек /etc/pam.d/vsftpd содержит:
Auth required pam_shells.so
Модуль PAM shells ограничивает доступ к оболочкам, перечисленным в файле /etc/shells.
Наиболее популярные клиенты FTP могут быть настроены на использование FTPS. FTP клиент командной строки lftp также имеет возможность использовать FTPS.
О быстром и безопасном FTP-сервере , сегодня мы рассмотрим базовые моменты конфигурирования этого демона. Здесь я рассмотрел наиболее часто, на мой взгляд, применяемые параметры конфигурирования vsftpd. Не забывайте, что vsftpd очень гибок в настройке и вы всегда можете настроить его каким-то особым для себя образом. Все возможные параметры конфигурации подробно описаны а man-странице демона, которую очень рекомендую хотя бы к беглому просмотру всем интересующимся и использующим этот сервер. В будущих статьях, посвящённых vsftpd, мы рассмотрим такие моменты, как организацию виртуальных FTP-хостов, аутентификацию виртуальных пользователей и SSL-шифрование.
Как говорилось в предыдущей статье, файл конфигурации vsftpd в различных системах по умолчанию располагается в различных местах:
- в FreeBSD — /usr/local/etc/vsftpd.conf
- в Fedora — /etc/vsftpd/vsftpd.conf
- в Debian — /etc/vsftpd.conf
После внесения изменений в конфигурационный файл вашего vsftpd не забывайте перезапускать его. В FreeBSD:
# /usr/local/etc/rc.d/vsftpd restart
В Debian/Fedora:
# service vsftpd restart
Управление доступом
Обратите внимание на то, что в процессе установки vsftp в вашу систему добавляется пользователь с именем учётной записи ftp . Предназначение этой учётной записи — организация доступа к каталогу анонимного FTP. По умолчанию vsftpd разрешает доступ на чтение анонимным пользователям к домашнему каталогу учётной записи ftp . Не забудьте отключить его, если это вам не нужно, изменив значение соответствующего параметра:
Anonymous_enable=NO
Если же доступ анонимных пользователей к вашему FTP-серверу разрешён, дополнительно вы можете отключить запрос пароля при анонимном логине:
No_anon_password=YES
Доступ локальных пользователей системы по умолчанию обычно отключён. Включить его при необходимости можно следующим образом:
Local_enable=YES
Чтобы ваши локальные пользователи не «бродили» выше их домашних каталогов, можно включить следующее ограничение:
Chroot_local_user=YES
Также можно использовать другой способ chroot пользователей, при котором ограничиваться будут не все пользователи, а лишь явно определённые. Для этого необходимо установить значение параметра chroot_local_user равным NO , создать файл с перечнем пользователей для которых chroot должен действовать (например, в /etc/vsftpd.chroot_list ) и определить следующие два параметра:
Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Обратите внимание на то, что если при определённых выше двух параметрах значение параметра chroot_local_user является равным YES , то учётные записи, перечисленные в файле chroot_list_file НЕ будут попадать под ограничения chroot .
Если вы хотите ограничить количество одновременных соединений к vsftpd, есть два способа сделать это: при помощи возможностей суперсервера или, если ваш демон работает в автономном режиме, при помощи параметра (естественно 10 заменив на нужное вам количество допустимых одновременных подключений):
Max_clients=10
По умолчанию в конфигурации vsftpd запрещены FTP-команды создания новых файлов и каталогов, таким образом ваши локальные пользователи по умолчанию не смогут получить доступ на запись в своих домашних каталогах. Исправить это легко можно при помощи определения параметра write_enable :
Write_enable=YES
После того, как в конфигурации вашего сервера параметр write_enable установлен равным YES и anonymous_enable определён как YES вы можете управлять доступом относительно операций создания новых файлов/каталогов анонимными пользователями. Разрешить создавать новые каталоги анонимам:
Anon_mkdir_write_enable=YES
Разрешить анонимным пользователям удалять и переименовывать файлы и каталоги:
Anon_other_write_enable=YES
Разрешить анонимам загружать новые файлы:
Anon_upload_enable=YES
Ограничить скорость обмена данными для анонимных пользователей в автономном режиме сервера можно следующим параметром (значение указывается в байтах/сек):
Anon_max_rate=1024
По умолчанию umask файлов vsftpd использует равный 077 , то есть файлы создаются доступными на чтение/запись только для владельца. Изменить значение umask анонимных пользователей можно при помощи параметра anon_umask :
Anon_umask=022
а для локальных — при помощи параметра local_umask :
Local_umask=022
При необходимости вы можете запретить пользователям скачивать файлы с вашего сервера:
Download_enable=NO
Иногда бывает полезно скрыть реальные идентификаторы владельцев файлов, заменив их на идентификатор пользователя ftp :
Hide_ids=YES
Сетевые параметры
Если ваш vsftpd запускается в автономном режиме, а не через xinetd , тогда необходимо явно указать это:
Listen=YES
то же, для IPv6 (помните, что демон может работать одновременно только либо с IPv4, либо с IPv6):
Listen_ipv6=YES
Определить IPv4 адрес, на который должен «вешаться» демон, можно параметром:
Listen_address=192.168.0.1
Listen_address6=fe80:0:0:0:202:b3ff:fe1e:8329
При необходимости вы можете отключить возможность использования клиентами PASV-режима:
Pasv_enable=NO
Разное
Начиная с версии 2.0.7 vsftpd умеет удалять неудавшиеся закачки, если определить следующий параметр:
Delete_failed_uploads=YES
По умолчанию vsftpd отображает таймштампы файлов в GMT. Если вам нужно, чтобы они отображались согласно локальному времени сервера, воспользуйтесь следующим параметром.
Если у Вас уже установлен сервис vsftpd, то переходим сразу к пункту 2, иначе по порядку:
1. В дистрибутиве Debian, выполняем команду: apt-get install vsftpd
Все операции по его скачиванию и установке занимают около 1-3 минут, на вопрос установщика необходимо ответить «y».
2. Находим конфигурационный файл данного сервиса, он лежит в /etc/vsftpd.conf
, редактируем его либо nano, либо встроенным в midnight commander редактором.
nano /etc/vsftpd.conf
Далее проверяем некоторые настройки описанные в нем:
— устанавливаем запрет на подключение анонимных пользователей, находим опцию «anonymous_enable
» и прописываем ей значений «NO
«.
— снимаем комментарий с опции «local_enable
» и «write_enable
«. (первая опция разрешает использовать для входа на сервер логин и пароль пользователям, которые зарегистрированы в системе/вторая разрешает пользователям выполнять любые FTP-команды записи)
— находим «chroot_local_user
«, если этой надстройке установлено значение «Yes
» (скорее всего стоит по умолчанию), все системные пользователи будут находиться в пределах chroot директории и не смогут получить доступ к другим директориям сервера.
Сохраняем все изменения, которые сделали. Для nano: жмем ctr+o -> Enter(сохраняем) -> ctrl+x(закрываем). Для midnight commander-а — жмем F2(сохраняем) затем F10(выход).
3. Когда все подготовили, создаем пользователя который будет пользоваться FTP: (заранее оговорюсь, что имя пользователя может быть любым, не обязательно писать user
, как в данном примере! это пример!
)
— выполняем в терминале команду adduser user
— далее утилита по созданию нового пользователя задаст Вам несколько вопросов, на которые вы введете ответы с клавиатуры (просьба заполнить побочные поля в роде номера телефона и пр. можно игнорировать и просто нажимать Enter), и в конце при сохранении пишем «yes»
— теперь добавим вновь созданного пользователя в группу ftpusers (название группы может быть любым
другим, придуманным Вами самими, в данном случае — это пример!
)
groupadd ftpusers
usermod -G ftpusers user
в директории /home
уже создалась одноименная папка пользователя.
— сделаем в этой папке еще две папки для файлов и для логов.
mkdir /home/user/www
mkdir /home/user/logs
— далее сменим владельца данных папок т.к. текущие операции мы производили из под пользователя с root правами, соотв. и атрибуты назначились как для root
chown user:ftpusers /home/user/www
chown user:ftpusers /home/user/logs
chmod 555 /home/user
4. Перезапускаем наш сервис командой
service vsftpd restart
5. Пробуем подключаться с помощью FTP клиента (FileZilla,Winscp,Explorer) по ip-адресу или доменному имени хоста на котором производили данные действия, введя логин созданного пользователя и его пароль. После входа будут доступны созданные ранее папки.