Служба передачи файлов FTP в среде Linux

задняя часть Linux Эксплуатация и обслуживание
Служба передачи файлов FTP в среде Linux

Это 9-й день моего участия в Gengwen Challenge, смотрите подробности мероприятия: больше текстового задания


Обзор

FTP (протокол передачи файлов, протокол передачи файлов) является типичным протоколом прикладного уровня структуры C/S, и функция передачи файлов должна быть реализована программным обеспечением сервера и программным обеспечением клиента вместе.

FTP-соединение и режим передачи

По умолчанию FTP-сервер использует порты 20 и 21 протокола TCP для связи с клиентом. Порт 20 используется для установления соединения для передачи данных и передачи файловых данных, порт 21 используется для установления управляющего соединения и передачи команд управления FTP.

  • Активный режим: сервер активно инициирует подключение для передачи данных. Сначала клиент устанавливает управляющее FTP-соединение с портом сервера 21. Когда данные должны быть переданы, клиент сообщает серверу с помощью команды PORT: «Я открыл определенный порт, подойди и подключись ко мне», поэтому сервер отправляет порт с порта 20 на порт клиента Запрос и установка соединения для передачи данных.

  • Пассивный режим: сервер пассивно ожидает подключения для передачи данных. Пассивный режим обычно используется, если брандмауэр в сети клиента запрещает подключения в активном режиме. Сначала клиент устанавливает управляющее FTP-соединение с портом сервера 21. Когда данные необходимо передать, сервер сообщает клиенту: «Я открыл определенный порт, подойди и подключись ко мне» с помощью команды PASV, поэтому клиент отправляет запрос на порт сервера и устанавливает соединение для передачи данных.

После того, как клиент установил соединение для передачи данных с сервером, он может загружать или скачивать файлы в соответствии с FTP-командами, отправленными из управляющего соединения. При передаче файлов он делится на текстовый режим и двоичный режим в зависимости от того, выполняется ли преобразование символов или нет.

  • Текстовый режим: также известный как режим ASCII (американский стандартный код для обмена информацией, американский стандартный код для обмена информацией). Этот режим использует стандартные последовательности символов ASCII при передаче файлов и обычно используется только для передачи простых текстовых файлов.

  • Двоичный режим: также известный как двоичный режим, этот режим не преобразует последовательность символов в файле и больше подходит для передачи файлов с непростыми текстовыми символами, таких как программы и изображения.

Тип пользователя FTP

При использовании программного обеспечения FTP-клиента для доступа к серверу обычно используется специальный тип учетной записи пользователя.Его имя пользователя - ftp или анонимный.Любой пароль (включая пустой пароль) может быть аутентифицирован сервером.Такие пользователи становятся "анонимными пользователями" .". Обычно используется для обеспечения загрузки общедоступных файлов и т. д.

В дополнение к анонимным пользователям, которым не требуется аутентификация по паролю, FTP-сервер также может напрямую использовать системную учетную запись пользователя для аутентификации.Таких пользователей часто называют «локальными пользователями». Анонимные пользователи также имеют соответствующую учетную запись пользователя локальной системы «ftp», но для службы vsftpd локальные пользователи относятся к другим системным пользователям, кроме анонимных пользователей.

Некоторое программное обеспечение FTP-сервера также может поддерживать отдельный файл базы данных пользователей вместо непосредственного использования системной учетной записи пользователя. Эти учетные записи пользователей FTP, расположенные в отдельных файлах базы данных, называются «виртуальными пользователями». При использовании виртуальных пользователей связь учетных записей FTP с системными учетными записями Linux сводится к минимуму, что может обеспечить лучшую безопасность системы.

Типы программного обеспечения FTP-сервера

В системе Windows общее программное обеспечение FTP-сервера включает FileZilla Sener, Serv-U и т. д., тогда как в системе Linux vsftpd является широко используемым программным обеспечением службы FTP в области Linux/UNIX. Программное обеспечение сделало много дизайна для функций безопасности. В дополнение к безопасности, производительность vsftpd также весьма выдающаяся с точки зрения скорости и стабильности. Может поддерживать одновременное подключение 15000 пользователей.

Типы инструментов FTP-клиента

Обе системы Windows и Linux по умолчанию имеют свою собственную командную программу ftp, которая может подключаться к FTP-серверу для интерактивной загрузки и загрузки. В дополнение к этому существует большое количество графических инструментов FTP-клиента. Обычно используемые в Windows включают CuteFTP, FlashFXP, LeapFTP, Filezilla и т. д.;

Подготовка окружающей среды

Смонтируйте компакт-диск и создайте репозиторий YUM.

[root@localhost ~]# cd /
[root@localhost /]# ls
bin   cgroup  etc   lib    lost+found  misc  net  proc  sbin     srv  tmp  var
boot  dev     home  lib64  media       mnt   opt  root  selinux  sys  usr
[root@localhost /]# mkdir /181201
[root@localhost /]# mount /dev/cdrom /181201/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost /]# alias vi='/usr/bin/vim'
[root@localhost /]# which -a vi vim
alias vi='/usr/bin/vim'
 /usr/bin/vim
/bin/vi
/usr/bin/vim
[root@localhost /]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo
[root@localhost yum.repos.d]# mkdir a
[root@localhost yum.repos.d]# mv C* a
[root@localhost yum.repos.d]# ls
a
[root@localhost yum.repos.d]# mv a/CentOS-Debuginfo.repo .
[root@localhost yum.repos.d]# ls
a  CentOS-Debuginfo.repo
[root@localhost yum.repos.d]# cp CentOS-Debuginfo.repo yum.back
[root@localhost yum.repos.d]# ls
a  CentOS-Debuginfo.repo  yum.back
[root@localhost yum.repos.d]# vi CentOS-Debuginfo.repo
[debug]
name=CentOS-6 - Debuginfo
baseurl=file:///181201
gpgcheck=0
enabled=1

