您的位置:首页 > 运维架构 > Linux

linux中ftp服务的搭建、匿名用户的管理、本地用户的管理、虚拟用户pam认证的配置及管理

2018-10-28 00:40 826 查看

         摘要:本文主要介绍了ftp服务的搭建,以及对ftp服务中Anonymous(匿名)用户、Local(本地)用户、Guest(虚拟)用户、文件权限的管理。

 

###一.实验前准备:

       首先搭建yum源;  然后下载对应的ftp服务的软件,这里我们使用vsftp这款提供ftp服务的软件;  若主机上没有 lftp 这个命令,还要下载该命令的软件包。  这些操作过程的详细步骤请参考博主之前的文章:yum源的搭建。

###二.开启vsftpd服务:

#1.首先开启vsftp服务器,并设置开机开启该服务。

#2.使防火墙不阻止ftp服务:

通过下图我们发现防火墙是没开启ftp服务的功能的。

下面我们开启防火墙对ftp服务不阻塞的功能; 先用firewall-config打开如下窗口:

左上方选项改为 permanent,中间的服务选项部分勾选上ftp。

最后上方的 Options 选项选择载入设置。

到这里防火墙就不会对ftp服务进行阻塞了,如下图:

#三、关闭内核的selinux功能:

我们用getenforce来查看selinux的状态,如图表示seliinux是开启状态。

我们编辑selinux的配置文件来关闭该功能: vim /etc/sysconfig/selinux

       然后重启系统,再次开机后发现selinux已经是关闭状态。注意修改完配置文件后必须重启系统,因为该配置文件是被内核记录的,只有通过重启,让内核重新记录配置中的内容才能生效。

此时ftp服务的前期搭建就算完成了,下面我们进行ftp服务的管理

# 四 、对vsftpd服务的管理:

###1.用户登陆的的方式:
匿名拥护呼登陆后的路径:    /var/ftp
 匿名用户登陆的命令 : lftp   172.25.254.13


本地用户登陆后的路径  /home/username
 本地用户登陆命令:  lftp   172.25.254.13  -u   student

###2.vsftpd服务的配置文件:

      /etc/vsftpd/vsftpd.conf

###3.配置匿名用户是否可登陆:

   编辑vsftpd的配置文件:vim    /etc/vsftpd/vsftpd.conf, 配置anonymous_enable=YES,表示允许匿名用户登陆;NO表示不允许。

   修改为不允许匿名用户登陆ftp服务器:

  

      博主等了好长时间还不能浏览目录,显示正在链接,这种情况一般就表示不能完成认证了,若出现 530 报错,就更证明了认证未完成,如下图。

##4、配置本地用户可登陆

       本地用户指你系统中家目录里的用户,我们编辑vsdtpd的配置文件,添加 local_enable=YES,这表示允许本地用户登陆,修改为NO则表示不允许。

修改为local_enable=NO:

此时本地用户已经不能登陆vsftpd服务了:

##5、配置本地用户是否可上传:

首先为配置本地用户可写权限: write_enable=YES

接着我们登陆试试看:

而且还具有删除、建目录、下载的权限:

若修改为不可写:write_enable=NO,则不能上传、不能删除、不能创建目录:

只能够下载喽:

## 5.配置匿名用户的上传和下载:

配置之前的现象

给配置文件添上: anon_upload_enable=YES

再次尝试去上传,还是不行,提示553报错,这表示文件系统权限拒绝:

我们地修改pub文件的权限和用户组属性,所以做如下操作

现在再去试着上传文件就可以上传了:

## 6.配置匿名用户的下载功能:

修改配置文件,添加:anon_world_readable_only=NO,现象如下:

# 7.配置使匿名用户可以创建目录:

添加配置:  anon_mkdir_write_enable=YES ,  现象如下:

## 8. 配置匿名用户的删除权限:

添加配置 anon_other_write_enable=YES,现象如下:

## 9.配置限制用户的上传速度:

