美文网首页
vsftpd安装及虚拟主机配置

vsftpd安装及虚拟主机配置

作者: 肖金光xjg | 来源:发表于2018-12-21 11:30 被阅读11次

[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服务

  1. 添加vsftpd服务器的用户:useradd jintest -M -d /jin/test -s /sbin/nologin
  2. 新建 /etc/vsftpd/chroot_list
  3. 把ftp登陆账号名写入/etc/vsftpd/user_list文件,自建的用户(虚拟用户也要)一定要手动添加(userlist_deny=NO),否则无法登陆
  4. 新建/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增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES

当把所有虚拟用户的主目录放在一起时,
不要加配置
user_sub_token=
否则也会导致500错误

相关文章

网友评论

      本文标题:vsftpd安装及虚拟主机配置

      本文链接:https://www.haomeiwen.com/subject/uhlmkqtx.html