首页 > 代码库 > vsftpd安装与配置
vsftpd安装与配置
一、需求(Requirements)
用途:更新网站页面
要求:只能访问网站根目录及其子目录,且不能切换到其他目录;不暴露任何系统账户
二、安装(Install)
1. 安装vsftpd
1 | yum install vsftpd |
2. 安装db4-utils
该工具包用于生成虚拟用户列表数据库文件
1 | yum install db4-utils |
三、配置(How to do it)
1. 创建虚拟用户列表
格式:一行用户名,一行密码
1 2 3 4 5 | [root@daojoo vsftpd] # cat ftp_v_users test01 123456 test02 654321 |
2. 生成虚拟用户数据库文件
1 2 3 | [root@daojoo vsftpd] # db_load -T -t hash -f ftp_v_users ftp_v_users.db [root@daojoo vsftpd] # ls ftp_v_users* ftp_v_users ftp_v_users.db |
3. 配置pam
1 2 3 | [root@daojoo vsftpd] # cat /etc/pam.d/vsftpd_vu auth required /lib/security/pam_userdb .so db= /etc/vsftpd/ftp_v_users account required /lib/security/pam_userdb .so db= /etc/vsftpd/ftp_v_users |
4. 添加虚拟用户宿主用户
1 | useradd nginx_www -s /sbin/nologin |
5. 创建虚拟用户个性化配置目录
1 | mkdir /etc/vsftpd/vconf |
6. 修改vsftpd配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # 禁用匿名登录 anonymous_enable=NO # 允许系统账户登录 local_enable=YES # 将本地用户锁定到根目录中 chroot_local_user=YES # vsftpd使用的PAM服务名称 pam_service_name=vsftpd_vu # 是否启用userlist_file指定的文件中的用户列表 userlist_enable=YES # YES 仅允许userlist_file指定的文件中的用户列表之外的用户登录ftp # NO 仅允许userlist_file指定的文件中的用户列表中的用户登录ftp userlist_deny=YES # 改变控制连接端口 listen_port= 8060 # 启用虚拟用户 guest_enable=YES # 虚拟用户宿主用户 guest_username=nginx_www # YES 虚拟用户权限=宿主用户权限 # NO 虚拟用户权限=匿名用户权限 virtual_use_local_privs=YES # 虚拟用户个性化配置目录 user_config_dir=/etc/vsftpd/vconf # 启用被动模式 pasv_enable=YES # YES 不检查控制连接与数据连接是否来自同一ip pasv_promiscuous=no # 数据端口上限 pasv_max_port= 40010 # 数据端口下限 pasv_min_port= 40001 |
7. 虚拟用户个性化配置
1 2 3 | [root@daojoo vsftpd] # cat /etc/vsftpd/vconf/test01 # test01登录后会切换到该目录,并作为其根目录 local_root= /var/www/html |
四、原理(How it works)
1. 虚拟用户与宿主用户之间的关系
可以简单的理解为宿主用户是虚拟用户登录ftp服务器的代理
2. vsftpd软件包安装完成之后,默认的pam服务名为vsftpd,文件为/etc/pam.d/vsftpd。不能直接在该文件中添加以用于虚拟用户认证的配置项,否则你就会在/var/log/secure日志文件中看到类似下面的提示。
1 | 219 Jun 3 17:14:37 interface vsftpd: pam_unix(vsftpd:auth): check pass; user unknown |
3. 宿主用户可以不能登录系统,但一定要有home目录。我们可以通过抓包查看其连接过程来看为什么一定要有home目录。
先将宿主用户的home目录权限和所有者改成如下
1 | drwx------ 4 root root 4096 6月 4 16:25 /home/nginx_www/ |
然后通过抓包工具可以抓到类似如下的包
能过抓包可以知道连接过程如下:
-
客户端发起连接
-
服务器接受连接
-
服务器要求客户端提供用户名
-
客户端提交用户名
-
服务器要求客户端提供密码
-
客户端提交密码
-
服务器告诉客户端登录成功
-
进入宿主用户home目录
-
进入local_root指定的目录
-
客户端选择主被动模式
-
?传输数据
4. 改变控制命令连接端口号,由21改为8060,你会发现不使用默认端口/var/log/secure日志文件就会清静很多。
5. 如果开着防火墙,记得放行vsftpd服务所用到的命令端口和数据端口。
1 2 3 | iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t filter -A INPUT -p tcp -m multiport --dports 40001:40010 -m state --state NEW -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 8060 -m state --state NEW -j ACCEPT |
来自为知笔记(Wiz)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。