首页 > 代码库 > Linux vsftp 部署&优化

Linux vsftp 部署&优化

[root@LNMP ~]# yum install -y vsftpd  #安装 centos自带的vsftp 服务


启动 vsftpd 服务,如果服务启动失败,检查日志。可以看到是 端口被 pure-ftpd占用。

关掉pure_ftpd 服务,再启动,就可以了。

[root@LNMP ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]


以user3 为范例:

 

[root@LNMP ~]# passwd user3   #更改User3密码

Changing password for user user3.

New password: 

BAD PASSWORD: it is based on a dictionary word

Retype new password: 

passwd: all authentication tokens updated successfully.

-------------------------------------------------------

没有lftp 命令先安装

[root@LNMP ~]# yum install -y lftp


[root@LNMP ~]# lftp user3@10.72.4.50

Password: 

lftp user3@10.72.4.50:~> ls        #里面什么都没有

lftp user3@10.72.4.50:~>         


[root@LNMP ~]# grep user3 /etc/passwd   #查找user3的家目录

user3:x:502:502::/home/user3:/bin/bash

[root@LNMP ~]# ls /home/user3/  #目录是空的


[root@LNMP ~]#  touch /home/user3/1207.txt

[root@LNMP ~]# mkdir /home/user3/1207

[root@LNMP ~]# ls /home/user3/

1207  1207.txt


黙认的用户在客户端访问。

 [root@Bird ~]# lftp user3@10.72.4.50
Password:
lftp user3@10.72.4.50:~> ls
drwxr-xr-x    2 0        0            4096 Dec 07 02:47 1207
-rw-r--r--    1 0        0               0 Dec 07 02:45 1207.txt
lftp user3@10.72.4.50:~>


此时的user3可以进入任何一个目录下(root除外)。黙认的vsftp 这样用是很危险的。

下面来配置一款安全的用法:

可以像 pure-ftpd  那用建一个虚拟用户来映射。这样更加安全。

也可以通过编辑配置文件来做一些限制。

[root@LNMP ~]# vim /etc/vsftpd/vsftpd.conf

#chroot_local_user=YES  #打开这这个限限


[root@LNMP ~]# /etc/init.d/vsftpd restart  #重启vsftpd 服务

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]


在客户端进行操作

 lftp user3@10.72.4.50:~> cd /etc
cd: Access failed: 550 Failed to change directory. (/etc)  #/etc/文件夹进不去


[root@LNMP ~]# useradd virftp -s /sbin/nologin   #创建用户

[root@LNMP ~]# vim /etc/vsftpd/vsftpd_login      #存放用户&密码

[root@LNMP ~]# chmod 600 /etc/vsftpd/vsftpd_login #更改文件权限,只限root可以看

[root@LNMP ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db


 #为vsftpd 生成可识别的二进制的库文件,保存路径 /etc/vsftpd/vsftpd_login.db

[root@LNMP ~]# mkdir /etc/vsftpd/vsftpd_user_conf  #创建虚拟用户配置文件存放目录


技术分享

[root@LNMP vsftpd_user_conf]# vim linux1  #加入以下内容

local_root=/home/virftp/linux1

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=50000


[root@LNMP vsftpd_user_conf]# mkdir /home/virftp/linux1  #创建用户家目录

[root@LNMP vsftpd_user_conf]# chown  -R virftp:virftp /home/virftp/linux1

                                  #修改成映射用户的权限


编辑认证相关的配置文件


[root@LNMP vsftpd_user_conf]# vim /etc/pam.d/vsftpd  #在最开头两行加下以下两行

 #指定使用哪种方式来认证,不然系统会使用黙认的用户&密码。

   我们用的是虚拟用户,会对应一个密码库文件


auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

 #/lib/security/pam_userdb.so  认证模块

 #db=/etc/vsftpd/vsftpd_login  db的路径

---------------------------------------

确定文件存在不存在

[root@LNMP vsftpd_user_conf]# cat /etc/pam.d/vsftpd 

#%PAM-1.0

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

session    optional     pam_keyinit.so    force revoke

auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required pam_shells.so

auth       include password-auth

account    include password-auth

session    required     pam_loginuid.so

session    include password-auth

----------------------------------------

[root@LNMP vsftpd_user_conf]# ls /lib64/security/pam_userdb.so 

/lib64/security/pam_userdb.so


#此处需要注意:如果系统是64位的pam_userdb.so 是在这个目录 /lib64/security/pam_userdb.so

               如果系统是32位的pam_userdb.so 是在这个目录 /lib/security/pam_userdb.so


[root@LNMP vsftpd_user_conf]# uname -a  #查看系统位数

Linux LNMP 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux



[root@LNMP vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES  #打开



anonymous_enable=YES    改为  anonymous_enable=NO

#anon_upload_enable=YES 改为  anon_upload_enable=NO

#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

再增加:(在末端)

guest_enable=YES  #guest #用户可可以登录,不然创建的虚拟用户不能登录

guest_username=virftp    #指定虚拟用户名

virtual_use_local_privs=YES  

user_config_dir=/etc/vsftpd/vsftpd_user_conf #指定(告知)虚拟用户的文件路径


重新启动 vsftpd


[root@LNMP vsftpd_user_conf]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]



在客户端测试出现如下图状况,不能访问

将local_enable=YES       #改为YES即可。

技术分享

技术分享

在本地家目下创建文本&目录

[root@LNMP vsftpd_user_conf]# cd /home/virftp/linux1/

[root@LNMP linux1]# ls

[root@LNMP linux1]# touch 1207

[root@LNMP linux1]# touch 1207.txt

[root@LNMP linux1]# ls

1207  1207.txt


在客户端可以正常查看

 [root@Bird ~]# lftp linux1@10.72.4.50
Password:
lftp linux1@10.72.4.50:~> ls
-rw-r--r--    1 0        0               0 Dec 07 05:21 1207
-rw-r--r--    1 0        0               0 Dec 07 05:21 1207.txt


也可以通过客户端IE 来查看

技术分享

技术分享


本文出自 “CBO#Boy_Linux之路” 博客,请务必保留此出处http://20151213start.blog.51cto.com/9472657/1880312

Linux vsftp 部署&优化