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

vsftp部署和优化

除了pureftp之外,常见的还有系统自带的ftp工具:vsftp。本节介绍vsftp的安装使用。

服务端IP:192.168.147.139 客户端IP:192.168.147.140

服务端192.168.147.139:

安装vsftpd:

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

安装完成后就可以使用默认配置启动服务:

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

为 vsftpd 启动 vsftpd:                                    [确定]

查看进程:

[root@cp3 ~]# ps aux |grep vsftpd

root      1229  0.0  0.0   7180   660 ?        Ss   21:40   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

root      1232  0.0  0.0   5980   748 pts/0    S+   21:43   0:00 grep vsftpd

查看端口:

[root@cp3 ~]# netstat -lnp |grep vsftpd

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

默认的配置允许使用系统用户登录ftp服务器:

[root@cp3 ~]# useradd rachy

[root@cp3 ~]# passwd rachy

更改用户 rachy 的密码 。

新的 密码:

重新输入新的 密码:

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

在rachy的家目录下写点东西:

[root@cp3 ~]# cd /home/rachy

[root@cp3 rachy]# echo "11111">1.txt

[root@cp3 rachy]# mkdir test

[root@cp3 rachy]# ls

1.txt  test

客户端192.168.147.140:

安装lftp命令:

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

登陆ftp服务器:

[root@cp4 ~]# lftp rachy@192.168.147.139

口令:

lftp rachy@192.168.147.139:~> ls

-rw-r--r--    1 0        0               6 Mar 10 13:51 1.txt

drwxr-xr-x    2 0        0            4096 Mar 10 13:51 test

lftp rachy@192.168.147.139:~> ?

输入?查看ftp支持的命令

默认的配置允许客户端用户切换到任意其他非/root目录下,进行一些操作,很不安全:

lftp rachy@192.168.147.139:~> cd /

cd 成功, 当前目录=/

lftp rachy@192.168.147.139:/> ls

dr-xr-xr-x    2 0        0            4096 Feb 22 12:55 bin

dr-xr-xr-x    5 0        0            1024 Feb 22 12:57 boot

drwxr-xr-x   18 0        0            3720 Mar 10 13:38 dev

drwxr-xr-x   75 0        0            4096 Mar 10 13:45 etc

drwxr-xr-x    3 0        0            4096 Mar 10 13:45 home

dr-xr-xr-x   15 0        0           12288 Feb 22 12:55 lib

drwx------    2 0        0           16384 Feb 22 12:52 lost+found

drwxr-xr-x    2 0        0            4096 Sep 23  2011 media

drwxr-xr-x    2 0        0            4096 Sep 23  2011 mnt

drwxr-xr-x    2 0        0            4096 Sep 23  2011 opt

dr-xr-xr-x  126 0        0               0 Mar 10 13:37 proc

dr-xr-x---    3 0        0            4096 Mar 02 20:56 root

dr-xr-xr-x    2 0        0           12288 Feb 22 12:56 sbin

drwxr-xr-x    2 0        0            4096 Feb 22 12:52 selinux

drwxr-xr-x    2 0        0            4096 Sep 23  2011 srv

drwxr-xr-x   13 0        0               0 Mar 10 13:37 sys

drwxrwxrwt    3 0        0            4096 Mar 10 13:40 tmp

drwxr-xr-x   12 0        0            4096 Feb 22 12:53 usr

drwxr-xr-x   19 0        0            4096 Mar 10 13:40 var

为了不让这种情况发生,我们有两种办法限制用户的访问权限:

1.使用系统用户,打开chroot限制选项

2.建立一个虚拟用户,将真实用户映射到该虚拟用户

1.在服务端192.168.147.139上,编辑配置文件:

[root@cp3 rachy]# vim /etc/vsftpd/vsftpd.conf

打开行:chroot_local_user=YES

如果需要限制多个用户,那么需要:

(1)打开行:chroot_list_enable=YES

(2)打开行:chroot_list_file=/etc/vsftpd/chroot_list

(3)将需要限制的用户添加到/etc/vsftpd/chroot_list文件中

重启vsftpd服务:

[root@cp3 rachy]# /etc/init.d/vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

在客户端192.168.147.140上重新连接服务器:

[root@cp4 ~]# lftp rachy@192.168.147.139

口令:

lftp rachy@192.168.147.139:~> cd /

cd 成功, 当前目录=/

lftp rachy@192.168.147.139:/> cd /etc

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

lftp rachy@192.168.147.139:/> cd /tmp

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

发现只能切换到 / 目录,但是其他所有目录都不能进入。

2.在服务端192.168.147.139上,创建一个与虚拟用户对应的系统用户virftp,禁止其登录:

[root@cp3 rachy]# useradd virftp -s /sbin/nologin

创建虚拟用户的明文用户名和密码文件:

[root@cp3 rachy]# vim /etc/vsftpd/vsftpd_login

test1

111222aaa

test2

aaa111ddd

更改其权限为600:

[root@cp3 rachy]# chmod 600 /etc/vsftpd/vsftpd_login

将明文用户名密码文件转化成加密的vsftpd服务能够识别的二进制的库文件:

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

创建虚拟用户配置文件存放的目录:

[root@cp3 rachy]# mkdir /etc/vsftpd/vsftpd_user_conf

[root@cp3 rachy]# cd /etc/vsftpd/vsftpd_user_conf/

创建跟用户名同名的配置文件:

[root@cp3 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

创建test1可以访问的目录:

[root@cp3 vsftpd_user_conf]# mkdir /home/virfrp/test1

授权给映射到的系统用户virftp:

[root@cp3 vsftpd_user_conf]# chown -R virftp.virftp /home/virfrp/test1/

编辑认证相关的配置文件pam,配置认证的方式:

[root@cp3 vsftpd_user_conf]# vim /etc/pam.d/vsftpd

在最前面添加两行:

#%PAM-1.0

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

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

注意:在配置上述库文件路径时需要事先确保该文件存在,上面是32位系统的路径,64位系统的路径请改成/lib64/security/pam_userdb.so:

[root@cp3 vsftpd_user_conf]# ls /lib/security/pam_userdb.so

/lib/security/pam_userdb.so

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

编辑配置文件,修改几处内容:

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

anonymous_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

在最后面添加:

guest_enable=YES

guest_username=virftp

virtual_use_lcoal_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

重启vsftpd服务:

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

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

在test1家目录下写点东西:

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

[root@cp3 test1]# echo "11111">1.txt

[root@cp3 test1]# mkdir 2222

在本地测试:

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

[root@cp3 vsftpd_user_conf]# lftp test1@127.0.0.1

口令:

lftp test1@127.0.0.1:~> cd /etc

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

lftp test1@127.0.0.1:~> ls

-rw-r--r--    1 0        0               6 Mar 10 15:55 1.txt

drwxr-xr-x    2 0        0            4096 Mar 10 15:55 2222

在客户端测试:

[root@cp4 ~]# lftp test1@192.168.147.139

口令:

lftp test1@192.168.147.139:/> cd /etc

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

lftp test1@192.168.147.139:/> ls

-rw-r--r--    1 0        0               6 Mar 10 15:55 1.txt

drwxr-xr-x    2 0        0            4096 Mar 10 15:55 2222

在浏览器中测试:

技术分享

技术分享

也可以在Windows下使用ftp客户端访问。


vsftp部署和优化