ftp 文件传输协议

什么是FTP

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。

FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。

变种

VSFTP(Very Secure FTP 更安全的ftp服务协议)
TFTP(Trivial File Transfer Protocol,简单文件传输协议)

FTP的工作模式--主动/被动模式

ftp服务器主动模式情况下,ftp服务的端口是20用来传输数据,21号端口用来建立连接

主动ftp模式/port模式

客户端从一个动态端口N(N>1024)连接到FTP服务器的21号命令端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)

2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口)

3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口)

4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

被动FTP(即当客户端通知服务器它处于被动模式时才启用服务,为默认工作模式

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

FTP的认证模式

匿名开放模式:最不安全的认证模式,任何人都可以无需密码验证而直接登录

本地用户模式:通过 Linux 系统本地的账户密码信息进行认证的模式,配置简单

虚拟用户模式: FTP 服务建立用户数据库文件,虚拟出用来进行口令验证的账户信息


vsftp服务建立

vsftpd(very secure ftp daemon,更安全的 FTP 守护进程)

yum install vsftpd ftp
chown -Rf ftp /var/ftp/pub #打开用户对共享文件夹的权限

配置文件目录为 /etc/vsftpd
服务分享的文件夹为 /var/ftp/pub

主配置文件内容及解释grep -v ^# /etc/vsftpd/vsftpd.conf

image

匿名开放模式

# cat /etc/vsftpd/vsftpd.conf
#匿名用户模式配置
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

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
tcp_wrappers=YES

重启服务与让服务开机自启动
systemctl restart vsftpd
systemctl enable vsftpd

匿名anonymous登录测试

$ ftp 192.168.0.112
Connected to 192.168.0.112.
220 (vsFTPd 3.0.2)
Name (192.168.0.112:alex): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       0               6 Jul 22 18:20 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir testdir
257 "/pub/testdir" created
ftp> put teleconsole.sh testfile
local: teleconsole.sh remote: testfile
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
963 bytes sent in 0.00 secs (7.6532 MB/s)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       50              6 Jul 22 18:20 testdir
-rw-r--r--    1 14       50            963 Jul 22 18:21 testfile
226 Directory send OK.
ftp> get testfile
local: testfile remote: testfile
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for testfile (963 bytes).
226 Transfer complete.
963 bytes received in 0.00 secs (16.1121 MB/s)
ftp> rm testfile
550 Remove directory operation failed.
ftp> exit
221 Goodbye.

当然,你也可以使用浏览器访问,点击文件即可下载


使用Chrome访问

本地用户模式

这个有了匿名模式的基础就相对简单了,改下配置文件然后重启就行

# cat vsftpd.conf
#本地用户模式配置
anonymous_enable=NO
#anon_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES

local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
userlist_deny=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
tcp_wrappers=YES

虚拟用户模式

这个实现有点麻烦,有以下几个步骤要实现
1.在vsftp主配置文件目录下创建文件 vuser.list(此文件奇数行为用户名,偶数行为用户密码,文件名随意)
2.给vuser.list加密为vuser.db,并降低权限,同是删除源文件vuser.list
3.由于用户登录会有一个家目录,所以我们要在服务器上有一个映射的用户。同时我们关闭本地账户的登录提高安全性

# cat /etc/vsftpd/vuser.list
ftp
123456
virtual
654321
#db_load -T -t hash -f vuser.list vuser.db
# chmod 600 vuser.db
# rm -f vuser.list

#useradd -d /var/ftproot -s /sbin/nologin virtual
# chmod -Rf 755 /var/ftproot/

4.建立用于支持虚拟用户的 PAM 文件(PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的 API 把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。)
5.在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为 vsftpd.vu

~# cat  /etc/pam.d/vsftpd.vu
auth    required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

~# cat vsftpd.conf
#虚拟用户模式配置
anonymous_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
guest_enable=YES
#虚拟账户用户名virtual
guest_username=virtual
allow_writeable_chroot=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文件
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
同时也可使用浏览器访问

TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69(UDP,可将其当作 FTP 协议的简化版本)

TFTP 的命令功能不如 FTP 服务强大,甚至不能遍历目录,在安全性方面也弱于 FTP服务。而且,由于 TFTP 在传输文件时采用的是 UDP 协议,占用的端口号为 69,因此文件的传输过程也不像 FTP 协议那样可靠。但是,因为 TFTP 不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。

TFTP 服务是使用 xinetd 服务程序来管理的。xinetd 服务可以用来管理多种轻量级的网络服务,而且具有强大的日志功能。简单来说,在安装 TFTP 软件包后,还需要在 xinetd 服务程序中将其开启,把默认的禁用(disable)参数修改为 no
他的分享目录是/var/lib/tftpboot


TFTP服务建立

yum -y install tftp-server tftp
vi /etc/xinetd.d/tftp #将off改为on
systemctl restart xinetd
systemctl enable xinetd
firewall-cmd --permanent --add-port=69/udp
firewall-cmd --reload

[root@centos7]# cat /etc/xinetd.d/tftp
# default: off
service tftp

        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
#############################  此下off改为no
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

测试

root@ubuntus:~# tftp 192.168.0.112
tftp> get testfile
Received 11 bytes in 0.0 seconds
tftp> quit
root@ubuntus:~# cat testfile
test tftp

对于selinux开启的linux服务器,在vsftp下打开目录的写权限也无法上传文件,有两种方法可以解决
1.暂时关闭selinux setenforce 0
2.添加selinux准入规则 setsebool -P ftpd_full_access=on

[root@centos7 vsftpd]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@centos7 vsftpd]# setsebool -P ftpd_full_access=on


PS:
使用vsftp搭建ftp服务 vsftp pam db4
使用Vsftpd服务传输文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容