Настройка FTP-сервера
Введение
Общие сведения о FTP
File Transfer Protocol (FTP) — один из первых протоколов передачи данных в Интернете. Он используется для передачи файлов между сервером и клиентом. Протокол FTP предоставляет пользователям доступ к файлам на удалённой системе с помощью набора стандартных команд без необходимости входить в систему. В дополнение к этому FTP-сервер предоставляет следующие функции.
-
Классификация абонентов
По умолчанию FTP-сервер классифицирует пользователей на реальных, гостевых и анонимных на основе их статуса входа в систему. Эти три типа имеют разные права доступа. Реальные пользователи имеют полные права доступа, тогда как анонимные — только разрешение на загрузку ресурсов.
-
Записи команд и файла журнала
Протокол FTP может использовать syslogd для записи данных, включая прошлые команды и сведения о пользовательских передачах (например, время передачи и размер файла). Данные журнала доступны пользователям в директории
/var/log/. -
Ограничение области доступа пользователей
FTP может ограничивать рабочую область пользователя его домашней директорией. Когда пользователь входит в систему через FTP, его домашний каталог — это корневой каталог, отображаемый системой. Эта среда определяется операцией
change root(сокращённоchroot). Таким образом, пользователи получают доступ только к основной директории, но не к важным каталогам, таким как/etc,/homeи/usr/local. Это защищает систему и обеспечивает её безопасность.
Используемый порт FTP-сервера
Для сервиса FTP необходимо несколько сетевых портов. Сервер использует следующие порты:
-
Командный канал. Номер порта по умолчанию — 21.
-
Канал данных. Номер порта по умолчанию — 20.
Порт 21 используется для получения запросов на подключение от FTP-клиента, а порт 20 используется FTP-сервером для инициативного подключения к FTP-клиенту.
Общие сведения об vsftpd
Протокол FTP имеет долгую историю и использует незашифрованный режим передачи, поэтому считается небезопасным. В этом разделе описывается сервис vsftpd (Very Secure FTP Daemon — «Очень безопасный FTP-демон») для более безопасного использования FTP.
Демон vsftpd предназначен для создания FTP-сервера, ориентированного на безопасность. Он разработан для обеспечения следующих возможностей.
-
Начальный пользователь сервиса vsftpd — это обычный пользователь с малыми правами в системе. Кроме того, vsftpd использует
chrootдля изменения корневой директории, предотвращая риск недопустимого использования системных инструментов. -
Любая команда vsftpd, требующая высокого уровня прав для выполнения, контролируется специальной программой верхнего уровня. Эта программа верхнего уровня имеет малые права и не влияет на систему.
-
Сервис vsftpd включает в себя большинство дополнительных команд (таких как
dir,lsиcd), используемых в FTP. Как правило, система не обязана предоставлять дополнительные команды, и их применение не несёт ей угрозы.
Использование vsftpd
Установка vsftpd
Чтобы использовать этот сервис, необходимо установить программное обеспечение vsftpd.
Если источник YUM настроен, выполните от имени пользователя root команду, чтобы установить сервис vsftpd:
dnf install vsftpd
Управление сервисами
Чтобы запустить, остановить или перезапустить сервис vsftpd, выполните соответствующую команду от имени пользователя root.
-
Запуск сервисов vsftpd:
systemctl start vsftpdВы можете выполнить команду
netstat, чтобы проверить, включен ли для связи порт 21:netstat -tulnp | grep 21Если отображается следующая информация, сервис vsftpd включен.
tcp6 0 0 :::21 :::* LISTEN 19716/vsftpdЕсли команда
netstatне существует:-
Чтобы установить программное обеспечение
net-tools, запустите команду:dnf install net-tools -
Повторно запустите
netstat.
-
-
Остановка сервисов vsftpd:
systemctl stop vsftpd -
Перезапуск сервиса vsftpd:
systemctl restart vsftpd
Настройка vsftpd
Файлы конфигурации vsftpd
Файл конфигурации vsftpd можно редактировать для управления пользовательскими разрешениями. Описание файлов конфигурации vsftpd:
-
/etc/pam.d/vsftpdМодули PAM (Pluggable Authentication Modules, подключаемые модули аутентификации), применяемые для проверки подлинности и ограничения пользователям некоторых операций.
-
/etc/vsftpd/chroot_listУказывает, ограничивать ли пользователям из списка доступ исключительно домашним каталогом. По умолчанию этот файл не существует. Его необходимо создать вручную. Он будет значением параметра
chroot_list_fileв файлеvsftpd.conf.Функция данного параметра определяется следующими параметрами в файле
vsftpd.conf:-
chroot_local_user— ограничивать ли доступ домашним каталогом для всех пользователей:-
YES— все пользователи ограничены домашним каталогом; -
NO— все пользователи не ограничены домашним каталогом.
-
-
chroot_list_enable— активировать ли список пользователей с ограниченным доступом:-
YES— список включен; -
NO— список отключен.
-
Например, если для
chroot_local_userзадано значениеYES, дляchroot_list_enable— значениеYES, а дляchroot_list_file— значение/etc/vsftpd/chroot_list, то все пользователи будут ограничены своими домашними каталогами, а пользователи вchroot_list— не ограничены. -
-
/etc/vsftpd/ftpusersСписок пользователей, которым не разрешено использовать vsftpd. По умолчанию в этот файл также включена учётная запись системы, поэтому она не может по умолчанию использовать vsftpd.
-
/etc/vsftpd/user_list
Список пользователей, которым разрешено или запрещено входить на сервер vsftpd.
Действие этого файла зависит от следующих параметров в главном файле конфигурации vsftpd.conf:
-
userlist_enable— включен ли механизм списка пользователей:-
YES— механизм списка пользователей включен. В этом случае будет действовать конфигурацияuserlist_deny. -
NO— механизм списка пользователей отключен.
-
-
userlist_deny— запрещено ли пользователям из списка выполнять вход:-
YES— вход для пользователей в списке запрещен; -
NO— вход для пользователей, указанных в команде, будет разрешен.
-
Например, если и для userlist_enable, и для userlist_deny задано значение YES, то для всех пользователей в списке вход будет невозможен.
-
/etc/vsftpd/vsftpd.confГлавный файл конфигурации процесса vsftpd. Формат конфигурации:
Параметр=ЗначениеПараметр и значение параметра не могут быть пустыми.
Для просмотра сведений о файле
vsftpd.confвыполните команду:man 5 vsftpd.conf -
/usr/sbin/vsftpdУникальный исполняемый файл vsftpd.
-
/var/ftp/Корневой каталог по умолчанию для входа анонимных пользователей. Он связан с домашним каталогом пользователя FTP.
Вы можете изменять файлы конфигурации по мере необходимости.
Используйте команду man, чтобы просмотреть дополнительные значения параметров.
Описание конфигурации по умолчанию
|
Содержимое конфигурации приводится только для справки. Вы можете изменить его в соответствии с требованиями узла (например, для усиления защиты). |
В системе openEuler сервис vsftpd по умолчанию не открыт для анонимных пользователей.
Чтобы просмотреть главный файл конфигурации, запустите команду vim:
vim /etc/vsftpd/vsftpd.conf
Содержимое будет следующим:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
Описание параметров:
-
anonymous_enable— разрешать ли вход анонимным пользователям:-
YES— вход для анонимных пользователей разрешен; -
NO— вход для анонимных пользователей запрещён.
-
-
connect_from_port_20— используется ли порт 20 для передачи данных в режиме порта:-
YES— порт 20 используется; -
NO— порт 20 не используется.
-
-
dirmessage_enable— отображать ли содержимое, на которое пользователю нужно обратить внимание, когда он открывает каталог:-
YES— отображать; -
NO— не отображать.
-
-
listen— запускается ли сервис vsftpd в автономном режиме. Возможные значения:YESиNO. -
listen_ipv6— прослушивать ли FTP-запросы IPv6.Возможные значения:
-
YES; -
NO.
Одновременное включение listenиlisten_ipv6невозможно. -
-
local_enable— разрешать ли вход локальным пользователям:-
YES— разрешен; -
NO— запрещён.
-
-
local_umask— значение umask, когда локальный пользователь добавляет профиль. -
pam_service_name— Поддержка управления PAM. Значением является название сервиса, например vsftpd. -
tcp_wrappers— поддерживать ли механизм брандмауэра TCP Wrappers.Возможные значения:
-
YES; -
NO.
-
-
userlist_enable— поддерживать ли контроль входа учётных записей в файле/etc/vsftpd/user_list.Возможные значения:
-
YES; -
NO.
-
-
write_enable— предоставлять ли входящему пользователю разрешение на запись:-
YES— функции отправки и записи включены; -
NO— функции отключены.
-
-
xferlog_enable— записывать ли операции загрузки и отправки:-
YES— операции записываются; -
NO— операции не записываются.
-
-
xferlog_std_format— записывается ли файл журнала передачи в стандартном формате xferlog.Возможные значения:
-
YES; -
NO.
-
Обзор
В системе openEuler сервис vsftpd по умолчанию использует среднее время по Гринвичу (GMT), которое может отличаться от местного времени. Например, время GMT на 8 часов отстает от пекинского. Необходимо изменить время GMT на местное, иначе время на сервере и на клиенте не будет совпадать, из-за чего возможны ошибки при отправке и загрузке файлов.
Метод настройки
Чтобы установить для vsftpd местное время, выполните от имени пользователя root следующие действия.
-
Откройте файл
vsftpd.confи измените значениеuse_localtimeнаYES. Выполните следующую команду: -
Перезапустите сервис vsftpd:
systemctl restart vsftpd -
Настройте сервис vsftpd на автоматический запуск при включении питания:
systemctl enable vsftpd
Настройка приветственной информации
При использовании сервиса vsftpd обычно должен существовать файл приветственной информации.
Чтобы настроить для сервиса файл welcome.txt, выполните от имени пользователя root следующие действия.
-
Добавьте в конфигурационный файл
vsftpd.confстроку:banner_file=/etc/vsftpd/welcome.txt -
Создайте файл
/etc/vsftpd/welcome.txtи добавьте в него приветственную информацию, например:Welcome to this FTP server!
Настройка разрешения на вход для системной учётной записи
Как правило, пользователям требуется ограничить права входа для некоторых учётных записей. Вы можете задать ограничения необходимым образом.
Для ограничения входа системных учётных записей используются два файла. По умолчанию файлы следующие:
-
/etc/vsftpd/ftpusers— этот файл контролируется модулем PAM и определяется настройками в файле/etc/pam.d/vsftpd; -
/etc/vsftpd/user_list— этот файл задаетсяuserlist_fileв конфигурацииvsftpd.confи предоставляется из vsftpd.
Оба файла должны существовать и иметь одинаковое содержимое.
Вы можете записать учетные записи, чьи UID меньше 500, в два файла, обратившись к файлу /etc/passwd.
Каждая строка указывает учётную запись.
Чтобы ограничить вход для системных учётных записей, добавьте эти записи в /etc/vsftpd/ftpusers и /etc/vsftpd/user_list от имени пользователя root.
Чтобы просмотреть содержимое файла /etc/vsftpd/user_list выполните команду:
vim /etc/vsftpd/user_list
Проверка настройки FTP-сервиса
Для проверки можно использовать FTP-клиент, предоставляемый openEuler. Команда:
ftp localhost
Введите имя пользователя (существующего пользователя в системе) и пароль, когда появится запрос.
Если отобразится сообщение Login successful (Вход выполнен), это означает, что FTP-сервер настроен.
|
Если команда
|
Настройка брандмауэра
Чтобы открыть доступ к FTP-сервису из Интернета, необходимо настроить брандмауэр и SElinux от имени пользователя root.
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
Передача файлов
Подключение к серверу
Формат команды:
ftp [hostname | ip-address]
Здесь hostname указывает имя узла, а ip-address задает IP-адрес сервера.
Требования:
Запустите следующую команду в интерфейсе командной строки (CLI) операционной системы openEuler:
ftp ip-address
Введите имя пользователя и пароль, когда появится запрос. Если после успешной проверки подлинности отображается следующая информация, то FTP-соединение установлено. В этом случае вы получили доступ к каталогу подключенного сервера.
ftp>
В этом приглашении вы можете вводить различные команды для выполнения соответствующих операций.
-
Отобразите текущий путь сервера:
ftp>pwd -
Отобразите локальный путь. Вы можете отправлять по этому пути файлы в соответствующее расположение на FTP-сервере:
ftp>lcd -
Выйдите из текущего окна и вернитесь в локальный терминал Linux:
ftp>!
Загрузка файла
Как правило, для загрузки файлов используется команда get или mget.
Использование команды get
Описание функции: передает файлы с удалённого узла на локальный.
Формат команды:
get [remote-file] [local-file]
Здесь remote-file указывает удалённый файл, а local-file — локальный.
Например, следующая команда позволяет получить файл /home/openEuler/openEuler.htm с удалённого сервера в локальный каталог /home/myopenEuler/ и изменить имя файла на myopenEuler.htm:
ftp> get /home/openEuler/openEuler.htm /home/myopenEuler/myopenEuler.htm
Использование команды mget
Описание функции: получает пакет файлов с удалённого узла на локальный.
Формат команды:
mget [remote-file]
Здесь remote-file указывает удалённый файл.
Например, чтобы получить все файлы из каталога /home/openEuler/ на сервере, выполните команду:
ftp> cd /home/openEuler/
ftp> mget *.*
|
В этом случае отображается сообщение при каждой загрузке файла.
Чтобы заблокировать вывод сведений в командной строке, перед запуском Файлы загружаются в текущий каталог на узле Linux.
Например, если вы запустите команду ftp в |
Отправка файла
Как правило, для отправки файлов используется команда put или mput.
Использование команды put
Функция: передает локальный файл на удалённый узел.
Формат команды:
put [local-file] [remote-file]
Здесь remote-file указывает удалённый файл, а local-file — локальный.
Например, следующая команда позволяет передать локальный файл myopenEuler.htm на удалённый узел /home/openEuler/ и изменить имя файла на openEuler.htm:
ftp> put myopenEuler.htm /home/openEuler/openEuler.htm
Использование команды mput
Функция: передает пакет файлов с локального узла на удалённый.
Формат команды:
mput [local-file]
Здесь local-file указывает локальный файл.
Например, чтобы передать все HTM-файлы из локального каталога в каталог /home/openEuler/ на сервере, выполните команду:
ftp> cd /home/openEuler/
ftp> mput *.htm
Удаление файла
Как правило, для удаления файла используется команда delete или mdelete.
Использование команды delete
Описание функции: удаляет один или несколько файлов с удалённого сервера.
Формат команды:
delete [remote-file]
Здесь remote-file указывает удалённый файл.
Например, чтобы удалить файл /home/openEuler/openEuler.htm с удалённого сервера, выполните команду:
ftp> cd /home/openEuler/
ftp> delete openEuler.htm
Использование команды mdelete
Описание функции: удаляет файлы с удалённого сервера. Эта функция используется для пакетного удаления файлов.
Формат команды:
mdelete [remote-file]
Здесь remote-file указывает удалённый файл.
Например, чтобы удалить все файлы, имена которых начинаются на букву a, из каталога `/home/openEuler/ на удалённом сервере, выполните команду:
ftp> cd /home/openEuler/
ftp> mdelete a*