2023年12月29日发(作者:)
实验三 FTP服务
实验三 FTP服务
(一)
【需求】
本地用户test1可以上传文件到/var/ftp/upload目录上,其他的本地用户不允许上传;
本地用户不允许离开宿主目录;
不允许本地用户test1进行远程管理服务器。
【基本的拓扑图】
如图11-1。
图11-1
说明:由图11-1可知,FTP服务器的IP地址为192.168.1.6,处于服务器群组中。
【系统及软件环境】
1. 操作系统:Red Hat AS 4.0
2. 服务器软件包:
【实验配置文件及命令】
1./etc/vsftpd/
2./etc/passwd
实验三 FTP服务
【实验步骤】
说明:以下所有操作均在FTP服务器上进行(192.168.1.6)。
1. 查看vsftpd服务器包是否安装。
[root@gdlc-ftp /]# rpm -qa |grep vsftpd
[root@gdlc-ftp /]# #没有结果显示。表示没有安装FTP服务器软件。(以源码方式安装除外)
2.安装vsftpd服务器包。
[root@gdlc-ftp root]# rpm -ivh
warning: : V3 DSA signature: NOKEY, key ID db42a60e
########################################### [100%]
1:vsftpd ########################################### [100%]
[root@gdlc-ftp root]#
3.创建用户、目录及修改目录权限。
[root@gdlc-ftp root]# mkdir /var/ftp/upload
[root@gdlc-ftp root]# useradd test1 -d /var/ftp/upload -s /sbin/nologin
[root@gdlc-ftp root]# ll -d /var/ftp/upload/
drwxr-xr-x 2 root root 4096 Jan 24 09:59 /var/ftp/upload/
[root@gdlc-ftp root]# chown test1:test1 /var/ftp/upload
[root@gdlc-ftp root]# ll -d /var/ftp/upload/
drwxr-xr-x 2 test1 test1 4096 Jan 24 09:59 /var/ftp/upload/
[root@gdlc-ftp /]# passwd test1
Changing password for user test1.
New password:
BAD PASSWORD: it is too short
Retype new password:
passwd: all authentication tokens updated successfully.
[root@gdlc-ftp /]#
由上面的显示我们可以知道,用户test1的宿主目录为/var/ftp/upload,同时用户test1没有登录的shell,因此test1不能远程管理FTP服务器。同时可以看出/var/ftp/upload的所有者为test1,并具有写的权限,test1组和其他组没有写的权限。
4. 查看/etc/passwd文件。
[root@gdlc-ftp root]# tail /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
实验三 FTP服务
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
john:x:500:500::/home/john:/bin/bash
jake:x:501:503::/home/jake:/bin/bash
test1:x:502:504::/var/ftp/upload:/sbin/nologin
[root@gdlc-ftp root]#
5. 修改/etc/vsftpd/配置文件。
[root@gdlc-ftp /]# grep -vn "#" /etc/vsftpd/
12:anonymous_enable=YES
15:local_enable=YES
18:write_enable=YES
22:local_umask=022
35:dirmessage_enable=YES
38:xferlog_enable=YES
41:connect_from_port_20=YES
54:xferlog_std_format=YES
106:pam_service_name=vsftpd
107:userlist_enable=YES
109:listen=YES
110:tcp_wrappers=YES
[root@gdlc-ftp /]#vi /etc/vsftpd/
以上为默认的配置文件,我们需要在默认的配置文件中加入以下语句。
chroot_local_user=YES #禁止本地用户离开其宿主目录
xferlog_file=/var/log/ #指定FTP服务器日志
idle_session_timeout=600 #会话超时600秒
data_connection_timeout=120 #数据连接超时120秒
ftpd_banner=Welcome to blah GDLC-FTP service. #连接FTP服务器时的欢迎词
6. 查看修改后的配置文件。
[root@gdlc-ftp /]# grep -vn "#" /etc/vsftpd/
12:anonymous_enable=YES
15:local_enable=YES
18:write_enable=YES
22:local_umask=022
35:dirmessage_enable=YES
38:xferlog_enable=YES
41:connect_from_port_20=YES
51:xferlog_file=/var/log/
54:xferlog_std_format=YES
57:idle_session_timeout=600
实验三 FTP服务
60:data_connection_timeout=120
85:ftpd_banner=Welcome to blah GDLC-FTP service.
105:
106:pam_service_name=vsftpd
107:userlist_enable=YES
109:listen=YES
110:tcp_wrappers=YES
111:chroot_local_user=YES
7. 启动FTP服务器。
[root@gdlc-ftp /]# /etc/init.d/vsftpd start
vsftpd vsftpd [ OK ]
[root@gdlc-ftp /]# service vsftpd start
vsftpd vsftpd [ OK ]
以上两条命令可任选一条进行操作,启动FTP服务器。
8. 查看服务器是否启动成功。
[root@gdlc-ftp /]# netstat -antp |grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4329/vsftpd
[root@gdlc-ftp /]#
如果有内容显示,则表示FTP服务器已经启动成功;没有显示结果,则表示FTP服务器没有启动成功。
9. 测试
说明:以下所有操作均可在FTP客户端上或PC1~PC10上进行。
(1)在命令行上测试,输入“ftp 192.168.1.6”,采用test1用户登录服务器,发现test1
允许上传文件,同时不允许离开其宿主目录。
[root@linux ~]# ftp 192.168.1.6
Connected to 192.168.1.6.
220 Welcome to blah GDLC-FTP service
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.1.6:root): test1 #登录用户名,输入test1
331 Please specify the password.
Password: #输入密码
230 Login successful. #输入确认密码
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> !ls #查看本地目录
vnc-4.0-x86_
实验三 FTP服务
Desktop vnc-4_1_1-x86_
evolution
vnc-4.0-x86_linux
ftp> put #上传文件到服务器
local: remote:
227 Entering Passive Mode (192,168,1,6,235,220)
150 Ok to send data.
226 File receive OK.
29321 bytes sent in 0.00019 seconds (1.5e+05 Kbytes/s)
ftp> ls #查看服务器目录
227 Entering Passive Mode (192,168,1,6,209,24)
150 Here comes the directory listing.
-rw-r--r-- 1 503 503 29321 Feb 20 03:22
drwxr-xr-x 2 0 0 4096 Feb 20 03:07 k
-rw-r--r-- 1 0 0 0 Feb 20 03:07 kk
-rw-r--r-- 1 503 503 51200 Feb 20 03:14
226 Directory send OK.
ftp> cd / #回到根目录
250 Directory successfully changed.
ftp> ls #再次查看服务器目录,发现test1用户没有离开其宿主目录
227 Entering Passive Mode (192,168,1,6,165,131)
150 Here comes the directory listing.
-rw-r--r-- 1 503 503 29321 Feb 20 03:22
drwxr-xr-x 2 0 0 4096 Feb 20 03:07 k
-rw-r--r-- 1 0 0 0 Feb 20 03:07 kk
-rw-r--r-- 1 503 503 51200 Feb 20 03:14
226 Directory send OK.
ftp>bye #退出服务器
【实验故障与分析】
下面的表格中列出了在实验过程中可能出现的故障及其解决方法。看看是不是对你的实验有帮助?如果你在实验中还遇到其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决的方法。
序 号
1
2
实验故障
在FTP服务器上已设置好允许本地用户上传,但在上传数据到upload目录时,提示拒绝
分析与解决
可能是test1用户对upload目录没有写的权限
实验三 FTP服务
序 号
3
实验故障
分析与解决
【启发联想】
1. 若某些用户需要离开其宿主目录,应如何设置?
2. 有没有其他的FTP服务器软件?各有哪些优点?
3. FTP服务器的剩余空间不足,无法将资料数据放到/var/ftp/目录上,管理员将数据全部移到/disk2/ftproot/目录上,此时FTP匿名用户登录服务器时,看到/var/ftp/pub目录为空,无法看到/disk2/ftproot目录下的资料,应如何解决?
(二)
【需求】
通过超级守护进程创建匿名FTP服务器。
【基本的拓扑图】
如图11-2。
图11-2
说明:由图11-2可知,FTP服务器的IP地址为192.168.1.6,处于服务器群组中。
【系统及软件环境】
1. 操作系统:Red Hat AS 4.0
2.服务器软件包:
【实验配置文件及命令】
1./etc/vsftpd/ #vsftp主配置文件
2./usr/share/doc/vsftpd-2.0.1/ #基于超级守护进程vsftp配置文件模板
实验三 FTP服务
3./etc/passwd #用户管理配置
4./etc/xinetd.d/vsftpd #/基于超级守护进程vsftp配置文件
【实验步骤】
说明:以下所有操作均在FTP服务器上进行(192.168.1.6)。
1.安装vsftpd服务器包。
[root@gdlc-ftp root]# rpm -ivh
warning: : V3 DSA signature: NOKEY, key ID db42a60e
########################################### [100%]
1:vsftpd ########################################### [100%]
[root@gdlc-ftp root]#
2.创建基于超级守护进程的ftp配置文件。
[root@linux ~]# cd /usr/share/doc/vsftpd-2.0.1/
[root@linux vsftpd-2.0.1]# cp /etc/xinetd.d/vsftpd
[root@linux vsftpd-2.0.1]# cd /etc/xinetd.d/
[root@linux xinetd.d]# vi vsftpd
[root@linux xinetd.d]# cat vsftpd
# default: off
# description: The vsftpd FTP server serves FTP connections. It uses
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/
nice = 10
disable = no #将原文的yes改为no
flags = IPv4
}
[root@linux xinetd.d]#
3.创建测试用户,并查看/etc/passwd文件。
[root@linux ~]# useradd gdlc -s /sbin/nologin #创建gdlc用户
[root@linux ~]# passwd gdlc #修改用户密码
Changing password for user gdlc.
New password: #输入密码
BAD PASSWORD: it is too short
Retype new password: #输入确认密码
实验三 FTP服务
passwd: all authentication tokens updated successfully.
[root@linux ~]# tail /etc/passwd #显示用户管理配置文件
netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
quagga:x:92:92:Quagga routing suite:/var/run/quagga:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
htt:x:100:102:IIIMF Htt:/usr/lib/im:/sbin/nologin
jake:x:500:500::/home/jake:/bin/bash
vip:x:501:501::/var/ftp:/sbin/nologin
gdlc:x:502:502::/home/gdlc:/sbin/nologin
[root@linux ~]#
4.修改/etc/vsftpd/配置文件。
[root@linux xinetd.d]# tail -v /etc/vsftpd/ #查看主配置文件的最后10行内容
==> /etc/vsftpd/ <==
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#deny_file={*.mp3,*.mov,*.rm}
pam_service_name=vsftpd
userlist_enable=YES
#userlist_deny=NO
#enable for standalone mode
#listen=YES #将黑体内容禁用,表示采用超级守护进程启动ftp服务器
#tcp_wrappers=YES #禁用/etc/或/etc/文件生效
[root@linux ~]# grep -v "#" /etc/vsftpd/
anonymous_enable=YES
local_enable=no
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
pam_service_name=vsftpd
实验三 FTP服务
userlist_enable=YES
[root@linux ~]#service xinetd restart
5.测试
说明:以下所有操作均可在FTP客户端或PC1~PC10上进行。
首先采用本地用户gdlc用户登录,系统提示登录失败,改用匿名用户登录成功。
[root@linux ~]# ftp 192.168.1.6
Connected to 192.168.1.6.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.1.6:root): gdlc #本地用户gdlc用户登录失败
530 This FTP server is anonymous only.
Login failed.
ftp> bye
[root@linux ~]# ftp 192.168.1.6
Connected to 192.168.1.6.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.1.6:root): anonymous #匿名用户登录成功
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 (192,168,1,6,132,60)
150 Here comes the directory listing.
drwxr-xr-x 3 501 501 4096 Feb 07 19:25 incoming
drwxr-xr-x 3 0 0 4096 Oct 04 2004 pub
226 Directory send OK.
ftp>bye
【实验故障与分析】
下面的表格中列出了在实验过程中可能出现的故障及其解决方法。看看是不是对你的实验有帮助?如果你在实验中还遇到其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决的方法。
实验三 FTP服务
序 号 实验故障 分析与解决
采用service vsftpd stop命令将ftp可能是用户没有将服务器关闭,再修改/etc/vsftpd/配置文件的/etc/xinetd.d/vsftpd配置文件,重启末尾两行注释掉
了xinetd服务,但无法打开21端口
1
2
3
【启发联想】
1.创建高安全的匿名服务,除了可以采用xinetd超级守护进程,还可以采用什么方式实现?
2. 能否设置匿名只允许在某个时间段访问FTP服务器?
3. 能否设置匿名只允许在某个网段访问FTP服务器?
发布评论