Linux部署FTP服务

FTP服务

FTP服务,全称File Transfer Protocol(文件传输协议),是用于在网络上进行文件传输的一套标准协议。以下是关于FTP服务的清晰解释:

  1. 定义:
    • FTP服务是一种在两台计算机之间传输文件的协议,它采用客户端/服务器工作模式,确保文件传输的可靠性。
    • 客户端程序负责将用户的请求告知服务器,并将服务器发回的结果显示出来;而服务器端则执行存储、发送等工作。
  1. 工作原理:
    • FTP工作在OSI模型的第七层,TCP模型的第四层,即应用层,使用TCP传输而不是UDP。
    • 在客户与服务器建立连接前,会经过一个“三次握手”的过程,确保连接是可靠的、面向连接的,为数据传输提供可靠保证。
    • FTP在两台通信的主机之间使用了两条TCP连接:一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应)。
  1. 特点:
    • 跨平台性:FTP协议可以在UNIX、Linux和Windows等操作系统中实现客户端和服务器,相互之间可跨平台进行文件的传输。
    • 权限设置:FTP服务器可根据实际需要设置各用户的使用权限。
    • 资源共享:FTP服务是网络中经常采用的资源共享方式之一,用户可以通过FTP协议访问远程资源,实现文件的上传、下载、目录管理以及访问电子邮件等。
  1. 应用场景:
    • 文件共享:FTP服务器可以作为文件存储和访问服务的计算机,允许其他计算机通过FTP协议访问和下载其中的文件,实现文件共享的目的。
    • 虚拟机中的应用:在虚拟机中,FTP的应用场景主要是进行文件的上传和下载操作,比如从一个服务器传输文件到另一个服务器,或者从本地计算机传输文件到服务器。
  1. 优势:
    • FTP协议凭借其独特的优势,如高可靠性、跨平台性和可配置的用户权限等,一直都是因特网中最重要、最广泛的服务之一。
    • FTP能够操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。

通过FTP服务,用户可以方便地在网络上进行文件的传输和管理,实现资源的共享和高效利用。

FTP端口号

控制连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20,用于上传、下载数据

FTP的模式

主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器,于是服务器从20端口向客户端的该端口发送请求并建立数据连接

被动模式:服务器被动等待数据连接。如果客户机所在的网络防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时服务器以PASV命令告知客户端,于是客户端向服务器的该端口请求并建立数据连接。

客户端与服务器建立好数据连接以后,就可以根据从控制连接中发送的FTP命令上传文件或下载文件了

FTP的传输模式

文本模式:ASCII模式,这种模式在传输文件时使用ASCII标准字符序列,一般只用于纯文本传输

二进制模式:Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序,图片等非纯文本字符的文件。

使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式。

FTP的用户类型

匿名用户:anonymous或者ftp

本地用户:FTP服务器可以直接使用本机的系统用户账号来进行验证。账号名称和密码等信息保存在passwd,shadow文件中。

虚拟用户:FTP服务器软件还可以维护一份独立的用户数据库文件,而不是直接使用的系统用户账号。使用独立的账号密码数据文件。

安装FTP

yum -y install vsftpd

匿名用户

安装好以后默认就启用了匿名用户,权限只够查看和下载,如果想要让匿名用户拥有上传文件,创建目录或者移动等就需要配置

修改配置文件

vi /etc/vsftpd/vsftpd.conf

#在anonymous_enable=YES下添加

#设置匿名用户的umask值

anon_umask=022

#允许匿名用户上传文件

anon_upload_enable=YES

#允许匿名用户创建目录

anon_mkdir_write_enable=YES

#允许匿名用户进行其他操作

anon_other_write_enable=YES

重启服务

chown ftp /var/ftp/pub/

systemctl restart vsftpd

客户端测试

[root@bogon ~]# ftp 192.168.93.138

Connected to 192.168.207.131 (192.168.93.138).

220 (vsFTPd 3.0.2)

