<二>: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 ]
在测试看看结果:
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
然后再进行测试,查看是否可以上传文件?(效果图)
貌似还不能上传,那我们查看下SELINUX关于ftp的定义并修改相应选项(如图)
OK,修改好了,在测试下吧
Seq5:定义上传文件的属主
我们到服务器器上看看刚才上传windows.txt的属性信息:
编辑配置文件
# vim /etc/vsftpd/vsftpd.conf
修改如下内容
#chown_upload=YES
#chown_username=Hadoop
改为如下内容(如图)
注:当配置文件发生变化,一定不要忘记重启检测配置文件
# service vsftpd condrestart
在到windows客户机上(文件均是windows客户机文件)进行测试(测试结果图)
然后到服务器端,查看上传文件的属性信息:
Seq6:使用本地用户登录FTP服务器及禁锢本地用户访问目录
编辑主配置文件
# 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服务器,并且登录后的默认目录为用户的家目录,而且还可以更改其默认目录,我们又知道ftp是明文传输的,如果出现中间人攻击的话,这将对于我们的服务器造成很大威胁,所以我们要禁止本地用户更改其默认目录。
如果禁锢所有本地用户,只需要在主配置文件中添加一行即可:chroot_local_user = YES