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源

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

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

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

  • 启动服务,开机自启动

  • 测试验证

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

三、FTP服务的客户端工具

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

Windows:FileZilla、IE、Chrome、Firefox

lftp和ftp工具区别:

  • lftp可以批量并且下载目录

lftp localhost:~> mirror remote local  下载整个目录到本地

四、FTP服务的两种工作模式

  • 主动模式

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

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

  • 被动模式

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

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

  3. 服务端进行确认

思考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/logrotate.d/vsftpd         //日志轮转的文件
/etc/pam.d/vsftpd               //安全认证
件
/usr/sbin/vsftpd            //二进制命令
​
​
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS/README    //虚拟主机
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS   
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/README    //虚拟用户
​
/usr/share/man/man5/vsftpd.conf.5.gz            //man文档
录的扩展目录

1.4 了解配置文件

主配置文件:man 5 vsftpd.conf

[root@ftp-server ~]# grep -v ^# /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES    //支持匿名用户访问  
local_enable=YES        //非匿名用户
write_enable=YES        //写总开关
local_umask=022         //反掩码  file:644  dir:755

​
pam_service_name=vsftpd //指定认证文件
userlist_enable=YES     //启用用户列表
tcp_wrappers=YES        //支持tcp_wrappers功能
​
​

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

没需求

1.6 启动服务,开机自启动

[root@ftp-server ~]# netstat -nltp|grep vsftpd
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      3534/vsftpd  

1.7 测试验证

clinet:

Linux:
[root@client ~]# lftp stu1@10.1.1.2
Password: 
lftp stu1@10.1.1.2:~> put install.log
52124 bytes transferred                        
lftp stu1@10.1.1.2:~> exit
[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220 (vsFTPd 2.2.2)
Name (10.1.1.2:root): stu1
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 (10,1,1,2,168,207).
150 Here comes the directory listing.
-rw-r--r--    1 500      500         52124 Apr 19 03:52 install.log
-rw-rw-r--    1 500      500            12 Apr 19 03:51 test1
226 Directory send OK.
sec)
ftp> ls
227 Entering Passive Mode (10,1,1,2,92,62).
150 Here comes the directory listing.
-rw-r--r--    1 500      500         52124 Apr 19 03:52 install.log
-rw-r--r--    1 500      500         10033 Apr 19 03:54 install.log.syslog
-rw-rw-r--    1 500      500            12 Apr 19 03:51 test1
226 Directory send OK.
ftp> exit
221 Goodbye.
​
​
[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220 (vsFTPd 2.2.2)
Name (10.1.1.2:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
​
​
总结:
1. ftp  默认使用用户名和密码登录    ——>ftp 或者匿名用户
2. lftp 默认使用的匿名用户登录     ——> lftp 10.1.1.2:/> user username
                              ——>lftp user@ip
                              
3. 工具不知道咋用  里面输入?或者 man ftp 和lftp

总结:

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

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

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

[root@ftp-server vsftpd]# 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

​
测试验证:
[root@client ~]# lftp 10.1.1.2
lftp 10.1.1.2:~> ls
-rw-r--r--    1 0        0               0 Apr 19 02:45 file1
-rw-r--r--    1 0        0               0 Apr 19 02:45 file2
-rw-r--r--    1 0        0               0 Apr 19 02:45 file3
-rw-r--r--    1 0        0               0 Apr 19 02:45 file4
-rw-r--r--    1 0        0               0 Apr 19 02:45 file5
drwxr-xr-x    2 0        0            4096 Mar 01  2013 pub
lftp 10.1.1.2:/> put install.log
put: Access failed: 553 Could not create file. (install.log)
lftp 10.1.1.2:/> 
原因:匿名用户的默认数据根目录/var/ftp没有写权限
解决:
chmod o+w /var/ftp
​
解决后遇到另外一个问题:如下
​
[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220 (vsFTPd 2.2.2)
Name (10.1.1.2:root): ftp
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.

​
原因:/var/ftp数据目录权限太大  o+w  777
解决:chmod o-w 
​
最终想让匿名用户上传文件的解决办法是:
1.在/var/ftp目录里自己创建一个数据目录或者直接将匿名用户的数据上传到pub目录
2.将/var/ftp/pub目录权限给o+w 或者777
​
​
​

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

anon_umask=022
​
测试验证:
[root@client ~]# lftp 10.1.1.2
lftp 10.1.1.2:~> ls
-rw-r--r--    1 0        0               0 Apr 19 02:45 file2
-rw-r--r--    1 0        0               0 Apr 19 02:45 file3
-rw-r--r--    1 0        0               0 Apr 19 02:45 file4
-rw-r--r--    1 0        0               0 Apr 19 02:45 file5
-rw-------    1 14       50          52124 Apr 19 06:42 install.log
drwxr-xrwx    2 0        0            4096 Apr 19 06:48 pub
  52124 Apr 19 06:48 install.log
-rw-r--r--    1 14       50          10033 Apr 19 07:01 install.log.syslog
//更改完anon_umask后,匿名用户上传的文件权限就变成了644,其他人就可以下载文件了
lftp 10.1.1.2:/pub> 
​
​

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

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

[root@ftp-server ~]# echo "welcome to my home" > /home/stu1/.message

2)匿名用户访问——>/var/ftp

[root@ftp-server ~]# echo "welcome to anon home" > /var/ftp/.message

测试验证:

[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220 (vsFTPd 2.2.2)
Name (10.1.1.2:root): stu1
331 Please specify the password.
Password:
230-welcome to myhome
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit
221 Goodbye.
[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220 (vsFTPd 2.2.2)
Name (10.1.1.2:root): ftp

​

另外一种情况:

1. 修改配置文件指定消息文件
banner_file=/etc/vsftpd/banner_file
​
2. 创建消息文件
vim /etc/vsftpd/banner_file
......
​
3. 测试验证
​
[root@client ~]# ftp 10.1.1.2
Connected to 10.1.1.2 (10.1.1.2).
220-@@@@@@@@@@@
220--------         -------
220-
220-哈哈哈哈h
220-嘿嘿嘿
220-
220 
Name (10.1.1.2:root): ftp
331 Please specify the password.
Password:
230-welcome to anon home
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

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

1)禁锢所有的本地用户

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

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

chroot_local_user=YES

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

chroot_local_user=NO 或者 # chroot_local_user=YES

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

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

需求5:指定匿名用户和本地用户上传文件的目录

课堂练习:

按照如下要求搭建一个ftp服务器:

1)允许匿名用户上传文件,并且可以下载其他用户上传的文件

mkdir /anon/data -p

vim /etc/vsftpd/vsftpd.conf

...

anon_root=/anon

chmod o+w /anon/data

3)本地用户上传的文件都保存到/local/data里

默认:/home/username

mkdir /local/data -p

...

local_root=/local/data

4)禁锢所有用户的家,不能来回跳转

chroot_local_user=YES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值