FTP服务:基于C/S结构的文件传输协议
FTP会话属于复合TCP连接:
控制连接:TCP 21端口,发送FTP命令信息
数据连接:TCP 20端口,上传/下载数据
实验环境:
Linux Client
-----RHEL5.9(vmnet1)----------(vmnet1)
Win7 Client
一、 实验要求:配置可匿名上传FTP服务
1、安装软件包
[root@server ~]# rpm -q vsftpd
package vsftpd is not installed
[root@server ~]# yum -y install vsftpd
2、修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
……
27 anon_upload_enable=YES //允许匿名上传
……
32 anon_mkdir_write_enable=YES //允许匿名创建目录
33 anon_other_write_enable=YES //允许匿名创建文件
…….
[root@server ~]# setfacl -m u:ftp:rwx /var/ftp/pub/ //修改本地权限
[root@server ~]# getfacl /var/ftp/pub/
Geofact: Removing leading '/' from absolute path names
# file: var/ftp/pub
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x
3、启动服务
[root@server ~]# /etc/init.d/vsftpd restart
[root@server ~]# chkconfig vsftpd on
4、客户端测试(linux客户端)
[root@client ~]# ftp 192.168.1.1
Name (192.168.1.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp>
ftp> pwd //查看登录后所在的目录
257 "/"
ftp> cd pub //切换到默认的共享目录/var/ftp/pub下
250 Directory successfully changed.
ftp> !ls //显示客户端当前目录下的文件
1. txt anaconda-ks.cfg Desktop install.log install.log.syslog
ftp> put install.log //上传本地文件到服务器
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,1,54,22)
150 Ok to send data.
226 File receive OK.
33139 bytes sent in 0.024 seconds (1.4e+03 Kbytes/s)
ftp> mkdir cheshi //在服务器上创建目录
257 "/pub/cheshi" created
ftp> ls
-rw------- 1 14 50 33139 May 03 04:15 install.log
drwx------ 2 14 50 4096 May 03 04:18 cheshi
到服务器端查看:
[root@server ~]# ls /var/ftp/pub/
1.txt af.txt cheshi install.log jwl MySQL02.txt test test.txt
二、配置本地用户访问,禁止匿名登录;验证黑白名单;
1、安装软件包略:创建用户
[root@server ~]# useradd kaka //创建用户
[root@server ~]# useradd haha
[root@server ~]# useradd xixi
[root@server ~]# echo "123" | passwd --stdin kaka //设置密码,免交互
Changing password for user kaka.
passwd: all authentication tokens updated successfully.
[root@server ~]# echo "123" | passwd --stdin haha
Changing password for user haha.
passwd: all authentication tokens updated successfully.
[root@server ~]# echo "123" | passwd --stdin xixi
Changing password for user xixi.
passwd: all authentication tokens updated successfully.
2、修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf //修改主配置文件
12 anonymous_enable=NO //拒绝匿名用户登录
119 userlist_enable=NO //不启用user_list列表文件
[root@server ~]# vim /etc/vsftpd/ftpusers //修改黑名单文件
[root@server ~]# grep kaka /etc/vsftpd/ftpusers //将kaka加入到黑名单
Kaka
3、启动服务
[root@server ~]# /etc/init.d/vsftpd restart
4、测试(windows客户端)
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): kaka //kaka登录
331 Please specify the password.
密码:
530 Login incorrect.
登录失败。 //已加入黑名单,拒绝登录
ftp> quit
221 Goodbye.
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): haha //haha用户
331 Please specify the password.
密码:
230 Login successful. //登录成功
ftp> pwd
257 "/home/haha" //登录到自己的家目录
ftp> quit
221 Goodbye.
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): xixi //xixi用户
331 Please specify the password.
密码:
230 Login successful. //登录成功
ftp> pwd
257 "/home/xixi" //登录到自己的家目录
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
…..
119 userlist_enable=YES
…..
121 userlist_deny=NO
…….
[root@server ~]# vim /etc/vsftpd/user_list
[root@server ~]# grep haha /etc/vsftpd/user_list
Haha
测试:(haha用户加入白名单,kaka加入到黑名单,xixi用户无操作)
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): kaka
530 Permission denied.
登录失败。
ftp> quit
221 Goodbye.
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): xixi
530 Permission denied.
登录失败。
ftp> quit
221 Goodbye.
C:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsFTPd 2.0.5)
用户(192.168.1.1:(none)): haha
331 Please specify the password.
密码:
230 Login successful. //只有白名单里的用户可以登录
三、实验要求:将上面的实验环境还原
禁锢普通用户在自己的主目录里面
更改匿名用户的站点为/data/anon_pub
更改本地用户的站点为/data/local_pub
设置匿名用户下载速率50KB/s,本地用户100KB/s
最多20个并发,每个ip地址最多2个并发
1、 安装包略
2、 修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
……
122 chroot_local_user=YES //禁锢在主目录
123 anon_root=/data/anon_pub //更改匿名用户的FTP根目录
124 local_root=/data/local_pub //更改本地用户的FTP根目录
125 anon_max_rate=50000 //匿名用户的最大传输速率
126 local_max_rate=100000 //本地用户的最大传输速率
127 max_clients=20 //限制并发的客户端个数
128 max_per_ip=2 //限制每个客户机ip的并发连接数
…..
[root@server ~]# mkdir -p /data/{anon_pub,local_pub} //创建2个目录
[root@server ~]# dd if=/dev/zero of=/data/anon_pub/anon_db bs=10M count=100 //创建大文件,用于客户端下载测试
[root@server ~]# dd if=/dev/zero of=/data/local_pub/local_db bs=10M count=100 //创建大文件,用于客户端下载测试
[root@server ~]# service vsftpd restart
3、客户端测试
[root@client ~]# wget ftp://192.168.1.1/anon_db //匿名用户下载
--2014-05-03 14:05:23-- ftp://192.168.1.1/anon_db
=> `anon_db'
Connecting to 192.168.1.1:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> 不需要 CWD。
==> SIZE anon_db ... 1048576000
==> PASV ... 完成。 ==> RETR anon_db ... 完成。
长度:1048576000 (1000M)
0% [ ] 2,035,960 48.4K/s eta 5h 48m
[root@client ~]# wget ftp://kaka:[email protected]/local_db //普通用户
--2014-05-03 14:06:56-- ftp://kaka:*password*@192.168.1.1/local_db
=> `local_db'
Connecting to 192.168.1.1:21... 已连接。
正在以 kaka 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> 不需要 CWD。
==> SIZE local_db ... 1048576000
==> PASV ... 完成。 ==> RETR local_db ... 完成。
长度:1048576000 (1000M)
0% [ ] 6,426,872 97.7K/s eta 2h 53m
注:本文档仅为本人学习之笔记,大神请飘过,不足之处请谅解并真诚接受您的指正。谢谢。