vsftpd安装及虚拟主机配置
2018-12-21 本文已影响11人
肖金光xjg
[TOC]
vsftp配置
安装vsftp
yum -y install vsftpd db4-utils db4
chkconfig vsftpd on
建虚拟主机数据库
建虚拟用户密码文件
[root@cenos6 vsftpd]# cat /etc/vsftpd/vsftpuser.txt
bobyuan
123456
test
123456
vsftpuser.txt单行是用户名,双行是用户密码
创建数据库
db_load -T -t hash -f vsftpuser.txt vsftpuser.db
chmod 600 vsftpuser.*
创建PAM文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.def
cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
#session required pam_loginuid.so
/etc/pam.d/vsftpd默认配置备份后清空
配置vsftp
配置vsftp服务
- 添加vsftpd服务器的用户:useradd jintest -M -d /jin/test -s /sbin/nologin
- 新建 /etc/vsftpd/chroot_list
- 把ftp登陆账号名写入/etc/vsftpd/user_list文件,自建的用户(虚拟用户也要)一定要手动添加(userlist_deny=NO),否则无法登陆
- 新建/etc/vsftpd/conf目录,在conf目录中添加各个虚拟账号的专属配置
配置vsftpd.conf
anonymous_enable=no
#no_anon_password=YES
#anon_root=/var/ftp
local_enable=yes
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/ftp.log
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
guest_enable=YES
guest_username=jintest
user_config_dir=/etc/vsftpd/conf
user_sub_token=$USER
local_root=/jin/test/$USER
hide_ids=YES
pasv_promiscuous=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40110
max_clients=200
max_per_ip=10
#listen_address=
#setproctitle_enable=
data_connection_timeout=120
idle_session_timeout=600
ftpd_banner=Welcome to jin FTP Service.
allow_writeable_chroot=YES
注意:
- 使用哪个用户运行vsfpt,指定guest_username配置
- 从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
** allow_writeable_chroot=YES **
各个用户独立配置
mkdir /etc/vsftpd/conf
[root@cenos6 vsftpd]# cd conf/
[root@cenos6 conf]# ll
总用量 24
-rw-r--r-- 1 root root 419 1月 12 11:50 bobyuan
-rw-r--r-- 1 root root 185 1月 12 16:31 ftp
用户独立权限范例
virtual_use_local_privs 禁锢虚拟用户的根目录
所有权限(不锁定主目录)
virtual_use_local_privs=yes
write_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no
上传下载删除权限
virtual_use_local_privs=no
write_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no
虚拟用户能浏览目录,只能上传文件
virtual_use_local_privs=no
write_enable=yes
download_enable=no
anon_upload_enable=yes
anon_mkdir_write_enable=no
anon_other_write_enable=no
anon_world_readable_only=yes
只能下载
virtual_use_local_privs=no
write_enable=no
download_enable=yes
anon_upload_enable=no
anon_mkdir_write_enable=no
anon_other_write_enable=no
anon_world_readable_only=no
4.iptables配置(被动模式pasv_enable=YES):
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p tcp -m state --state NEW -m multiport --dport 61000:61110 -j ACCEPT
5.错误处理:
vsftpd:500 OOPS
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误
这个问题发生在最新的这是由于下面的更新造成的:
- Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such is life.`
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
- Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such is life.`
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES
当把所有虚拟用户的主目录放在一起时,
不要加配置
user_sub_token=
否则也会导致500错误