Настройка 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. Если отображается следующая информация, сервис vsftpd включен.

    # netstat -tulnp | grep 21
    tcp6       0      0 :::21                   :::*                    LISTEN      19716/vsftpd
    

    ПРИМЕЧАНИЕ.
    Если команда netstat не существует, запустите команду dnf install net-tools, чтобы установить программное обеспечение net-tools, а затем выполните команду netstat.

  • Остановка сервисов vsftpd

    # systemctl stop vsftpd
    
  • Перезапуск сервиса vsftpd

    # systemctl restart vsftpd
    

Настройка vsftpd#

Файлы конфигурации vsftpd#

Файл конфигурации vsftpd можно редактировать для управления пользовательскими разрешениями. Описание файлов конфигурации vsftpd приведено в таблице 1 . Вы можете изменять файлы конфигурации по мере необходимости. Используйте команду man, чтобы просмотреть дополнительные значения параметров.

Таблица 1. Файлы конфигурации vsftpd

Описание конфигурации по умолчанию#

ПРИМЕЧАНИЕ.
Содержимое конфигурации в этом документе приводится только для справки. Вы можете изменить его в соответствии с требованиями узла (например, для усиления защиты).

В системе 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

Параметры описаны в таблице 2 .

Таблица 2. Описание параметров

Установка местного времени#

Обзор#

В системе openEuler сервис vsftpd по умолчанию использует среднее время по Гринвичу (GMT), которое может отличаться от местного времени. Например, время GMT на 8 часов отстает от пекинского. Необходимо изменить время GMT на местное, иначе время на сервере и на клиенте не будет совпадать, из-за чего возможны ошибки при отправке и загрузке файлов.

Метод настройки#

Чтобы установить для vsftpd местное время, выполните от имени пользователя root следующие действия.

  1. Откройте файл vsftpd.conf и измените значение use_localtime на YES. Выполните следующую команду:

    # vim /etc/vsftpd/vsftpd.conf
    

    Измените содержимое файла следующим образом:

    use_localtime=YES
    
  2. Перезапустите сервис vsftpd.

    # systemctl restart vsftpd
    
  3. Настройте сервис vsftpd на автоматический запуск при включении питания.

    # systemctl enable vsftpd
    

Настройка приветственной информации#

При использовании сервиса vsftpd обычно должен существовать файл приветственной информации. Чтобы настроить для сервиса файл welcome.txt, выполните от имени пользователя root следующие действия.

  1. Откройте файл конфигурации vsftpd.conf, добавьте приветственную информацию в файл, сохраните файл и выйдите из него.

    # vim /etc/vsftpd/vsftpd.conf
    

    Необходимо добавить следующие строки конфигурации:

    banner_file=/etc/vsftpd/welcome.txt
    
  2. Создайте приветственную информацию. То есть откройте файл welcome.txt, введите приветственную информацию, сохраните файл и выйдите из него.

    # vim /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.

Откройте файл user_list, чтобы просмотреть информацию об учетных записях в текущем файле. Команда и выходные данные имеют следующий вид:

$ vim /etc/vsftpd/user_list
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Проверка настройки FTP-сервиса#

Для проверки можно использовать FTP-клиент, предоставляемый openEuler. Команда и ее вывод следующие. Введите имя пользователя (существующего пользователя в системе) и пароль, когда появится запрос. Если отобразится сообщение “Login successful” (Вход выполнен), это означает, что FTP-сервер настроен.

$ ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-Welcome to this FTP server!
220
Name (localhost:root): USERNAME
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.

ПРИМЕЧАНИЕ.
Если команда ftp не существует, запустите команду dnf install ftp от имени пользователя root, чтобы установить программное обеспечение ftp, а затем выполните команду ftp.

Настройка брандмауэра#

Чтобы открыть доступ к FTP-сервису из Интернета, необходимо настроить брандмауэр и SElinux от имени пользователя root.

# firewall-cmd --add-service=ftp --permanent
success
# firewall-cmd --reload
success
# setsebool -P ftpd_full_access on

Передача файлов#

Обзор#

В этом разделе описывается, как передавать файлы после запуска сервиса vsftpd.

Подключение к серверу#

Формат команды

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 *.*
    

    ПРИМЕЧАНИЕ.
    — В этом случае отображается сообщение при каждой загрузке файла. Чтобы заблокировать вывод сведений в командной строке, перед запуском mget *.* выполните команду prompt off.
    — Файлы загружаются в текущий каталог на узле Linux. Например, если вы запустите команду ftp в /home/myopenEuler/, то все файлы будут загружаться в /home/myopenEuler/.

Отправка файла#

Как правило, для отправки файлов используется команда 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*
    

Отключение от сервера#

Для отключения от сервера используйте команду bye.

ftp> bye