Linux vsftp 部署&优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux vsftp 部署&优化相关的知识,希望对你有一定的参考价值。

[[email protected] ~]# yum install -y vsftpd  #安装 centos自带的vsftp 服务


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

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

[[email protected] ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]


以user3 为范例:

 

[[email protected] ~]# 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 命令先安装

[[email protected] ~]# yum install -y lftp


[[email protected] ~]# lftp [email protected]

Password: 

lftp [email protected]:~> ls        #里面什么都没有

lftp [email protected]:~>         


[[email protected] ~]# grep user3 /etc/passwd   #查找user3的家目录

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

[[email protected] ~]# ls /home/user3/  #目录是空的


[[email protected] ~]#  touch /home/user3/1207.txt

[[email protected] ~]# mkdir /home/user3/1207

[[email protected] ~]# ls /home/user3/

1207  1207.txt


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

 [[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> 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 [email protected]:~>


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

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

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

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

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

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


[[email protected] ~]# /etc/init.d/vsftpd restart  #重启vsftpd 服务

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]


在客户端进行操作

 lftp [email protected]:~> cd /etc
cd: Access failed: 550 Failed to change directory. (/etc)  #/etc/文件夹进不去


[[email protected] ~]# useradd virftp -s /sbin/nologin   #创建用户

[[email protected] ~]# vim /etc/vsftpd/vsftpd_login      #存放用户&密码

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

[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db


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

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


技术分享

[[email protected] 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


[[email protected] vsftpd_user_conf]# mkdir /home/virftp/linux1  #创建用户家目录

[[email protected] vsftpd_user_conf]# chown  -R virftp:virftp /home/virftp/linux1

                                  #修改成映射用户的权限


编辑认证相关的配置文件


[[email protected] 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的路径

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

确定文件存在不存在

[[email protected] 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

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

[[email protected] 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


[[email protected] 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



[[email protected] 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


[[email protected] vsftpd_user_conf]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]



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

将local_enable=YES       #改为YES即可。

技术分享

技术分享

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

[[email protected] vsftpd_user_conf]# cd /home/virftp/linux1/

[[email protected] linux1]# ls

[[email protected] linux1]# touch 1207

[[email protected] linux1]# touch 1207.txt

[[email protected] linux1]# ls

1207  1207.txt


在客户端可以正常查看

 [[email protected]Bird ~]# lftp [email protected]
Password:
lftp [email protected]:~> 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 部署&优化的主要内容,如果未能解决你的问题,请参考以下文章

vsftp部署和优化

vsftp部署和优化

vsftp部署和优化

vsftp部署和优化(CentOS自带的ftp软件)

vsftp部署和优化(CentOS自带的ftp软件)

Linux 部署vsftp服务及详解