用途:更新网站页面
要求:只能访问网站根目录及其子目录,且不能切换到其他目录;不暴露任何系统账户
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_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 |
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 |
原文地址:http://www.cnblogs.com/daojoo/p/3768504.html