FTP服务器工作原理及如何通过PAM认证实现虚拟用(2)

<二>:FTP服务器架构篇
经过前面的介绍我们应该基本了解FTP的相关知识,比如FTP的功能及作用、工作原理、工作模式及登录方式,那下面就来如何实现构建FTP服务器,为内部网络提供文件共享服务呢。

配置思路:
实现匿名用户上传下载(SELinux、iptables)、定义上传文件的属主、禁锢本地用户、实现虚拟账户登录(基于PAM认证模式)

环境:VMware Workstation

版本:RedHat Enterprise 5.8

FTP服务器的IP地址为172.16.88.1/16

Linux测试机:172.16.88.2/16

XP测试机IP地址:192.168.0.203/24

说明环境:172.16.0.0/16和192.168.0.203/24之间可以互相访问:

Seq1:检查当前系统是否安装vsftpd二进制软件包,如果没有安装,使用yum来进行安装vsftpd即可

# rpm -q vsftpd

# yum install vsftpd -y #对yum生疏的朋友们,可以查看笔者关于YUM和RPM的相关文章进行了解。

Seq2:启动vsftpd进程并开启开机自动启动vsftpd服务

# service vsftpd restart

# chkconfig vsftpd on

# chkconfig --list vsftpd ##查看在那个级别上启动(默认为235级别)

# cd /var/ftp/pub

# echo "text file" > text.txt

下面用windows客户端来测试下,是否可以正常访问FTP服务器资源呢?


哎,奇怪了,为啥不能正常访问服务器呢?
说明:
如果在这测试的话,只能在本机访问FTP服务,在其它客户端就不能正常访问FTP服务了,因为我们的防火墙默认拒绝所有端口访问滴。那来修改下iptables看看是否可以正常访问。

Seq3:设置防火墙(iptables)开启20:21端口

#iptables -I INPUT 1 -p tcp --dport 20:21 -j ACCEPT

#service iptables save ##保存iptables设置

iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]

在测试看看结果:

FTP服务器工作原理及如何通过PAM认证实现虚拟用

Seq4:如何实现匿名用户具有上传的权限呢?
我们创建一个由匿名用户上传的目录,并将属主、属组更改为FTP

# mkdir -p /var/ftp/upload

# chown ftp:ftp /var/ftp/upload

我们修改配置文件/etc/vsftpd/vsftpd.conf,确保有下列几行。

write_enable=YES

anon_upload_enable=YES ##开启匿名用户上传功能

anon_mkdir_write_enable=YES ##允许匿名用户创建目录

然后重新启动vsftpd服务

#service vsftpd restart

然后再进行测试,查看是否可以上传文件?(效果图)

FTP服务器工作原理及如何通过PAM认证实现虚拟用


貌似还不能上传,那我们查看下SELINUX关于ftp的定义并修改相应选项(如图)

FTP服务器工作原理及如何通过PAM认证实现虚拟用


OK,修改好了,在测试下吧

FTP服务器工作原理及如何通过PAM认证实现虚拟用

Seq5:定义上传文件的属主
我们到服务器器上看看刚才上传windows.txt的属性信息:

FTP服务器工作原理及如何通过PAM认证实现虚拟用

编辑配置文件

# vim /etc/vsftpd/vsftpd.conf

修改如下内容

#chown_upload=YES

#chown_username=Hadoop

改为如下内容(如图)

FTP服务器工作原理及如何通过PAM认证实现虚拟用

注:当配置文件发生变化,一定不要忘记重启检测配置文件
# service vsftpd condrestart
在到windows客户机上(文件均是windows客户机文件)进行测试(测试结果图)

FTP服务器工作原理及如何通过PAM认证实现虚拟用



然后到服务器端,查看上传文件的属性信息:

FTP服务器工作原理及如何通过PAM认证实现虚拟用

Seq6:使用本地用户登录FTP服务器及禁锢本地用户访问目录

FTP服务器工作原理及如何通过PAM认证实现虚拟用

编辑主配置文件

# vim /etc/vsftpd/vsftpd.conf ##可以再末行模式下输入:set nu可以显示行号。

将96行和98行的#去掉,并在/etc/vsftpd/目录下创建chroot_list(凡是在此文件的用户,都禁锢在自己的家目录中)

chroot_list_enable=YES

97# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

# touch /etc/vsftpd/chroot_list

# echo "hadoop" > /etc/vsftpd/chroot_list ##将hadoop用户添加到chroot_list文件中。

然后再进行测试,看hadoop用户是否可以更换目录

FTP服务器工作原理及如何通过PAM认证实现虚拟用


总结:本地用户可以登录FTP服务器,并且登录后的默认目录为用户的家目录,而且还可以更改其默认目录,我们又知道ftp是明文传输的,如果出现中间人攻击的话,这将对于我们的服务器造成很大威胁,所以我们要禁止本地用户更改其默认目录。
如果禁锢所有本地用户,只需要在主配置文件中添加一行即可:chroot_local_user = YES

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/55b1f07926998dc148bbf036777c72c0.html