Установить службу vsftpd

[root@localhost yum.repos.d]# yum -y install vsftpd*
Loaded plugins: fastestmirror, refresh-packagekit, security
debug                                                     | 4.0 kB     00:00 ...
debug/primary_db                                          | 4.4 MB     00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-11.el6_4.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
Package           Arch              Version                       Repository        Size
==========================================================================================
Installing:
vsftpd            x86_64            2.2.2-11.el6_4.1              debug            151 k

Transaction Summary
==========================================================================================
Install       1 Package(s)

Total download size: 151 k
Installed size: 331 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing : vsftpd-2.2.2-11.el6_4.1.x86_64                                         1/1
 Verifying  : vsftpd-2.2.2-11.el6_4.1.x86_64                                         1/1

Installed:
 vsftpd.x86_64 0:2.2.2-11.el6_4.1                                                        

Complete!
[root@localhost yum.repos.d]#

Установите инструмент db_load и создайте пользователя (буквы — учетные записи, четные цифры — пароли);

[root@localhost yum.repos.d]# rpm -ivh /181201/Packages/db4-utils-4.7.25-18.el6_4.x86_64.rpm
warning: /181201/Packages/db4-utils-4.7.25-18.el6_4.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
 package db4-utils-4.7.25-18.el6_4.x86_64 is already installed
[root@localhost yum.repos.d]# cd /etc/vsftpd/
[root@localhost vsftpd]# vi user
xiao
666
ming
666
hua
666

Шифруйте пользовательские файлы и создавайте файлы аутентификации PAM, поддерживающие виртуальных пользователей;

[root@localhost vsftpd]# db_load -T -t hash -f user user.db
[root@localhost vsftpd]# useradd -s /sbin/nologin 181201
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.181201
auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

Добавьте поддержку виртуальных пользователей в конфигурационный файл vsftpd и запустите службу vsftpd;

[root@localhost vsftpd]# vi vsftpd.conf
write_enable=YES         //启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
anon_umask=022          //设置匿名用户所上传文件的默认权限掩码值
anonymous_enable=YES      //是否允许匿名访问
anon_upload_enable=YES    //是否允许匿名用户上传文件
anon_mkdir_write_enable=YES //是否允许匿名用户有创建目录的写入权限
anon_other_write_enable=NO  //是否允许匿名用户有其他写入权限,如对文件改名、覆盖及删除文件等
dirmessage_enable=YES     //用户切换进入目录时显示.message文件(如果存在)的内容
xferlog_enable=YES       //启用xferlog日志,默认记录到/var/log/xferlog
connect_from_port_20=YES  //允许服务器主动模式(从20端口建立数据连接)
xferlog_std_format=YES   //启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
listen=YES           //是否以独立运行的方式监听服务
userlist_enable=NO     //是否启用user_list用户列表文件
tcp_wrappers=YES      //是否启用TCP_Wrappers主机访问控制
guest_enable=YES      //启用用户映射功能
guest_username=181201   //指定映射的系统用户名称
pam_service_name=vsftpd.181201  //指定新的PAM认证文件
chroot_local_user=YES   //是否将FTP本地用户禁锢在宿主目录中
local_umask=077       //设置本地用户所上传文件的默认权限掩码
local_enable=YES      //是否允许本地系统用户访问
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir //查找每个用户的独立
[root@localhost vsftpd]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
[root@localhost vsftpd]#

Создайте отдельный файл конфигурации для виртуального пользователя и дайте разрешения (файл конфигурации должен поддерживать каталог конфигурации пользователя, строка над службой запуска на рисунке выше) и укажите корневой каталог пользователя wang

[root@localhost vsftpd]# mkdir /20181201
[root@localhost vsftpd]# chown 181201:181201 /20181201/
[root@localhost vsftpd]# chmod 777 /20181201/
[root@localhost vsftpd]# ls -ldh /20181201/
drwxrwxrwx. 2 181201 181201 4.0K 6月   4 08:04 /20181201/
[root@localhost vsftpd]# mkdir /etc/vsftpd//user_dir
[root@localhost vsftpd]# cd user_dir/
[root@localhost user_dir]# vi wang
local_root=/20181201

Протестируйте анонимный FTP-сервер: после настройки vsftpd и запуска службы вы можете использовать инструмент клиента FTP для проверки. На хосте Windows вы можете ввести URL-адрес в адресную строку «компьютер» для доступа, а в символьном интерфейсе Linux вы можете использовать команду ftp для проверки.

[root@localhost ~]# ftp 172.20.10.6
Connected to 172.20.10.6 (172.20.10.6).
220 (vsFTPd 2.2.2)
Name (172.20.10.6:root): xiao   //用户名
331 Please specify the password.
Password:                //密码可任意输入,或直接回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir 201812011255      //分别创建了两个目录
257 "/201812011312" created
ftp> mkdir 201812011256
257 "/201812011313" created
ftp>                  //成功登录后的操作提示符

Затем проверьте каталог по умолчанию на FTP-сервере, чтобы увидеть, есть ли два только что созданных каталога.

[root@localhost ~]# cd /home/181201/
[root@localhost 181201]# ls
201812011312  201812011313
[root@localhost 181201]#

Эта статья закончилась.


Оригинальность непростая.Если вы считаете, что эта статья полезна для вас, ставьте лайк, комментируйте или пересылайте эту статью, потому что это будет моей мотивацией выпускать больше качественных статей, спасибо!

Увидимся в следующий раз!