天天看点

生产环境搭建ftp并配置虚拟用户

生产环境搭建ftp并配置虚拟用户

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

在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。

虚拟用户并非系统上的用户,但它必须映射到系统上的某个用户,虚用户的家目录属主和属组就这系统上的这个用户。并且每个虚用户有自己的用户名和密码,每个虚用户也可以单独设定对家目录的访问权限。使用文件的方式创建并依此建立一个数据库文件,PAM可以读取这个数据库文件完成用户认证目的。

安装配置步骤

1、安装相关包(vsftpd,lftp,db4-utils)

ftp服务端:vsftpd

ftp客户端:lftp

由文本文件生成数据库文件:db4-utils

2、创建虚拟用户口令文件并依此生成数据文件

3、在PAM认证中添加ftp

4、添加虚拟用户的权限配置文件

5、创建虚拟用户对应本地用户,并授权访问虚拟用户的家目录

6、根据以上内容修改vsftpd.conf总配置文件

7、启动服务

8、验证服务是否可用

<code>yum </code><code>install</code> <code>vsftpd lftp db4-utils</code>

(系统环境centos6.6)

<code>cd</code> <code>/etc/vsftpd/</code>

<code>vi</code> <code>vuserpass.txt</code>

<code>jdsfeftp</code>

<code>hH+GRu22pCa14eXoifEpqA==</code>

说明1:第一行是用户名,第二行是密码,可以添加多个用户和密码

说明2:/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/logins.txt 是示例文档

说明3:rpm -ql vsftpd可以查看其他版本生成的示例文档的位置

说明4:openssl rand -base64 16 可生成随机密钥

<code>db_load -T -t </code><code>hash</code> <code>-f </code><code>/etc/vsftpd/vuserpass</code><code>.txt </code><code>/etc/vsftpd/vftpuser</code><code>.db</code>

<code>chmod</code> <code>600 vftpuser.db</code>

说明:vftpuser.db就是PAM认证时读取的数据库文件

<code>vim </code><code>/etc/pam</code><code>.d</code><code>/vsftpd</code>

<code>auth required </code><code>/lib64/security/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vftpuser</code>

<code>account required </code><code>/lib64/security/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vftpuser</code>

说明1:/lib64/security/pam_userdb.so检查是否存在该文件,此处是64位系统,所以是/lib64/,32位系统在/lib/下。

说明2:db=/etc/vsftpd/vftpuser无需".db"后缀名

说明3:/etc/pam.d/vsftpd有示例文件在/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam

<code>mkdir</code> <code>-p </code><code>/etc/vsftpd/vsftpd_user_conf</code>

<code>cd</code> <code>/etc/vsftpd/vsftpd_user_conf</code>

以虚拟用户名创建同名文件

<code>vi</code> <code>jdsfeftp</code>

<code>local_root=</code><code>/home/apps/ftpsite/public</code>

<code>#虚拟用户的家目录</code>

<code>write_enable=YES</code>

<code>anon_world_readable_only=NO</code>

<code>anon_upload_enable=YES</code>

<code>anon_mkdir_write_enable=YES</code>

<code>anon_other_write_enable=YES</code>

5、创建虚拟用户对应本地用户,并授权该本地用户访问虚拟用户的家目录

<code>useradd</code> <code>-s </code><code>/sbin/nologin</code> <code>virtual</code>

<code>mkdir</code> <code>-p </code><code>/home/apps/ftpsite/public</code>

<code>chown</code> <code>-R virtual:virtual  </code><code>/home/apps/ftpsite/</code>

<code>vi</code> <code>/etc/vsftpd/vsftpd</code><code>.conf</code>

<code>guest_enable=YES</code>

<code>#开启虚拟用户的功能</code>

<code>guest_username=virtual</code>

<code>#虚拟用户对应的本地用户名</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vsftpd_user_conf</code>

<code>#虚拟用户的权限配置目录</code>

<code>local_enable=YES</code>

<code>#必须允许本地用户访问</code>

<code>pam_service_name=vsftpd</code>

<code>#pam目录下的文件名pasv_enable=YES</code>

<code>pasv_min_port=30000</code>

<code>pasv_max_port=30999</code>

<code>pasv_address=192.168.1.137</code>

<code>#注意修改被动IP,使用ifconfig查看</code>

<code>pasv_addr_resolve=</code><code>yes</code>

<code>listen=YES</code>

<code>anonymous_enable=YES</code>

<code>local_umask=022</code>

<code>dirmessage_enable=YES</code>

<code>xferlog_enable=YES</code>

<code>connect_from_port_20=YES</code>

<code>xferlog_std_format=YES</code>

<code>userlist_enable=YES</code>

<code>tcp_wrappers=YES</code>

<code>/etc/init</code><code>.d</code><code>/vsftpd</code>  <code>start</code>

<code>#需要开启防火墙的话</code>

<code>#iptables -t filter -A INPUT -m state –state NEW -p tcp -m tcp –dport 30000:30999 –syn -j ACCEPT</code>

8、验证服务

lftp ftp://IP -u jdsfeftp

输入密码:

ls

!ls /tmp

put /tmp/testfile

mkdir testdir

登录服务器查看文件

ls /home/apps/ftpsite/public

本文转自 zhuhc1988 51CTO博客,原文链接:http://blog.51cto.com/changeflyhigh/1918081,如需转载请自行联系原作者