首页 > 代码库 > 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=YES和chroot_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部署和优化