FTP服务器软件:
FTP服务使用FTP协议来进行文件的上传和下载。
注:如果新下载了一个软件而不会安装,则先将软件解压,然后进入软的目录,打如下命令来查看软 件的安装帮助:
#man INSTALL 或#man README
实验拓扑:
Linux Client
-----RHEL5.9(vmnet1)----------(vmnet1)
Win7 Client
实验一:测试默认安装vsftpd的结果
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载
[root@dhcpser ~]# rpm -q vsftpd //查询是否安装
package vsftpd is not installed
[root@dhcpser ~]# cd /misc/cd/Server
[root@dhcpser Server]# ls *vsftpd* //查找包
vsftpd-2.0.5-28.el5.x86_64.rpm
[root@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm [root@dhcpser Server]# service vsftpd restart
[root@dhcpser Server]# chkconfig vsftpd on
[root@dhcpser Server]# ls -lh /etc > /var/ftp/pub/etc.txt
[root@dhcpser ~]# useradd kaka
[root@dhcpser ~]# echo "redhat" | passwd --stdin kaka
Changing password for user kaka.
passwd: all authentication tokens updated successfully.
验证:(客户端测试)
[root@localhost ~]# ftp 192.168.10.253 //登录FTP
Connected to 192.168.10.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
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,10,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 etc.txt // 下载
local: etc.txt remote: etc.txt
227 Entering Passive Mode (192,168,10,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 etc.txt install.log.syslog
Desktop install.log
ftp> put install.log //上传
local: install.log remote: install.log
227 Entering Passive Mode (192,168,10,253,46,17)
550 Permission denied.
ftp> quit
[root@localhost ~]# lftp 192.168.10.253 // 以 LFTP 登录
lftp 192.168.10.253:~> user kaka
口令:
lftp kaka@192.168.10.253:~> put install.log
实验二
禁止匿名用户登录
修改FTP默认端口为2121
禁锢本地用户在自己家目录
实验步骤:
[root@ser01 ~]# cd /etc/vsftpd/
[root@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak // 备份配置文件
[root@ser01 vsftpd]# vim vsftpd.conf // 进入配置文件
...
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.10.253 2121
实验三:验证黑/白名单
/etc/vsftpd/ftpusers黑名单
/etc/vsftpd/user_list
[root@ser01 ~]# useradd jerry
[root@ser01 ~]# useradd mike
[root@ser01 ~]# echo "redhat" | passwd --stdin jerry
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
[root@ser01 ~]# echo "redhat" | passwd --stdin mike
Changing password for user mike.
passwd: all authentication tokens updated successfully.
[root@ser01 ~]# grep kaka /etc/vsftpd/ftpusers
kaka
//请问kaka能否登录FTP???
[root@ser01 ~]# grep jerry /etc/vsftpd/user_list
jerry
//请问jerry能否登录FTP???
[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf
...
121 userlist_deny=NO
[root@ser01 ~]# service vsftpd restart
//请问kaka、jerry、mike谁可以登录???
实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和 ftpusers里面添加的账户去掉
如果实验不成功请关闭防火墙
关闭防火墙
[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
关闭Selinux
[root@localhost ~]# vim /etc/sysconfig/selinux
...
SELINUX=disabled
...
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Disabled
实验四:
本地用户登录到/data/ftproot目录
up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户
最多20个并发,每IP地址最多2个并发
限制下载速度限制为100KB/s
[root@ser01 ~]# mkdir -p /data/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 // 启用userlist
118 local_max_rate:100 // 限制下载速度
119 max_clients=20 // 客户端最多并发
120 max_per_ip=2 // 每个IP最多并发
121 userlist_deny=NO // 不禁用userlist 中的用户
122 local_root=/data/ftproot
[root@ser01 ~]# service vsftpd restart
[root@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/ // 定义用户UP可以写
[root@ser01 ~]# tail -n 2 /etc/vsftpd/user_list // 黑白名单加入up down
up
down
[root@ser01 ~]# dd if=/dev/zero of=/data/ftproot/local.tgz bs=1M count=1000 // 建立一个测试文件
测试:
[root@localhost ~]# wget ftp://up:redhat // 用户名密码@192.168.10.253:2121 //端口号 /local.tgz //下载的文件位置
wget ftp://up:redhat // 用户名密码@192.168.10.253 /local.tgz