配置FTP服务器提供上传下载功能

本节所讲内容:

•      用户和组的相关配置文件

•      管理用户和组

•      进入单用户模式找回root身份

•      暴力破解rhel5下shadow文件中的密码

 

FTP服务端:xuegod63.cn   IP:192.168.1.63

FTP客户端:xuegod64.cn   IP:192.168.1.64

 

FTP服务概述:

FTP服务器(File TransferProtocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议

常见FTP服务器:

windows:Serv-U FTP Server

Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。 

 

今天的主角:vsftp

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

 

特点:

它是一个安全、高速、稳定的FTP服务器;

模式: C/S 模式

 

端口:

[root@xuegod64 ~]#vim /etc/services

20 (传数据)   21 (传指令)

fsp(File Service Protocol:文件服务协议。

 

安装vsftp服务器端

[root@xuegod63 ~]# rpm-ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

yum -y install vsftpd

安装客户端:

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm

注:从RHEL6开始,系统镜像中默认没有ftp客户端命令。取而代之的是lftp命令

Linux客户端:

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https,hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常好一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

 

配置文件

 

/var/ftp/pub/                            #默认的共享目录

/etc/vsftpd/vsftpd.conf      #vsftpd主配置文件

/etc/vsftpd/ftpusers           #用户指定哪些用户不能访问ftp服务器,黑名单

/etc/vsftpd/user_list           #用户指定哪些用户能访问ftp服务器,白名单

/var/ftp/                            #默认情况下匿名用户的根目录

 

启动服务

[root@xuegod63 ~]#service vsftpd restart

[root@xuegod63 ~]#chkconfig vsftpd on

 

[root@xuegod63 ~]#netstat -anptu | grep ftp

tcp        0     0 0.0.0.0:21                 0.0.0.0:*                   LISTEN      2877/vsftpd

 

互动: 为什么看不到20端口?。

因为没有数据通信。 

 

FTP服务的使用方法

Linux

[root@xuegod63 ~]# lftp192.168.1.63

lftp 192.168.1.63:~>ls

drwxr-xr-x    2 0       0            4096 Mar 31 12:47 pub

 

windows:

 

修改配置文件,实战举例

例1公司技术部准备搭建一台功能简单的FTP 服务器,允许所有员工上传和下载文件,并允许创建用

户自己的目录。

允许匿名用户访问

anonymous_enable=YES

允许匿名用户上传文件并可以创建目录

anon_upload_enable=YES

anon_mkdir_write_enable=YES 

 

重启服务

 

[root@xuegod63 ~]#service vsftpd restart

 

启动服务:

service vsftpd restart

 

测试:  不能写

 

 

(2)创建上传目录ftp 用户的写入权限

注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!

 

 

下面我们来一步一步的实现,先修改目录权限,创建一个公司上传用的目录,叫xuegoddata,设置拥有者为ftp 用户所有,目录权限是755

[root@xuegod63 vsftpd]# mkdir/var/ftp/xuegoddata

[root@xuegod63 vsftpd]# chown ftp/var/ftp/xuegoddata/

[root@xuegod63 vsftpd]# ll -d !$

ll -d /var/ftp/xuegoddata/

drwxr-xr-x 2 ftp root 4096 Mar  9 19:30 /var/ftp/xuegoddata/

 

 

然后重新启动服务

[root@xuegod63 ~]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

 

(5)测试

匿名登录FTP

 

现在我们匿名上传

现在匿名上传的文件是禁止删除滴~

这样匿名用户的上传就算成功了

注:工作中,匿名用户只是只读访问,写的权限也没有的。

 

 

例2

公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文

件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别适用team1 和team2

帐号进行管理。先要求仅允许team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将

这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。

 

ftp 和www web服务器相结合。

www web服务器根目录:  /var/www/html

只允许:team1和team2两用户可以上传。 vsftp禁止匿名。

 

分析:

将FTP 和WEB 服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安

全性,首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot 功能将team1

和team2 锁定在/var/www/html 目录下。如果需要删除文件则还需要注意本地权限

解决方案:

(1)建立维护网站内容的ftp 帐号team1 和team2 并禁止本地登录,然后设置其密码

[root@xuegod63 ~]# useradd -s /sbin/nologinteam1

[root@xuegod63 ~]# useradd -s /sbin/nologinteam2

[root@xuegod63 ~]# echo "123456" |passwd --stdin team1

Changing password for user team1.

passwd: all authentication tokens updatedsuccessfully.

[root@xuegod63 ~]# echo "123456" |passwd --stdin team2

Changing password for user team2.

passwd: all authentication tokens updatedsuccessfully.

 

2)配置vsftpd.conf 主配置文件并作相应修改

[root@xuegod63 vsftpd]# cp vsftpd.conf.backvsftpd.conf

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO:禁止匿名用户登录

local_enable=YES:允许本地用户登录

 

改:

为:

local_root=/var/www/html:设置本地用户的根目录为/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名

保存退出

(3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号

[root@xuegod63 vsftpd]# touch/etc/vsftpd/chroot_list

[root@xuegod63 ~]# ll !$

ll /etc/vsftpd/chroot_list

-rw-r--r-- 1 root root 0 Nov 10 17:08/etc/vsftpd/chroot_list

[root@xuegod63 ~]# vim/etc/vsftpd/chroot_list  #写入以下内容,一行,一个用户名

team1

team2

(5)重启vsftpd 服务使配置生效

service vsftpd restart

(6)修改本地权限

 

[root@xuegod63 ~]# ll -d /var/www/html/

drwxr-xr-x. 2 root root 4096 Oct  6  2011/var/www/html/

[root@xuegod63 ~]# chmod -R o+w/var/www/html/

[root@xuegod63 ~]# ll -d /var/www/html/

drwxr-xrwx. 2 root root 4096 Oct  6  2011/var/www/html/

 

(7)测试

 

测试:

 

windows  :windows+R  再运行cmd

C:\Users\shen>ftp 192.168.1.63

连接到 192.168.1.63。

220 (vsFTPd 2.2.2)

用户(192.168.1.63:(none)): team1

331 Please specify the password.

密码:123456

230 Login successful.

ftp> pwd

257 "/"

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

226 Directory send OK.

ftp> mkdir test

257 "/test" created

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

test

226 Directory send OK.

ftp: 收到 6 字节,用时 0.00秒 6.00千字节/秒。

测试删除:

ftp> rm -rf test

550 Remove directory operation failed.

ftp> rmdir test   #删除时,不用能用rm命令,因为rm命令不是ftp上的命令。

250 Remove directory operation successful.

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

226 Directory send OK.

ftp>

 

FTP虚拟用户的使用

概述:通过虚拟用户能讲ftp的用户和系统用户进行分离,这样即使黑客破解了ftp的账号和密码,也只是能访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性。

 

公司环境:

假设A公司有一台ftp服务器,此服务器提供了供公司员工下载的一些资料,普通员工只有查看和下载权限,但是没有上传和修改的权限,公司经理拥有上传和下载的权限

 

实现步骤:

1、创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码

[root@xuegod163 ~]# vim/etc/vsftpd/vusers.list

xsb

123

boss

456

 

注:其中xsb为普通员工登录账号,boss为经理登录账号

2、生成数据库

使用db_load生成,如果没有此命令,可以使用以下命令进行安装

[root@xuegod163 ~]# yum -yinstall db4-utils

生成用户数据库

[root@xuegod163 ~]# db_load -T-t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

 

注:-T:允许应用程序能够将文本文件转译载入数据库

       -t:hash使用hash码加密

       -f:指定包含用户名和密码的文本文件

 

3、修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取

[root@xuegod163 ~]# chmod 600/etc/vsftpd/vusers.db

4、创建两个系统用户virtual和rm并修改目录权限

[root@xuegod63 ~]# chmod600 /etc/vsftpd/vusers.db

[root@xuegod63 ~]#useradd -d /var/ftp/xsb -s /sbin/nologin virtual

[root@xuegod63 ~]#useradd -d /var/ftp/boss -s /sbin/nologin rm

[root@xuegod63 ~]# chmod755 /var/ftp/xsb/

[root@xuegod63 ~]# chmod755 /var/ftp/boss/

5、配置PAM文件

为了是服务器能使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块

PAM概述:

PAM(Plugable AuthenticationModule)为可插拔认证模块,不必重新安装应用系统,通过修

改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此

目录下保存着大量与认证有关的配置文件,并以服务名称命名。

[root@xuegod163 ~]# vim/etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

account required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

注:文件最后调用的数据库文件时省略掉了db后缀

 

6、修改主配置文件

[root@xuegod163 ~]# vim/etc/vsftpd/vsftpd.conf

local_enable=YES                              #允许本地用户登录

write_enable=YES                             #允许写入

anon_umask=022                              #设置上传文件的默认权限

chroot_local_user=YES                      #限制目录

#guest_enable=YES                          #开启虚拟用户支持,可以在用户单独配置文件中设置

#guest_username=virtual                 #设置映射本地用户,可以在用户单独配置文件中设置

pam_service_name=vsftpd.vu           #指定PAM文件

max_clients=300                               #最大接入的客户端数量

max_per_ip=10                                 #设置每个IP地址最大连接数

 

如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端进行登录了,但是所有的虚拟用户权限一样。

 

建立独立的配置文件,设置不同用户的权限

[root@xuegod163 ~]# vim/etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir    #指定用户配置文件的路径

 

[root@xuegod163 ~]# vim/etc/vsftpd/vusers_dir/xsb

guest_enable=yes

guest_username=virtual

anon_world_readable_only=no                 #允许匿名用户浏览整个服务器的文件

anon_max_rate=50000                             #设置传输速率为50KB/s

 

[root@xuegod163 ~]# vim/etc/vsftpd/vusers_dir/boss

guest_enable=yes

guest_username=rm

anon_world_readable_only=no

write_enable=yes

anon_mkdir_write_enable=yes                 #允许创建目录

anon_upload_enable=yes                         #允许上传文件

anon_max_rate=100000                            #甚至传输速率为100KB/s

anon_other_write_enable=yes                  #允许修改、重命名、删除文件

 

客户端验证:

先拷贝一些测试文件

[root@xuegod163 ~]# cp/etc/passwd /var/ftp/xsb/

[root@xuegod163 ~]# cp/etc/hosts /var/ftp/boss/

 

客户端登录验证

使用xsb用户登录时,上传文件失败,权限不允许

使用boss用户登录上传文件成功

 

你可能感兴趣的:(linux服务)