我们先创建一个1Gb的文件:bigfile

然后登陆ftp上传该文件:

     平均速率30Mb/s,贼爽,但是若你是运维人员,你就知道带宽是多么贵,不能这么让一个人占用了,所以我们得限速:

添加配置:anon_max_rate=10240,这表示限制速率再100KB/S左右;

然后再试着上传改文件,刚开始可能超出100KB/S很多,但慢慢会下降,最后均速被限制到100Kb/s左右了,如下图:

## 10. 配置使登陆ftp得连接数为预期所想的;

我们使只能有两个用户同时登陆ftp服务器。

在这之前,先用三个用户登陆ftp服务器:

现在我们添加配置: max_clients=2 ,意思是限制登陆得连接数量为2。

我们再用三个用户登陆看看结果,第三个用户已经不能登陆上去了:

##11. 配置 指定匿名用户登陆的目录:

   匿名用户默认的登陆目录是/var/ftp,现在我们指定登陆目录为:/245room。

我们添加配置:anon_root=/245room,并在根下建立245room得目录,并在里面建立个file文件作为标记:

然后我们匿名登陆ftp,发现我们进的目录就是我们指定得目录:

## 12.配置匿名用户登陆ftp时 登陆的用户身份:

首先添加配置信息: chown_uploads=YES     和    chown_uploads=YES:

在登陆ftp之前,我们先看一下student用户的uid是多少;然后我们登陆ftp,上传文件:

现在我们查看上传文件的用户是谁,如下图,就是student这个用户:

## 13.配置匿名用户上传的文件的权限 和新建的目录的权限:

我们先看一下默认新建文件和目录的权限:

现在我们试着去修改这个权限为,先添加配置文件 anon_umask=022 ;若不出意外,上传的文件的权限为 644,目录为755。

现在我们看是否符合预期:

# 14. 配置指定用户上传的文件的权限 和新建的目录的权限:

配置文件添加:chown_uploads=YES   和   chown_username=student  和   chown_upload_mode=0644

这个实验相当于把上两个实验的配置内容全都开启,这里不再赘述详细过程。

# 15.指定本地用户登陆ftp后的目录:

添加配置:local_root=/245room ,即可实现指定本地用户登陆的目录。

在根目录之前我们已经创建过 245room 这个目录,这里我们只需要在里头新建一个标记文件  file2 即可。

# 16.指定本地用户的上传文件权限:

修改配置文件为:local_umask=077,若符合预期,则新建的文件权限应为600,目录权限应该为700。

我们看结果如何:

# 17.锁定用户只能在自己的家目录下:

实验前通过观察,本地用户可以切换到根目录下:

配置文件添加 /etc/vsftpd/chroot_list,  然后修改家目录下用户的权限  chmod   u-w   /home/*  :

若不修改家目录下用户目录的权限,则如下进自己的目录会报550的错误:

修改权限后,我们的目的就达到了:

suzhao 用户也不能切换到根目录:

# 18.设置 锁定本地用户只能访问自己家目录的 黑名单:

先添加这三条配置:chroot_list_enable=YES  和   chroot_list_file=/etc/vsftpd/chroot_list 和  chroot_local_user=NO:

接着,在/etc/vsftpd 目录中,创建文件 chroot_list,这个是锁定的用户的黑名单,我们添加 student 这个用户进去:

然后重启网络,然后用student用户登陆ftp服务器,发现student用户不能切换到根目录:

而其它本地用户可以切换到根目录下:

# 19.设置 锁定本地用户只能访问自己家目录的 白名单:

将上个实验的图的配置修改如下即可

依旧是 student这个用户在白名单中

重启网络后,用student用户登陆ftp服务器,发现student 可以切换到根目录,而其它本地用户不可以。

# 20.配置用户登陆的黑名单:

     在/etc/vsftpf 目录下的 ftpusers 和user_list 这两个文件即为ftp服务默认的两个黑名单; ftpusers 默认是永久的黑名单,而user_list为临时黑名单;什么叫临时黑名单?就是通过修改配置文件可能变成白名单

我们将 student用户添加到永久黑名单:

student用户不能登陆ftp服务器了:

user_list文件也有同样的功效,这里不再赘述了。

# 20.配置用户登陆的白名单:

这个配置的安全性就极高了,只有在user_list名单中的用户才能登陆。

首先修改配置文件,如下图:

接着我们将student用户添加进user_list名单:

然后进行测试,在user_list中的student用户可以登陆服务器:

而不在user_list名单中的用户都被拒绝登陆:

匿名用户也被拒绝:

## 21.ftp虚拟用户使用pam认证的的设定:

1.创建虚拟用户帐号身份:

切换到该目录下:cd /etc/vsftpd/
创建并编辑改文件:vim ftpuserlogin,下图表示创建三个虚拟用户,这三个用户的密码分别为123、456、789。

2. 给该文件加密:

 使用该命令进行加密:  db_load   -T   -t   hash   -f   ftpuserlogin   ftpuserlogin.db

下图的ftpuserlogin.db即为加密生成的文件:

3.使用pam这个服务进行认证工作:

    我们可以把pam提供的服务当作一个看门的大爷,这个大爷手上有个小区人员的名单,如果来的人报上姓名和密码,若符合贼进来,不符合,GUN!

首先进入pam的服务目录下:cd /etc/pam.d/

创建并添加该大爷手中的名单,也就是虚拟用户的名单: vim westos ,如下:

第一行对用户进行确认:account表示账户,required表示允许或者拒绝,pam_userdb.so就是大爷,最后是承载用户和用户对应密码的那个文件的路径。

第二行对密码进行核实:和第一行不同的是 auth,这代表密码的意思。

4.修改vsftpd的配置文件,让vsftpd对创建的虚拟账户采用pam的认证方式:

编辑vsftpd的配置文件

修改和添加三条配置:

pam_service_name=westos

guest_enable=YES

guest_username=ftp

现在重启配置,开始测试:

匿名用户要通过pam认证才能登陆ftp服务的实验就完成了。

# 22.对不同虚拟用户设置不同的权限:

eg:只让xuhao 这个用户具有上传文件、删除文件、下载文件的权限、创建目录的权限,其它用户只能下载文件。

1.首先创建虚拟用户的家目录以及修改权限:

2.修改vsftpd的配置文件:

在配置文件中添加配置:user_config_dir=/etc/vsftpd/configdir

3.创建子用户的权限文件:

在/etc/vsftpd/下创建configdir1:

mkdir /etc/vsftpd/configdir1
cd  configdir

先给xuhao这个用户配置动作权限:

   第一步测试xuhao的权限时,发现权限是没问题的,但是不能回到咱们第一步给虚拟用户建的家目录,这是因为我们就没有在文件中进行家目录配置声明,应做修改如下:

测试看是否更改访问家目录的位置成功:

继续进行权限的配置,现在给tianfeng 这个用户配置可下载权限:

同样的给chengyuan这个用户设置可下载权限:

接下来我们进行测试:

先测试xuhao 的权限

测试发现xuhao不能实现上传功能,问题可能是用户本身目录权限开的太大,我们去解决:

减少掉这三个用户自身目录的写权限:

继续测试xuhao用户的权限,还是不行,权限太大,参考一下系统的家目录给的权限,最后把三个用户目录权限设置成500:

我靠再继续测试xuhao这个用户....乱了

删掉目录重建。。。 这时才发现第一步建目录时权限就给错了,后面改的错上加错,权限应该为775。

这时再测试就没问题了:

创建好另外两个用户的家目录并设置好权限:

再测试tianfeng这个用户:

如我们预期所设,它不能上传、创建目录、删除文件,但能下载文件。

再测试最后一个用户chengyuan:

     符合预期的权限设置。

 

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: