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服务器?