FTP服务初探

FTP服务

课程目标

了解FTP服务器的应用场景

了解FTP服务器的两种工作模式

掌握FTP服务的基本配置

能够根据需求对FTP进行访问控制

一、FTP服务介绍

FTP(File Transfer Protocol)是一种应用非常广泛并且古老的一个互联网文件传输协议。

主要用于互联网中文件的双向传输(上传/下载)、文件共享

跨平台  Linux、Windows

FTP是C/S架构,拥有一个客户端和服务端,使用TCP协议作为底层传输协议,提供可靠的数据传输

FTP的默认端口 21号(命令端口)    20号(数据端口) 默认被动模式下

FTP程序(软件)vsftpd

二、开胃菜-搭建简易FTP服务器

思路:

关闭防火墙和selinux

配置yum源

部署环境:我用的是3A网络云服务器,可以随时更换ip地址,适合小白。

软件三步曲(安装|确认|软件列表)

了解配置文件——>(man 5 xxx.conf)

根据需求通过修改配置文件来完成服务的搭建

启动服务,开机自启动

测试验证

三、FTP服务的客户端工具

Linux:ftp、lftp(客户端程序)

Windows:FileZilla、IE、Chrome、Firefox

lftp和ftp工具区别:

lftp可以批量并且下载目录

lftplocalhost:~>mirrorremotelocal下载整个目录到本地

主动模式

客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求

服务端的21号命令端口响应客户端的随机命令端口

服务端的20号端口主动请求连接客户端的随机数据端口

客户端的随机数据端口进行确认

被动模式

客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求

服务端的21号命令端口响应客户端的随机命令端口

客户端主动连接服务端打开的大于1023的随机端口

服务端进行确认

思考1:

FTP的主动模式好还是被动模式好?

五、FTP服务的基本配置

1. FTP服务的基本应用

默认安装:没有任何需求

环境:

node1:FTP-server  10.1.1.2

node2:client      10.1.1.3

步骤:

1.1 关闭防火墙和selinux

1.2 配置yum源

1.3 软件三步曲

安装软件  vsftpd

确认安装成功

[root@ftp-server ftp]# rpm -q vsftpd

vsftpd-2.2.2-11.el6_4.1.x86_64

查看软件带来的文件列表


/etc/vsftpd/vsftpd.conf        //主配置文件

/usr/sbin/vsftpd            //二进制命令


/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS

/usr/share/man/man5/vsftpd.conf.5.gz            //man文档

/var/ftp            //匿名用户的默认数据的根目录

/var/ftp/pub        //匿名用户的默认数据目录的扩展目录

1.4 了解配置文件

主配置文件:man 5 vsftpd.conf

[root@ftp-server ~]# grep -v ^# /etc/vsftpd/vsftpd.conf

anonymous_enable=YES    //支持匿名用户访问 

local_enable=YES        //非匿名用户

connect_from_port_20=YES    //支持主动模式(默认被动模式)

xferlog_std_format=YES      //xferlog日志格式

listen=YES                  //ftp服务独立模式下的监听

pam_service_name=vsftpd //指定认证文件

userlist_enable=YES    //启用用户列表

tcp_wrappers=YES        //支持tcp_wrappers功能

1.5 根据需求通过修改配置文件来完成服务的搭建

没需求

1.6 启动服务,开机自启动

[root@ftp-server~]# netstat -nltp|grep vsftpd

tcp000.0.0.0:210.0.0.0:*LISTEN3534/vsftpd

1.7 测试验证

clinet:

Linux:

[root@client~]# lftp stu1@10.1.1.2

Password:

lftpstu1@10.1.1.2:~>putinstall.log

52124bytestransferred

lftpstu1@10.1.1.2:~>exit

[root@client~]# ftp 10.1.1.2

Connectedto10.1.1.2(10.1.1.2).

220(vsFTPd2.2.2)

Name(10.1.1.2:root):stu1

331Pleasespecifythepassword.

Password:

230Loginsuccessful.

RemotesystemtypeisUNIX.

Usingbinarymodetotransferfiles.

ftp>putinstall.log.syslog

local:install.log.syslogremote:install.log.syslog

227EnteringPassiveMode(10,1,1,2,83,153).

150Oktosenddata.

226Transfercomplete.

10033bytessentin0.105secs(95.86Kbytes/sec)

ftp>ls

227EnteringPassiveMode(10,1,1,2,92,62).

150Herecomesthedirectorylisting.

-rw-r--r--150050052124Apr1903:52install.log

-rw-r--r--150050010033Apr1903:54install.log.syslog

-rw-rw-r--150050012Apr1903:51test1

226DirectorysendOK.

ftp>exit

221Goodbye.

[root@client~]# ftp 10.1.1.2

Connectedto10.1.1.2(10.1.1.2).

220(vsFTPd2.2.2)

Name(10.1.1.2:root):ftp

