用途:更新网站页面
要求:只能访问网站根目录及其子目录,且不能切换到其他目录;不暴露任何系统账户
1. 安装vsftpd
|
1 |
yum install
vsftpd |
2. 安装db4-utils
该工具包用于生成虚拟用户列表数据库文件
|
1 |
yum install
db4-utils |
1. 创建虚拟用户列表
格式:一行用户名,一行密码
|
1
2
3
4
5 |
[root@daojoo vsftpd]# cat ftp_v_userstest01123456test02654321 |
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_vuauth required /lib/security/pam_userdb.so db=/etc/vsftpd/ftp_v_usersaccount 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指定的文件中的用户列表中的用户登录ftpuserlist_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 不检查控制连接与数据连接是否来自同一ippasv_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 |
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 ACCEPTiptables -t filter -A INPUT -p tcp -m multiport --dports 40001:40010 -m state --state NEW -j ACCEPTiptables -t filter -A INPUT -p tcp --dport 8060 -m state --state NEW -j ACCEPT |
原文地址:http://www.cnblogs.com/daojoo/p/3768504.html