实验拓扑:
Linux Client
-----RHEL5.9(vmnet1)----------(vmnet1)
Win7 Client
实验一:测试默认安装vsftpd的结果
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载
服务器端设置
[root@dhcpser ~]# cd /misc/cd/Server //进入RHEL5.9光盘
[root@dhcpser Server]# ls *vsftpd* //查看有vsftp安装包
vsftpd-2.0.5-28.el5.x86_64.rpm
[root@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm //安装vsftpd
[root@dhcpser Server]# service vsftpd restart //启动vsftpd服务
[root@dhcpser Server]# chkconfig vsftpd on //设置vsftpd开机自启动
[root@dhcpser Server]# touch /var/ftp/pub/test1.txt //创建测试文件
[root@dhcpser ~]# useradd kaka
[root@dhcpser ~]# echo "123456" | passwd --stdin kaka //为用户kaka设置密码
Changing password for user kaka.
passwd: all authentication tokens updated successfully.
验证:(客户端测试)
[root@localhost ~]# ftp 192.168.1.253 //连接ftp服务器
Connected to 192.168.1.253.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.253: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 //进入pub目录
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,1,253,75,98)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 11627 Jun 13 02:04 etc.txt
226 Directory send OK.
ftp> get test1.txt //下载测试文件
local: etc.txt remote: etc.txt
227 Entering Passive Mode (192,168,1,253,136,141)
150 Opening BINARY mode data connection for etc.txt (11627 bytes).
226 File send OK.
11627 bytes received in 0.00082 seconds (1.4e+04 Kbytes/s)
ftp> !ls //!在外部执行命令,查看
下载结果
anaconda-ks.cfg test1.txt install.log.syslog //下载test.txt成功
Desktop install.log
ftp> put install.log //上传文件
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,253,46,17)
550 Permission denied. //无权限拒绝
ftp> quit //退出
...
实验二:
禁止匿名用户登录
修改FTP默认端口为2121
禁锢本地用户在自己家目录
实验步骤:
[root@ser01 ~]# cd /etc/vsftpd/
[root@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak //备份vsftpd主配
置文件
[root@ser01 vsftpd]# vim vsftpd.conf //编辑vsftpd主配
置文件
...
12 anonymous_enable=NO //不允许匿名用户
访问
...
119 listen_port=2121 //监听端口2121
120 chroot_local_user=YES
[root@ser01 vsftpd]# service vsftpd restart //重启服务
[root@ser01 vsftpd]# netstat -tulnp | grep vsftpd //查看监听端口
tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN
4705/vsftpd
测试:
ftp 192.168.1.253 2121 //登录ftp
Name (192.168.1.253:root): kaka //用户kaka登录
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd //查看当前目录,为伪根目录(即用户家目录)
257 "/"
实验三:验证黑/白名单
/etc/vsftpd/ftpusers//黑名单
/etc/vsftpd/user_list //黑/白名单
[ root@ser01 ~]# useradd jerry //添加用户jerry
[root@ser01 ~]# useradd mike
[root@ser01 ~]# echo "123456" | passwd --stdin jerry //为用户jerry设置密码
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
[root@ser01 ~]# echo "123456" | passwd --stdin mike
Changing password for user mike.
passwd: all authentication tokens updated successfully.
[root@ser01 ~]# grep kaka /etc/vsftpd/ftpusers //查看用户kaka是否在黑名单
kaka //用户kaka在黑名单中
//请问kaka能否登录FTP??
[root@ser01 ~]# grep jerry /etc/vsftpd/user_list //查看用户jerry是否在黑白名单
jerry
//请问jerry能否登录FTP???
[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf //编辑vsftpd主配置文件
...
121 userlist_deny=NO //拒绝用户列表选择NO
[root@ser01 ~]# service vsftpd restart
//请问kaka、jerry、mike谁可以登录???
只有jerry可以登录
实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和 ftpusers里面添加
的账户去掉
实验四:
本地用户登录到/data/ftproot目录
up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户
最多20个并发,每IP地址最多2个并发
限制下载速度限制为100KB/s
[root@ser01 ~]# mkdir -p /data/ftproot //新建文件夹ftproot
[root@ser01 ~]# useradd up
[root@ser01 ~]# useradd down
[root@ser01 ~]# echo "redhat" | passwd --stdin up
[root@ser01 ~]# echo "redhat" | passwd --stdin down
[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf
...
12 anonymous_enable=NO //关闭匿名用户访问
...
18 write_enable=YES //允许可写入
...
117 userlist_enable=YES //启用黑白名单
...
121 userlist_deny=NO //是否启用黑白名单拒绝,不启用
122 local_root=/data/ftproot //指定vsftp目录
123 max_clients=20 //最大连接数
124 max_per_ip=2 //最大并发数
125 local_max_rate=100000 //最高下载速度
[root@ser01 ~]# service vsftpd restart
[root@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/
[root@ser01 ~]# tail -n 2 /etc/vsftpd/user_list
up
down
[root@ser01 ~]# dd if=/dev/zero of=/data/ftproot/local.tgz bs=1M count=1000//创建测试文件
测试:
[root@localhost~]# wget ftp://up:[email protected]:2121/local.tgz//下载文件测试下载速度
vsftpd.conf主配置文件解释
listen 是否以独立运行的方式监听服务
listen_address设置监听FTp服务的IP地址
listen_port设置监听FTP服务的端口
write_enable是否启用写入权限
download_enable是否允许下载
userlist_enable是否启用user_list列表文件
userlist_deny是否禁用user_list中的用户
max_clients限制并发的客户端个数
max_per_ip限制每个客户机IP的并发连接数
anonymous_enable是否启用匿名访问
anon_umask匿名上传的权限掩码
anon_root匿名FTP的根目录
anon_upload_enable是否允许上传文件
anon_mkdir_write_enable是否允许建目录
anon_other_write_enable其他写入控制
anon_max_rate最大传输速度(字节/秒)
local_enable是否启用本地用户
local_umask本地用户上传的权限掩码
local_root本地用户的FTP根目录
chroot_local_user是否禁锢在主目录
local_max_rate最大传输速率(字节/秒)