RedHat 5.4 RHCE VSFTPD学习笔记

 

个人博客:http://wqmsl.blog.51cto.com/shell

制做人:wqmsl数据库

 

目标:一、常规VSFTPD服务器搭建(很简单的匿名访问)浏览器

      二、本地用户访问FTP的方式(安全性高)安全

      三、虚拟用户访问方式(安全性最高)服务器

      四、chroot安全机制,禁锢用户只在本身的目录下活动,不可切换到别的目录下session

      五、访问控制机制ide

一、IP说明:测试

192.168.0.2——主机名:vsftpd.wqmsl.com   vsftpd服务器ui

192.168.0.3——主机名:client.wqmsl.com    client客户端this

二、前期准备

   更改主机名称(更改三处):一、hostname更改,二、hosts更改,三、/etc/sysconfig/network

三、所需软件包以下

wps_clip_p_w_picpath-31674

使用yum来安装,rpm的方式也是能够的

进入到vsftpd的主配置目录下:

wps_clip_p_w_picpath-26851

  (1)ftpusers是用户控制文件,在这个文件里面的用户,默认是不可使用vsftpd服务的。

  (2)user_list默认功能和第一个同样,可是经过配置,咱们可让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可让vsftpd服务器更加安全

  (3)vsftpd_conf_migrate.sh是vsftpd操做的一些变量和设置,这个不用管的

固然,主角就是 vsftpd.conf ,配置vsftpd,咱们操做最多的也就是这个文件了

1、下面开始实现第一个目标(搭建基本的FTP服务器)

我先备份一下vsftpd的主配置文件

wps_clip_p_w_picpath-22122

以便配置错误以后方便恢复

下面看看vsftpd.conf文件的内容吧

wps_clip_p_w_picpath-16383

大概就这些内容,能够本身more看一下哈!

默认安装完成vsftpd以后启动服务客户端就能够访问FTP了(匿名访问的方式),

wps_clip_p_w_picpath-14646

下面我在客户端来访问一下FTP

wps_clip_p_w_picpath-1629

不用登录便可访问FTP的pub目录,该目录在FTP服务器的

wps_clip_p_w_picpath-9335

这样一个简单的FTP服务器就搭建完成了,(关于vsftpd.Conf文件里的详细参数介绍看文章结尾的注意内容)。

2、下面咱们来实现第二个实验的目标(本地用户访问FTP的方式)

编辑vsftpd.conf文件,

wps_clip_p_w_picpath-27053

关闭默认容许的匿名访问的方式

wps_clip_p_w_picpath-27373

把其YES改成NO 便可,重启FTP服务,匿名就不能够访问了

wps_clip_p_w_picpath-9786

就要求我填写用户名和密码了

wps_clip_p_w_picpath-25111

添加用户ftp1指定到ftp组,并指定ftp1的shell不能够登录系统(安全起见)

最后设置用户的密码,

wps_clip_p_w_picpath-9311

在ftp1的家目录下创建一个test的文件用来测试

现我用ftp1帐号如今访问一下

wps_clip_p_w_picpath-32351

看看是否是能够了,登录以后是在ftp1的家目录下面,而后咱们用Linux客户端来访问一次

wps_clip_p_w_picpath-18060

wps_clip_p_w_picpath-366

登录成功

登录后输入“?”能够查看能够在ftp模式下敲击的命令哦!

wps_clip_p_w_picpath-5307

看咱们在本身的家目录,经过切换以后竟然能够切换到/etc下面,固然,这时候就是你下载passwd文件都是没有问题的,这样是很不安全的啦

实现目标四 禁锢用户在本身家目录

因此咱们启用chroot机制,把用户禁锢在本身的家目录,不容许他乱跑的哦。

咱们来编辑vsftpd的主配置文件,来启用cheroot

wps_clip_p_w_picpath-21611,

去掉前面注释#便可,保存

在/etc/vsftpd下添加chroot_list文件,编辑chroot_list添加ftp1用户,一行一个用户(在此

文件内的添加的用户将不能切换目录,视本身的家目录为跟目录)

wps_clip_p_w_picpath-6210

从新加载vsftpd配置文件。

wps_clip_p_w_picpath-13559

下面咱们从新使用Linux客户端访问如下,看看效果

wps_clip_p_w_picpath-4955

看看,切换目录失败,说明咱们的实验是成功的

下面我使用ftp2用户登录(ftp2我没有加入到chroot_list 文件中,因此正常状况下ftp2登录以后应该是能够切换目录的)

wps_clip_p_w_picpath-21269

从上面看到,咱们呢使用ftp2用户登录以后是能够成功切换目录的,如今你知道chroot的的做用了吧,也应该知道这个chroot_list文件的做用了吧。

