- •1. Описание протокола FTP.
- •3. Монтирование удалённой серверной ftp-директории как локальной файловой системы клиента.
- •ascii_upload_enable
- •background
- •check_shell
- •chmod_enable
- •chown_uploads
- •chroot_list_enable
- •chroot_local_user
- •connect_from_port_20
- •debug_ssl
- •delete_failed_uploads
- •4. Описание параметров конфигурационного файла vsftpd.conf.
- •allow_anon_ssl
- •anon_mkdir_write_enable
- •anon_other_write_enable
- •anon_world_readable_only
- •anonymous_enable
- •ascii_download_enable
- •deny_email_enable
- •dirlist_enable
- •dirmessage_enable
- •download_enable
- •dual_log_enable
- •force_dot_files
- •force_anon_data_ssl
- •force_anon_logins_ssl
- •force_local_data_ssl
- •force_local_logins_ssl
- •guest_enable
- •hide_ids
- •implicit_ssl
- •listen
- •listen_ipv6
- •local_enable
- •lock_upload_files
- •log_ftp_protocol
- •ls_recurse_enable
- •no_anon_password
- •no_log_lock
- •one_process_model
- •passwd_chroot_enable
- •pasv_addr_resolve
- •pasv_enable
- •pasv_promiscuous
- •port_enable
- •port_promiscuous
- •require_cert
- •run_as_launching_user
- •secure_email_list_enable
- •session_support
- •setproctitle_enable
- •ssl_enable
- •ssl_request_cert
- •ssl_sslv2
- •ssl_sslv3
- •ssl_tlsv1
- •strict_ssl_read_eof
- •strict_ssl_write_shutdown
- •syslog_enable
- •tcp_wrappers
- •text_userdb_names
- •tilde_user_enable
- •use_localtime
- •use_sendfile
- •userlist_deny
- •userlist_enable
- •validate_cert
- •virtual_use_local_privs
- •write_enable
- •xferlog_enable
- •xferlog_std_format
- •accept_timeout
- •anon_max_rate
- •anon_umask
- •chown_upload_mode
- •connect_timeout
- •data_connection_timeout
- •delay_failed_login
- •delay_successful_login
- •ftp_data_port
- •idle_session_timeout
- •listen_port
- •local_max_rate
- •local_umask
- •max_clients
- •max_login_fails
- •pasv_max_port
- •pasv_min_port
- •trans_chunk_size
- •anon_root
- •banned_email_file
- •banner_file
- •ca_certs_file
- •chown_username
- •chroot_list_file
- •cmds_allowed
- •cmds_denied
- •deny_file
- •dsa_cert_file
- •dsa_private_key_file
- •email_password_file
- •ftp_username
- •ftpd_banner
- •guest_username
- •hide_file
- •listen_address
- •listen_address6
- •local_root
- •message_file
- •nopriv_user
- •pam_service_name
- •pasv_address
- •rsa_cert_file
- •rsa_private_key_file
- •secure_chroot_dir
- •ssl_ciphers
- •user_config_dir
- •userlist_file
- •vsftpd_log_file
- •xferlog_file
- •5. Система инициализации и управления службами systemd.
- •6. Systemctl. Команда-диспетчер systemd.
- •7. Менеджер пакетов dnf.
- •8. Список литературы.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ГЕОДЕЗИИ И КАРТОГРАФИИ»
(МИИГАиК)
Кафедра информационно-измерительных систем
Лабораторная работа №4.
Тема: Первичная настройка FTP-сервера.
Группа: 2022-ФГиИБ-ИСиТ-1б Студент: Дыгало Матвей Преподаватель: Дручинин С.С.
Москва, 2023
1. Описание протокола FTP.
Протокол FTP (RFC-959) обеспечивает файловый обмен между удаленными пользователями. Протокол FTP формировался многие годы. Первые реализации в МТИ относятся к 1971 году (RFC 114 и 141). RFC 172 рассматривает протокол, ориентированный на пользователя, и предназначенный для передачи файлов между ЭВМ. Позднее в документах RFC 265 и RFC 281 протокол был усовершенствован. Заметной переделке протокол подвергся в 1973 и окончательный вид он обрел в 1985 году. Таким образом, протокол передачи файлов FTP является одним из старейших изобретённых программных протоколов.
Для реализации обмена между двумя персональными ЭВМ в пределах сети (программные пакеты PCTCP и т.д.) можно резидентно загрузить FTPSRV или другую эквивалентную программу. Как и в случае TELNET для работы с протоклом FTP необходимо пройти стадии идентификации и аутентификации пользователя, но многие депозитарии допускают анонимный вход (имя пользователя ANONYMOUS, RFC-1635), который не требует слова пропуска (пароля) или допускает ввод вашего почтового адреса вместо него.
Работа протокола FTP на уровне пользователя включает в себя следующие этапы:
1.Идентификация и аутентификация (ввод имени пользователя и пароля).
2.Выбор рабочего каталога.
3.Определение режима файлового обмена (поблочный, поточный, ASCII или двоичный).
4.Выполнение команд файлового обмена (get, mget, put, mput, mdel, dir).
5.Завершение процедуры файлового обмена (quit или close). Протокол FTP поддерживает две логические связи между ЭВМ (между
клиентом и сервером), используя для этого соответственно сетевые порты 21 и
20. Первая связь служит для удалённого доступа, передачи управляющих команд и использует протокол удалённого доступа к компьютеру TELNET. Вторая связь предназначена для непосредственной передачи данных от клиента к серверу и наоборот. Сервер производит операцию passive open для порта 21 и ждёт соединения с клиентом. Клиент осуществляет операцию active open для порта 21. Канал связи остаётся активным до завершения процедуры файлового обмена FTP, он соответствует минимуму задержки, так как используется для ручного ввода управляющих команд от пользователя. Канал передачи данных (по порту 20) формируется каждый раз для пересылки файлов. Канал данных открывается перед началом пересылки и закрывается по коду end_of_file (EOF, конец файла). В данном случае канал ориентирован не на минимум задержки, а на максимальную пропускную способность.
Конечный пользователь взаимодействует с протокольным протокольным интерпретатором, в задачи которого входит управление обменом информацией между пользователем и файловой системой, как локальной, так и удалённой. Сначала по запросу клиента формируется канал управления (порт 21, канал связи), который в дальнейшем используется для передачи команд от клиента и откликов от сервера. Информационный канал (канал данных, порт 20) формируется сервером по команде клиента, он не должен существовать постоянно на протяжении всей FTP-сессии и может формироваться и ликвидироваться по мере необходимости. Канал управления может быть закрыт только после завершения информационного обмена. Для канала управления, как было сказано выше, используется протокол удалённого управления компьютером TELNET. После того, как управляющий канал сформирован, клиент может посылать по нему команды. Сервер воспринимает, интерпретирует эти команды и передаёт отклики.
На фазе определения режима файлового обмена мы можем выбрать следующие параметры передачи:
1. Команда BLOCK сохраняет структуру логических записей файла.
2.Команда STREAM устанавливает режим, при котором не производится пересылки контрольной информации для блоков. Это наиболее быстрый режим обмена, он работает по умолчанию.
3.Команда TYPE позволяет задать режимы обмена IMAGE, ASCII и EBCDIC. Из них ASCII используется по умолчанию. Режим IMAGE
предполагает обмен 8-разрядными байтами и используется для передачи двоичной, а не текстовой информации.
Для копирования файла из удалённого сервера используется управляющая команда GET, для копирования группы файлов — MGET, в последнем случае применяются символы-заменители, например, MGET *.txt. Команда DIR (ls) отправляет клиенту содержимое текущего рабочего каталога. Для записи файла в удалённый сервер используется команда PUT. Для завершения FTP сессии и выхода из протокольного интерпретатора используется команда quit. Кроме того, для просмотра дополнительных команд, возможных к применению, можно использовать вспомогательную команду HELP.
2.Шаги по первичному развёртыванию FTP-сервера на виртуальной ОС.
1.Для начала необходимо запустить пользовательский программный гипервизор VirtualBox. После этого осуществляем запуск виртуальной машины, содержащей Linux-подобную операционную систему RedOS, входим в учётную запись и запускаем терминал с оболочкой shell.
2.(Опционально) Переключаемся на учётную запись суперпользователя (root) с помощью команды su. Иначе, для большинства введенных далее команд потребуется исполнение от имени администратора командой sudo.
3. С помощью менеджера пакетов и модулей dnf устанавливаем сверхбезопасного ftp-демона (vsftpd), осуществляющего управление протоколом FTP, и сами модули протокола FTP.
4.С помощью команды systemctl start vsftpd (команды-диспетчера системы инициализации и управления службами systemd) запускаем демонаслужбу vsftpd, с помощью команды systemctl enable vsftpd включаем ftpдемона в автозагрузку и создаём символьную ссылку на эту службу в каталоге /etc/systemd/system.
5.Создаём бэкап-файл конфигурации службы vsftpd с помощью команды cp /etc/vsftpd/vsftpd.conf vsftpd.conf.backup . Далее, с помощью команды vim /etc/vsftpd/vsftpd.conf открываем файл конфигурации демона vsftpd в текстовом редакторе vim, редактируем файл, разрешая анонимный доступ к файлам через FTP (anonymous_enable=YES). После этого
перезапускаем демона vsftpd с помощью команды systemctl restart vsftpd и просматриваем статус службы vsftpd.service с помощью команды systemctl status vsftpd.
6.Создаем каталог командой mkdir –p /srv/share/ftp и делаем ее основной директорией для системного пользователя ftp командой usermod –d /srv/share/ftp ftp.
7.С помощью команды dnf install lftp устанавливаем ftp-клиент lftp, который позволяет осуществлять монтирование удалённой серверной ftpдиректории как локальной файловой системы клиента.
8.Для того, чтобы проверить работу настроенного ftp-сервера, создадим в нашем каталоге тестовый файл с любым содержанием, например vim /srv/share/ftp/123.txt. Для того, чтобы файл гарантированно был в свободном доступе, дополнительно выдадим всем пользователям разрешения на работу с ним командой chmod 666 /srv/share/ftp/123.txt.
9.Подключимся к серверу, предварительно выяснив его ip адрес с помощью команды ip a. Команда подключения выглядит как lftp <адрес> (по стандарту, 10.0.2.15). Командой ls проверим, доступен ли файл.
10. Теперь пропишем правило для определенного пользователя, которое будет отправлять его в созданный нами каталог. Для этого снова откроем файл /etc/vsftpd/vsftpd.conf и добавим в него строчку user_config_dir=/etc/vsftpd_user_conf.
11. Создадим файл /etc/vsftpd_user_conf/<имя_пользователя> (в данном примере, lazyslav) и в нем пропишем параметр local_root=/srv/share/ftp/
12. Для того, чтобы изменения вступили в работу, перезапускаем демон vsftpd командой systemctl restart vsftpd.
13. Установим filezilla – ftp-клиент с графическим интерфейсом. Для этого выполним команду dnf install filezilla.
14.Откроем filezilla. В верхней строке пропишем ip адрес нашей машины и данные пользователя, для которого мы ранее создали правило. Нажав «Быстрое соединение» увидим два всплывающих окна: о сохранении паролей внутри filezilla и предупреждение о небезопасном соединении. Пропускаем оба и в правой вкладке с подзаголовком «Удаленный сайт» будет показана текущая наша директория и доступные нам файлы (в частности, созданный нами файл 123.txt, который мы теперь можем переместить в желаемую локальную директорию, как если бы удаленный ftp-сервер был подключенной файловой системой. После этого сверху в логах и снизу во вкладке «Успешные передачи» мы должны увидеть сообщение об успешной передаче файла.
