文章目录
vsftp虚拟用户模式
虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性
VSFTP安装与配置
1 依赖包安装
使用yum命令来安装vsftpd和DB软件包:
yum -y install vsftpd db4-utils
2 建立口令库文件
建立虚拟用户口令库文件,使用文本编辑器创建一个文本文件,第一行写:用户名;第二行写:密码,依此类推:
mkdir -p /etc/vsftpd/v-login
#vi login.txt
user1
passwd1
user2
passwd2
使用db_load命令生成vsftpd的认证文件,将用户信息文件转换为数据库并使用hash加密:
db_load -T -t hash -f login.txt /etc/vsftpd/v-login/vsftpd_login.db
赋权:
chmod 600 /etc/vsftpd/v-login/vsftpd_login.db
3 建立PAM配置文件
建立虚拟用户所需的PAM配置文件,目的是对虚拟用户的安全和账户权限进行验证。
• auth是对用户密码进行验证。
• accout是对用户的权限进行验证。
vi /etc/pam.d/vsftpd.vu
加入下面内容:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/v-login/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/v-login/vsftpd_login
4 对虚账号分别设置权限
mkdir -p /etc/vsftpd/v-conf
上传、下载、创建、删除权限:
[root@ZJJH-BSJK-COL01 v-conf]# more user1
local_root=/home/bsjk/ftpbsjk/southern/gxpt
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
仅下载权限:
local_root=/home/bsjk/ftpbsjk/southern/gxpt
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=NO
anon_upload_enable=NO
anon_other_write_enable=NO
5 设置vsftpd.conf主配置文件
修改vsftpd.conf,重启vsftp服务,并测试虚账户登录情况:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
ftpd_banner=Authorized users only. All activity may be monitored and reported.
chroot_local_user=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
#vsftp log
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
use_localtime=YES
allow_writeable_chroot=YES
#Virtual user
guest_enable=YES
guest_username=bsjk
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/v-conf
5.1 vsftp配置说明
5.2 常见的日志解决方案
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
该方案将xferlog_enable设置为YES,表明FTP服务器记录上传下载的情况,而将xferlog_std_format也设置为YES,则表明将记录的上传下载情况写在xferlog_file所指定的文件中,即/var/log/xferlog文件。
同时,该方案启用dual_log_enable,表明启用了双份日志。在用xferlog文件记录服务器上传下载情况的同时,vsftpd_log_file所指定的文件,即/var/log/vsftpd.log,也将用来记录服务器的传输情况。
5.3 常用配置说明
1. 启用本地时间
use_localtime=YES
2. 控制用户是否允许切换到上级目录
chroot_local_user=YES
限制用户不能访问父级目录
allow_writeable_chroot=YES
你的用户根目录是可写的,但在新版中,当使用chroot限制功能时是不被允许的,增加下述命令解决登录失败问题
3. 超时时间设置
accept_timeout=60
设置建立FTP连接的超时时间,单位为秒。默认值为60。
connect_timeout=60
PORT 方式下建立数据连接的超时时间,单位为秒。默认值为60。
data_connection_timeout=120
设置建立FTP数据连接的超时时间,单位为秒。默认值为120。
idle_session_timeout=300
设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒。默认值为300 。
4. 与连接相关的设置
listen=YES
设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好 的方式,此时listen必须设置为YES,此为默认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则 vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制。
max_clients=0
设置vsftpd允许的最大连接数,默认值为0,表示不受限制。若设置为100时,则同时允许有100个连接,超出的将被拒绝。只有在standalone模式运行才有效。
max_per_ip=0
设置每个IP允许与FTP服务器同时建立连接的数目。默认值为0,表示不受限制。只有在standalone模式运行才有效。
listen_address=IP地址
设置FTP服务器在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器绑定的所有IP地址进行侦听。只有在standalone模式运行才有效。
setproctitle_enable=NO
设置每个与FTP服务器的连接,是否以不同的进程表现出来。默认值为NO,此时使用ps aux |grep ftp只会有一个vsftpd的进程。若设置为YES,则每个连接都会有一个vsftpd的进程。