Name (192.168.93.138:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd pub

250 Directory successfully changed.

ftp> put time.txt

local: time.txt remote: time.txt

227 Entering Passive Mode (192,168,93,138,66,247).

150 Ok to send data.

226 Transfer complete.

29 bytes sent in 5.9e-05 secs (491.53 Kbytes/sec)

ftp> ls

227 Entering Passive Mode (192,168,93,138,241,119).

150 Here comes the directory listing.

-rw-r--r-- 1 14 50 29 Jun 13 03:16 time.txt

226 Directory send OK.

ftp> get time.txt

local: time.txt remote: time.txt

227 Entering Passive Mode (192,168,93,138,37,42).

150 Opening BINARY mode data connection for time.txt (29 bytes).

226 Transfer complete.

29 bytes received in 0.000224 secs (129.46 Kbytes/sec)

本地用户

修改配置文件

vi /etc/vsftpd/vsftpd.conf

#在local_enable=YES下添加

chroot_local_user=YES

allow_writeable_chroot=YES

重启服务

systemctl restart vsftpd

创建用户

useradd zhangsan

passwd zhangsan

输入密码

确认密码

客户端测试

[root@bogon ~]# ftp 192.168.93.138

Connected to 192.168.93.138 (192.168.93.138).

220 (vsFTPd 3.0.2)

Name (192.168.93.138:root): zhangsan

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,93.138,161,43).

150 Here comes the directory listing.

226 Directory send OK.

ftp> put time.txt

local: time.txt remote: time.txt

227 Entering Passive Mode (192,168,93.138,148,58).

150 Ok to send data.

226 Transfer complete.

29 bytes sent in 7.6e-05 secs (381.58 Kbytes/sec)

ftp> get time.txt

local: time.txt remote: time.txt

227 Entering Passive Mode (192,168,93.138,200,167).

150 Opening BINARY mode data connection for time.txt (29 bytes).

226 Transfer complete.

29 bytes received in 0.00024 secs (120.83 Kbytes/sec)

ftp>

黑名单白名单

/etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers 是 vsftpd FTP 服务器使用的两个重要文件,用于控制用户访问权限。这两个文件的具体作用如下:

/etc/vsftpd/ftpusers:这个文件包含了一个用户列表,列表中的用户将被拒绝通过 FTP 访问服务器。

默认情况下,这个文件通常包含如 root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, gopher, ftp, nobody, www-data, backup, list, irc 和 gnats 等系统或服务用户。

这些用户由于具有特殊的系统权限或用于特定的服务,因此不应通过 FTP 访问服务器,以避免安全风险。

/etc/vsftpd/user_list:这个文件的作用取决于 vsftpd 配置文件中的 userlist_deny 和 userlist_enable 设置。

当 userlist_enable=YES 时,vsftpd 会检查这个文件。

如果 userlist_deny=YES(默认值),则 user_list 文件中的用户将被拒绝访问 FTP 服务器。这类似于 ftpusers 文件,但通常用于定义额外的用户限制。

如果 userlist_deny=NO,则只有列在 user_list 文件中的用户才被允许访问 FTP 服务器,其他所有用户都将被拒绝。这可以用于创建一个只允许特定用户访问的白名单。

总结:

ftpusers 是一个固定的黑名单,列在其中的用户无论如何都不能通过 FTP 访问服务器。

user_list 可以作为黑名单(默认)或白名单(当 userlist_deny=NO 时),具体取决于 vsftpd 的配置。

为了服务器的安全,管理员应定期检查并更新这两个文件,确保只有合适的用户能够访问 FTP 服务。

虚拟用户

准备账号密码文件

vi /etc/vsftpd/vusers.list

lisi

123

wangwu

123

账号密码加密文件

cd /etc/vsftpd

db_load -T -t hash -f vusers.list vusers.db

chmod 600 /etc/vsftpd/vusers.*

添加虚拟用户的映射账号

useradd -d /var/ftproot -s /sbin/nologin myftp

chmod 755 /var/ftproot

编写PAM文件

vi /etc/pam.d/vsftpd.vu

auth required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vsftpd/vusers

修改vsftpd配置文件

vi /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd.vu

guest_enable=yes

guest_username=myftp

重启服务

systemctl restart vsftpd

客户端测试

[root@bogon ~]# ftp 192.168.93.138

Connected to 192.168.93.138(192.168.93.138).

220 (vsFTPd 3.0.2)

Name (192.168.93.138:root): lisi

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> quit

221 Goodbye.

[root@bogon ~]# ftp 192.168.93.138

Connected to 192.168.207.131 (192.168.93.138).

220 (vsFTPd 3.0.2)

Name (192.168.93.138:root): wangwu

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

配置虚拟账号的权限

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

cd /etc/vsftpd/vusers_dir

vi list

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

touch wangwu

systemctl restart vsftpd

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值