实验03:FTP
实验目标
通过下面FTP配置完成下面几个简单实验
实验步骤
实验一
实验要求:
测试默认安装vsftpd的结果并验证下面几个问题。
匿名用户与本地用户是否可以登录?
匿名用户与本地用户登录的家目录在哪里?
匿名用户与本地用户登录后的权限?
[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 test
[root@dhcpser ~]# echo "redhat" | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.
验证:(客户端测试)
[root@localhost ~]# ftp 192.168.10.253
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> pwd
257 “/”
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 //下载文件,下载到进入ftp时用户所在目录
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 //另一种ftp登录
lftp 192.168.10.253:~> user test
口令:
lftp test@192.168.10.253:~> put install.log
... //下载操作以及验证上传不再操作
答案:
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载
实验二:
禁止匿名用户登录
修改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
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
测试:
[root@ser01 vsftpd]# ftp 192.168.10.253 //登录不上
[root@ser01 vsftpd]# ftp 192.168.10.253 2121 或者
[root@localhost ~]# lftp 192.168.10.253 -p 2345
lftp 192.168.10.253:~> user dong
口令:
lftp [email protected]:~>
实验三:验证黑/白名单
/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 test /etc/vsftpd/ftpusers
test //这里已经将用户test加入黑名单ftpusers
//test能否登录FTP? 不能
[root@ser01 ~]# grep jerry /etc/vsftpd/user_list
Jerry //jerry加入user_list
//jerry能否登录FTP? 能
[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf
121 userlist_deny=NO 将配置文件中的第121行命令修改
[root@ser01 ~]# service vsftpd restart
//请问test、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
[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
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
补充:
匿名用户登录对共享根目录禁止有写入权限,否则禁止匿名账户登录!
[root@localhost ~]# ftp 192.168.10.253 2121
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:
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
思考题:
FTP虚拟账户
系统有lily、mike、test用户,请问以下情况,谁可以登录FTP。(拒绝优先)
[root@localhost ~]# grep lily /etc/vsftpd/ftpusers
lily
[root@localhost ~]# grep mike /etc/vsftpd/ftpusers
mike
[root@localhost ~]# grep mike /etc/vsftpd/user_list
mike
[root@localhost ~]# grep userlist_deny /etc/vsftpd/vsftpd.conf
userlist_deny=NO
只有test可以访问
问题和经验总结
共享文件的实际权限是共享权限和Linux文件权限取交集
故障现象: ftp目录设置读写权限以后不能登录
解决办法: 系统默认保护功能,不能开启写入权限
故障现象: 将用户加入user_list配置文件中不能访问
解决办法: 必须加一条userlist_deny=NO,因为默认为YES
故障现象: 用户在白名单中但不能访问
解决办法: 拒绝优先,黑名单中不能有该用户