FTP服务器的安装,配置,虚拟用户的创建

来源:互联网 发布:linux 浏览网页 编辑:程序博客网 时间:2024/05/16 15:49

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。听起来好像很高上的样子,所以,我今天也在自己的服务器上搭了一个ftp服务器玩玩,现在,分享一下经验哦!

一.查看是否安装vsftpd:

rpm -qa | grep vsftpd

如果已经安装过了,则会提示vsftpd的版本.如果没有安装则什么都不会提示.

[yang@yang ~]$  rpm -qa | grep vsftpdvsftpd-2.2.2-14.el6.i686

二.安装(如果上一步没有任何提示,则证明没有安装vsftpd,如果有版本信息,则跳过这一步)

yum -y install vsftpd

三.在配置服务器之前先了解几个配置件;

1 /etc/sysconfig/selinux  (以下内容和安装配置的关系不大,但最好能了解一下)

      什么是selinux呢.selinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Linux Kernel2.6.x中,它是NSA(united States  National  Security  Agency)和selinux社区的联合项目.

       selinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌在Linux Kernel中,selinux 定义每个用户,进程,应用,和文件的访问和转变的权限,然后它使用了一个安全策略来控制这些实体(用户,进程,应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查.

      selinux对系统管理员是透明的,只有系统管理员需要考虑在他的服务器中如何制定严格的策略,策略可以根据需要是严格的或是宽松的

只有同时满足[标准Linux访问控制]和[selinux访问控制]时,主体才能访问客体.

在上面我提到了MAC,其实,和它相对应的还有一个DAC:来看看它们之间有什么不同呢:

安全增强型的Linux(SElinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组建及用户工具,可以让应用程序在其所需的最低权限上运行,未经修改的Linux系统是使用自主访问控制的,用户可以自己请求更高的root权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果你授予其root权 限,那它就无所不能了.

在SElinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它.这就意味着那些潜在的恶意软件所造成的损害可以控制在最小.

操作系统有两类访问控制,自主访问(DAC)和强制访问控制(MAC),标准Linux安全是一种DAC,SElinux为linux增加了一个灵活和可配置的MAC.

所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别。简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权。 DAC最根本的弱点是主体容易受到多种多样的恶意软件的攻击,MAC就是避免这些攻击的出路,大多数MAC特性组成了多层安全模型。   

  SELinux实现了一个更灵活的MAC形式,叫做类型强制(Type Enforcement)和一个非强制的多层安全形式(Multi-Level Security)。

当然,在这里只是对其做简单的介绍,在这里,我们的FTP服务器配置里,我们选择直接关闭其服务.

(1)查看SELinux

[root@yang ~]#  /usr/sbin/sestatus -vSELinux status:                 disabled[root@yang ~]# getenforceDisabled用上面的两种方法都可以disabled代表关闭,enabled即为开启状态.

(2)修改配置文件(重启服务)

修改/etc/sysconfig/selinux文件,将SELINUX=enabled 改为 disabled;

2./etc/vsftpd/vsftpd.conf(这个配置文件很重要,注意, 以下的配置变量可能在你的/etc/vsftpd/vsftpd.conf中已经存在,只需要去掉注释即可,没有的,你可以根据需要自行添加.

*********************************匿名权限控制*************************************

anonymous_enable=YES(NO)        #是否允许匿名用户登录

no_anon_password=YES(NO)      #匿名用户登录时不询问口令.

下面这四个主要语句控制这个文件和文件夹的上传,下载,创建,删除和重命名;

anono_upload_enable=YES(NO)     #来控制匿名用户对文件(非目录)上传权限.

anno_world_readable_only=YES(NO)        #控制匿名用户对文件的下载权限

anon_mkdir_write_enable=(YES/NO); #控制匿名用户对文件夹的创建权限
anon_other_write_enable=(YES/NO); #控制匿名用户对文件和文件夹的删除和重命名

write_enable=YES #全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启它)

anon_root=(none)     #匿名用户主目录none-指的是匿名用户目录,匿名用户的默认目录是/var/ftp

anon_max_rate=(0) #匿名用户速度限制

anon_umask=(077) #匿名用户上传文件时有掩码(若想让匿名用户上传的文件能直接被匿名下载,就这设置这里为073)

chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改成chown_username

chown_username=whoever #匿名上传文件所属用户名

**********************************本地用户权限控制*************************************

write_enable=YES #可以上传(全局控制) 删除,重命名

local_umask=022  #本地用户上传文件的umask

chroot_local_user=YES   #开启本地用户可登录ftp
chroot_list_enable=YES   #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录

chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用户文件

user_config_dir=                #后面跟存放配置文件的目录。用来实现不同用户不同权限。
                                           #在vsftpd.conf文件中加入这一句,
                                         #在相应的目录里面,为每个用户创建自己的配置文件,用来实现不同的权限

可以通过以下三条配置文件来控制用户切换目录:

chroot_list_enable=YES/NO   #设置是否启用chroot_list_file配置项指定的用户列表文件。
      #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录 .默认值为yes。

chroot_list_file=/etc/vsftpd/chroot_list #指出被锁定在自家目录中的用户的列表文件。

chroot_list_enable=YES
通过与chroot_local_user=YES/NO搭配能实现以下几种效果:
(1)、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
(2)、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
(3)、当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
(4)、当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

3.配置文件/etc/vsftpd/ftpusers

ftpusers:(黑名单)在这个文件中加入本地用户后此用户就登不上了.

白名单:在配置文件中加userlist_deny=NO  #启动白名单服务,只有加入的本地用户才可以登录.

*************************************虚拟用户的创建*******************************

3.虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

  在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。

(1)创建虚拟用户:vim/etc/vsftpd/users  ( 新建文件users)

添加以下内容:(奇数行为用户名,偶数行为密码)

yang

1234

long

1234

(2)对 users进行加密: db_load -T -t hash -f users vsftpd.login.db   源文件users就可以删掉了.

(3)打开 /etc/pam.d/vsftpd    注释掉所有内容,在其后添加:

auth       required     pam_userdb.so  db=/etc/vsftpd/login         本地用户的登陆

account    required     pam_userdb.so  db=/etc/vsftpd/login      匿名登陆

(4),在配置文件里加入pam_service_name=vsftpd,       guest_enable=YES (允许客人登录),     guest_username=ftp(默认用户名为ftp)

(5)建立属于自己的环境:mkdir  /var/ftphome     在ftphome中建立用户yang和用户long 的家目录.再其各自的家目录下创建测试文件.

(6)在配置文件中加入:local_root=/var/ftphome/$USER,    user_sub_token=$USER

上面是配置文件的介绍, 下面,看个具体的实例:(ps:这是我今天搭的ftp服务器)

4.打开配置文件

vim /etc/vsftpd/vsftpd.conf

去掉local_enable=YES前面的#

去掉write_enable=YES前面的#

去掉local_umask=022前面的#

加上anonymous_enable=YES     

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_umask=022

anon_root=/var/ftp/pub

chroot_local_user=YES

chroot_list_enable=YES  //不能切换根目录

chroot_list_file=/etc/vsftpd/chroot_list(注意,chroot_list这个文件需要自己创建)

以上就是我对/etc/vsftpd的修改(注意,如果源文件有此变量,则修改,没有则直接添加)

5.把已有的本地用户 添加到chroot_list和user_list中.

至此,你的ftp服务器 就搭建成功了,如果想创建虚拟用户,请参照上面进行添加.


1 0
原创粉丝点击