(注意:若是你启动了chroot机制,却没有子啊/etc/vsftpd/下创建chroot_list 这个文件,那么当你登录的时候会出现失败的字样具体以下:421 Service not available, remote server has closed connection,因此启用以后必定要创建chroot_list 文件的哦)

3、下来咱们来实现第三个目标,用虚拟用户访问FTP服务器

    这个最重要的是

在/etc/vsftpd/下创建vlogin.txt文件,用来存储虚拟用户的用户名和密码

wps_clip_p_w_picpath-23012

编辑vlogin.txt这个文件

wps_clip_p_w_picpath-12142

编辑格式:奇数行:用户名

          偶数行:密码

生成数据库

保存虚拟账号和密码的文本文件没法被系统账号直接调用哈~咱们须要使用db_load命令生成db数据库文件

wps_clip_p_w_picpath-32033

(注意:rhel5默认只安装db4-4.3.29-9.fc6.i386.rpm和db4-devel-4.3.29-9.fc6.i386.rpm,

要使用db_load须要将db4-utils-4.3.29-9.fc6.i386.rpm包安装上哈~不然会出现下图的错  误:找不到db_load命令。)

修改数据库文件访问权限
数据库文件中保存着虚拟账号的密码信息,为了防止非法用户盗取哈,咱们能够修改该文件的访问权限。生成的认证文件的权限应设置为只对root用户可读可写,即600
chmod 600 /etc/vsftpd/vlogin.db

wps_clip_p_w_picpath-17544编辑pam文件(编辑的时候必定要认真,出现错误的话客户端登录会被530的错误提示拒绝登录)PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

wps_clip_p_w_picpath-19076

用#注释掉原来的全部参数(如需使用访问控制ftpusers,则不要注释这行便可“auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed”)如上图

在最后添加auth        reguired     pam_userdb.so       db=/etc/vsftpd/vlogin

          account      reguired     pam_userdb.so       db=/etc/vsftpd/vlogin

这两行,pam_userdb.so 的位置在/lib/security/下面,db=/etc/vsftpd/vlogin中的vlogin为咱们生成的db数据文件vlogin.db。

添加一个系统用户 来对应 虚拟用户,光有虚拟用户是没法登录的,咱们须要让虚拟用户对应一个系统实际的用户,这样全部的用户登录以后就会进入到系统实际用户的家目录,咱们再经过给各个虚拟用户来分配不一样的权限(最后讲这个)

wps_clip_p_w_picpath-6893

这里,-g指定用户的属组为ftp组,-s指定用户的Shell为不可登录,-d指定用户的家目录为/var/share ,它的加目录的权限以下

wps_clip_p_w_picpath-24010

编辑/etc/vsftpd/vsftpd.conf  ,

添加以下内容

wps_clip_p_w_picpath-10071

内容选项解释:

pam_service_name=vsftpd:          配置vsftpd使用的PAM模块为vsftpd

user_config_dir=/etc/vsftpd/vuserconfig:设置虚拟账号权限配置的主目录为 vuserconfig

guest_enable=yes                    容许使用虚拟用户登录FTP

guest_username=ftp3                 虚拟用户所对应的系统用户为ftp3(我以前添加的)。

max_clients=1:设置FTP服务器最大接入客户端数为1个(为了方便测试,你能够根据本身的实际状况设定)

max_per_ip=1:设置每一个IP地址最大链接数为1个(为了方便测试,你能够根据本身的实际状况设定)

在/etc/vsftpd/下创建vuserconfig目录,用于存放用户的权限配置文件,以便为各个用户分配不一样的权限,

wps_clip_p_w_picpath-18673

在vuserconfig目录下面创建用户的权限配置文件,配置文件的名称必需要和在vlogin.txt.中添加的用户名一致

wps_clip_p_w_picpath-2901

看一下ftp6配置文件的内容:

wps_clip_p_w_picpath-10438

参数详解:

anon_world_readable_only=no     容许匿名用户浏览器整个服务器的文件系统write_enable=yes                容许在文件系统写入权限

anon_mkdir_write_enable=yes     容许建立文件夹

anon_other_write_enable=yes      容许用户更名和删除文件的权限

anon_upload_enable=yes         开启匿名账号的上传功能

anon_max_rate=100000          限定传输速度为100KB/s(以字节为单位的)

重启服务 service  vsftpd  restart /reload

如今使用ftp6虚拟用户登录能够看到,已经登录成功

wps_clip_p_w_picpath-21512

wps_clip_p_w_picpath-29485

并且已经禁锢用户在家目录下面,切换用户目录失败。

在用户的权限配置文件下编辑不一样的权限,那么对应的用户就会拥有不一样的权限,

