首页 > 代码库 > vsftp部署和优化

vsftp部署和优化

服务端

## 安装  

[root@wy ~]# yum install -y vsftpd

## 启动vsftpd

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

为 vsftpd 启动 vsftpd:                                    [确定]

解释说明:

若启动失败的话,主要原因是被pure-ftpd(21端口)占了,这时候可以先用netstat -lnp查看一下,是否

被占用了,占用的了话,则killall pure-ftpd,然后再启动vsftpd。

## 查看端口

[root@wy ~]# netstat -lnp|grep vsftp

tcp        0      0 0.0.0.0:21                 0.0.0.0:*                   LISTEN      1543/vsftpd

解释说明:

默认的配置文件,它是能够让我们系统的用户去登录的。

## 比如用php-fpm,重新修改它的密码

[root@wy ~]# passwd php-fpm

更改用户 php-fpm 的密码 。

新的 密码:

无效的密码: 过于简单化/系统化

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

客户端

## 登录

[root@y2 ~]# lftp php-fpm@192.168.219.129

口令:

lftp php-fpm@192.168.219.129:~> ls

服务端

## 查看php-fpm的家目录

[root@wy ~]# grep php-fpm /etc/passwd

php-fpm:x:501:501::/home/php-fpm:/sbin/nologin

## 在php-fpm的家目录创建文件或目录

[root@wy ~]# ls /home/php-fpm/

[root@wy ~]# touch /home/php-fpm/1122.txt

[root@wy ~]# mkdir /home/php-fpm/aabb

客户端

## 查看服务端创建的文件或目录

lftp php-fpm@192.168.219.129:~> ls

-rw-r--r--    1 0        0               0 Nov 14 14:42 1122.txt

drwxr-xr-x    2 0        0            4096 Nov 14 14:43 aabb

解释说明:

这个就是默认的vsftp它这个服务,默认就可以让我们的系统用户去登录。

## 查看

lftp php-fpm@192.168.219.129:~> pwd

ftp://php-fpm@192.168.219.129/%2Fhome/php-fpm

## 查看能否进入/etc下

lftp php-fpm@192.168.219.129:/>  cd /etc

lftp php-fpm@192.168.219.129:/etc> ls

解释说明:

这样是非常危险的,它可以进入到任何目录下(除了/root)也就是说它没有限定我们的家目录;这个默认的vsftp非常地危险,所以建议不要这样去用,那怎么去用呢?我们也需要像pure-ftpd那样做一个虚拟的

用户去映射一下,这样才能够更加地安全。

服务端

## 编辑配置文件,限定家目录

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

chroot_local_user=YES

解释说明:

chroot_local_user=YES 就是限定家目录,不能访问其他的目录

也可以针对性地做一个列表(user1,user2.....),就要把chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list这两项都打开。

## 重启

[root@wy ~]# /etc/init.d/vsftpd restart

客户端

## 再来查看,能否进入其他目录

lftp php-fpm@192.168.219.129:~> exit

[root@y2 ~]# lftp php-fpm@192.168.219.129

口令:

lftp php-fpm@192.168.219.129:~> cd /etc  

cd: Access failed: 550 Failed to change directory. (/etc)

lftp php-fpm@192.168.219.129:/> cd /tmp

cd: Access failed: 550 Failed to change directory. (/tmp)

lftp php-fpm@192.168.219.129:/> pwd

ftp://php-fpm@192.168.219.129/

lftp php-fpm@192.168.219.129:/> ls

-rw-r--r--    1 0        0               0 Nov 14 14:42 1122.txt

drwxr-xr-x    2 0        0            4096 Nov 14 14:43 aabb

解释说明:

在服务端做了家目录限制,就不能进入到其他的目录了,只能在当前目录下;总之,这个vsftp使用系统的用户是不太安全的,你想想,你ftp能登,那我是不是就可以登录ssh,这个肯定不太好,所以我们使用虚拟

映射的用户是必不可少的。



如何去做虚拟的用户?(它必然也会映射一个系统的用户)

服务端

## 创建虚拟用户所对应的那个用户

[root@wy ~]# useradd virftp -s /sbin/nologin

## 创建虚拟用户存放的用户名密码文件

[root@wy ~]# vim /etc/vsftpd/vsftpd_login

test1

111222aaa

test2

aaa111ddd

## 做权限更改,只允许root可以看

[root@wy ~]# chmod 600 /etc/vsftpd/vsftpd_login

## 生成库文件(vsftpd这个服务能识别的二进制的库文件)

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

解释说明:

这两个文件的名字要一致

## 创建虚拟账号

[root@wy ~]# mkdir /etc/vsftpd/vsftpd_user_conf //虚拟用户它的配置文件所存放的那个目录

[root@wy ~]# cd !$

cd /etc/vsftpd/vsftpd_user_conf

[root@wy vsftpd_user_conf]# vim test1 //创建跟用户名同名的文件,这个文件就是它的配置文件

local_root=/home/virftp/test1     //限定家目录

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

解释说明:

这个配置文件里有什么呢,跟我们vsftpd.conf里面的内容是大同小异的。

注:这里参数一定不要打错。会报:登录失败:500 OOPS

## 创建test1的家目录

[root@wy vsftpd_user_conf]# mkdir /home/virftp/test1

## 修改权限,改成所映射的那个用户

[root@wy vsftpd_user_conf]# chown -R virftp:virftp !$

chown -R virftp:virftp /home/virftp/test1

## 查看认证模块

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

/lib64/security/pam_userdb.so

解释说明:

如果系统是64位的,则是在/lib64/目录下;若是32位的,则是在/lib/目录下

## 编辑认证相关的一个文件

[root@wy vsftpd_user_conf]# vim /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

解释说明:

/lib64/security/pam_userdb.so 认证的一个模块

## 编辑vsftpd配置文件

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

anonymous_enable=NO

local_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

##在文件末尾加上这几行:

guest_enable=YES       //要不然虚拟用户virftp它登录不了

guest_username=virftp  //指定来宾用户

virtual_use_local_privs=YES  

user_config_dir=/etc/vsftpd/vsftpd_user_conf    //指定虚拟用户所在的配置文件到底在哪里

## 重启服务

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

## 本地安装lftp测试

[root@wy vsftpd_user_conf]# yum install -y lftp

## 查看密码文件

[root@wy vsftpd_user_conf]# cat /etc/vsftpd/vsftpd_login

test1

111222aaa

test2

aaa111ddd

## 登录

[root@wy vsftpd_user_conf]# lftp test1@127.0.0.1

口令:

lftp test1@127.0.0.1:~> ls          

ls: 登录失败: 530 Login incorrect.              

lftp test1@127.0.0.1:~> pwd

ftp://test1@127.0.0.1

lftp test1@127.0.0.1:~> exit

## 在test1家目录下创建文件目录

[root@wy vsftpd_user_conf]# cd /home/virftp/test1

[root@wy test1]# touch 2.txt

[root@wy test1]# mkdir 12312

## 登录

[root@wy vsftpd_user_conf]# lftp test1@127.0.0.1

口令:

lftp test1@127.0.0.1:~> ls          

drwxr-xr-x    2 502      502          4096 Nov 14 16:22 12312

-rw-r--r--    1 502      502             0 Nov 14 16:21 2.txt

## 也可以在浏览器中登录

技术分享

## 点登录后可查看到

技术分享

解释说明:

最好的方式还是去windows下的客户端去访问


本文出自 “linux” 博客,转载请与作者联系!

vsftp部署和优化