331Pleasespecifythepassword.

Password:

230Loginsuccessful.

RemotesystemtypeisUNIX.

Usingbinarymodetotransferfiles.

ftp>ls

总结:

1.ftp  默认使用用户名和密码登录    ——>ftp或者匿名用户


3.工具不知道咋用里面输入?或者manftp和lftp

总结:

匿名用户可以下载文件但是不能上传文件

本地用户可以上传和下载文件

需求1:允许匿名用户上传文件

[root@ftp-servervsftpd]# cat vsftpd.conf

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

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

测试验证:

[root@client~]# lftp 10.1.1.2

lftp10.1.1.2:~>ls

-rw-r--r--1000Apr1902:45file1

-rw-r--r--1000Apr1902:45file2

-rw-r--r--1000Apr1902:45file3

-rw-r--r--1000Apr1902:45file4

-rw-r--r--1000Apr1902:45file5

drwxr-xr-x2004096Mar012013pub

lftp10.1.1.2:/>putinstall.log

put:Accessfailed:553Couldnotcreatefile.(install.log)

lftp10.1.1.2:/>

原因:匿名用户的默认数据根目录/var/ftp没有写权限

解决:

chmodo+w/var/ftp

解决后遇到另外一个问题:如下

[root@client~]# ftp 10.1.1.2

Connectedto10.1.1.2(10.1.1.2).

220(vsFTPd2.2.2)

Name(10.1.1.2:root):ftp

331Pleasespecifythepassword.

Password:

500OOPS:vsftpd:refusingtorunwithwritableanonymousroot

Loginfailed.

ftp>exit

[root@client~]# lftp 10.1.1.2

lftp10.1.1.2:~>ls

ls:Loginfailed:500OOPS:vsftpd:refusingtorunwithwritableanonymousroot

lftp10.1.1.2:~>exit

最终想让匿名用户上传文件的解决办法是:

1.在/var/ftp目录里自己创建一个数据目录或者直接将匿名用户的数据上传到pub目录

2.将/var/ftp/pub目录权限给o+w或者777

需求2:下载其他匿名用户上传的文件

anon_umask=022

测试验证:

[root@client~]# lftp 10.1.1.2

lftp10.1.1.2:~>ls

-rw-r--r--1000Apr1902:45file2

-rw-r--r--1000Apr1902:45file3

-rw-r--r--1000Apr1902:45file4

-rw-r--r--1000Apr1902:45file5

-rw-------1145052124Apr1906:42install.log

drwxr-xrwx2004096Apr1906:48pub

10033bytestransferred

lftp10.1.1.2:/pub>ls

-rw-------1145052124Apr1906:48install.log

-rw-r--r--1145010033Apr1907:01install.log.syslog

//更改完anon_umask后,匿名用户上传的文件权限就变成了644,其他人就可以下载文件了

lftp10.1.1.2:/pub>

需求3:开启本地用户消息功能

1)本地用户访问——>/home/username

测试验证:

[root@client~]# ftp 10.1.1.2

Connectedto10.1.1.2(10.1.1.2).

220(vsFTPd2.2.2)

Name(10.1.1.2:root):stu1

331Pleasespecifythepassword.

Password:

230-welcometomyhome

230Loginsuccessful.

RemotesystemtypeisUNIX.

Usingbinarymodetotransferfiles.

ftp>exit

221Goodbye.

[root@client~]# ftp 10.1.1.2

Connectedto10.1.1.2(10.1.1.2).

220(vsFTPd2.2.2)

Name(10.1.1.2:root):ftp

331Pleasespecifythepassword.

Password:

230-welcometoanonhome

230Loginsuccessful.

RemotesystemtypeisUNIX.

Usingbinarymodetotransferfiles.

ftp>

ftp>exit

221Goodbye.

另外一种情况:

1. 修改配置文件指定消息文件

banner_file=/etc/vsftpd/banner_file

2. 创建消息文件

vim/etc/vsftpd/banner_file

......

3. 测试验证

[root@client ~]# ftp 10.1.1.2

Connected to10.1.1.2 (10.1.1.2).

220-@@@@@@@@@@@

220--------        -------

220-

220-哈哈哈哈h

220-嘿嘿嘿

220-

220

Name (10.1.1.2:root): ftp

331Please specify the password.

Password:

230-welcometo anon home

230Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

需求4:禁锢本地用户的家,只能在自己的家中活动

1)禁锢所有的本地用户

chroot_local_user=YES //禁锢所有的本地用户(不能随便跳转)

2)禁锢大部分用户,允许小部分

chroot_local_user=YES

chroot_list_enable=YES //启用用户文件列表

chroot_list_file=/etc/vsftpd/chroot_list //定义用户文件列表

3)允许大部分,禁锢小部分

chroot_local_user=NO 或者 # chroot_local_user=YES

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

推荐阅读更多精彩内容