这里就看本身的实际状况了,你也能够在虚拟用户的权限配置文件中添加对应的系统实际用户,虚拟用户能够是  (1)多个虚拟用户———— 一个实际系统用户

                    (2)一个虚拟用户————  一个系统用户

灵活多变,看本身的实际状况去设置。

4、实现第四个目标访问控制机制

/etc/ftpusers(访问控制文件)

wps_clip_p_w_picpath-28655
默认是拒绝这些用户登录的(上面添加ftp6用户) 但能够经过修改/etc/pam.d/ftp中的sense值为allow 就表示只容许登录的用户以下:

*****************************************************************************************************************
[root@service root]# more /etc/pam.d/ftp
#%PAM-1.0
auth       required      /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed
auth       required      /lib/security/pam_unix.so shadow nullok
auth       required      /lib/security/pam_shells.so
account    required      /lib/security/pam_unix.so
session    required       /lib/security/pam_unix.so
****************************************************************************************************************咱们先来分析一下auth         required /lib/security/pam_listfile.so   item=user sense=deny file=/etc/ftpusers onerr=succeed 这一句

其中 /lib/security/pam_listfile.so是调用这个模块用来检测登录进来的用户是否是记记载在/etc/ftpusers中的用户

而item=user 很明显是说明要检测的是用户

sense=deny则是处理方法deny就是就是拒绝的意思了

我有个用户名字叫ftp6在默认条件下条件下是能够登录ftp服务器的我把它加入/etc/ftpusers 后看看状况哦

#echo "ftp6" >> /etc/ftpusers

有时候 你只想容许某部分人登录ftp服务器 那么 你能够经过修改/etc/pam.d/ftp中的sense值为allow 就表示只容许登录的用户,那么你在 /etc/ftpusers 文件加入的 用户就表示访问的 没在文件内的用户都被拒绝

如今我使用ftp6来登陆一下FTP服务器试试

wps_clip_p_w_picpath-29767

登陆失败,说明配置已经生效。

Vsftpd的主配置文件/etc/vsftpd.conf的配置选项解释:

咱们要先了解几个关键的配置选项
anonymous_enable=YES                   //容许匿名用户登录
local_enable=YES                        //容许本地用户登录 若是这个不打开的话 uid 500如下的人都被访问拒绝

write_enable=YES                        //容许客户端写命令
local_umask=022                         //本地用户新文件的umask的值 就等于ground 和other 部分的可写部分去掉

anon_upload_enable=YES                   //容许匿名用户上传文件
anon_mkdir_write_enable=YES               //容许匿名用户建立目录 这个最好不要打开不然会带来不可预测的后果

dirmessage_enable=YES                          //容许使用目录的消息
ftpd_banner=Welcome to weihua0722's FTP service.     //登录欢迎辞词
ls_recurse_enable=YES                            //容许使用ls -R命令
listen=YES                                      //监听模式 就是要服务器单独运行

FTP原理尝试:

后台进程:vsftpd类型:System V 服务使用端口:20(ftp-data),21(ftp)所需RPM包:vsftpd配置文件:/etc/vsftpd/vsftpd.conf

FTP的主动模式和被动模式很重要

主动模式:

client 先链接服务器的 21端口(命令端口),而后client开放一个大于1024的端口等待服务器的20端口链接,21号端口的连接创建之后,服务器就用20去链接client开放的端口,简单来讲就是服务器主动连客户端啦

基于上面的链接方式,若是client端有个防火墙,服务器的20端口就链接不进入,致使会链接失败。

被动模式:

就是client开启大于1024的X端口链接服务器的21(命令端口),同时开启X+1端口

当21号端口链接成功后,client会发送PASV命令,通知服务器本身处于被动模式,服务器收到这个消息后,就会开放一个大于1024的端口Y通知client,client接到通知后就会用X+1来链接服务器的Y端口,简单的说就是client主动链接服务器

通常咱们使用的是主动模式

你们了解被动模式就能够了,当你架设FTP服务器,出现这样的状况,你应该想到可使用被动模式来解决,固然防火墙通常也支持FTP的追踪模块,会自动识别本身发出的FTP数据请求。这样制动模式也能返回数据

会遇到的问题

一、500 OOPS: vsftpd: refusing to run with writable anonymous root

这表示ftp用户的家目录的权限不对,应该改过才对;

二、有时候会遇到530的错误,通常都是由于你启用了虚拟用户以后编辑pam.d/vsftpd文件致使,内容出现错误的时候就会被拒绝登录,全部必定要认真。

 

个人博客:http://wqmsl.blog.51cto.com/

欢迎你们和我一块儿交流

相关文章
相关标签/搜索