6.vsftp

1.配置说明
  #vim /etc/vsftpd/vsftp.con

anonymous_enable=YES    ##匿名登录,主目录为/var/ftp/pub

local_enable=YES      ##允许本地用户登录
write_enable=YES      ##允许本地用户对FTP具有写权限
local_umask=022      ##本地用户掩码为022

anon_umask=022   ##匿名用户掩码,默认066
dirmessage_enable=YES  ##是否激活目录欢迎信息功能,当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息; 此文件保存自定义的欢迎信息,由用户自己建立;默认情况下,欢迎信息是通过该目录下的.message文件获得的
xferlog_enable=YES  ##是否让系统自动维护上传和下载的日志文件; 默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的xferlog_file选项对其进行设定
connect_from_port_20=YES   ##是否设定FTP服务器将启用FTP数据端口的连接请求;ftp-data数据传输,21为连接控制端口
xferlog_std_format=YES    ##是否以标准xferlog的格式书写传输日志文件
listen=NO    ##如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
listen_ipv6=YES
pam_service_name=vsftpd  ##设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件;此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中

userlist_enable=YES  ##是否允许ftpusers文件中的用户登录FTP服务器,默认为NO;若此项设为YES,则user_list文件中的用户允许登录FTP服务器;而如果同时设置了userlist_deny=YES,则user_list文件中的用户将不允许登录FTP服务器,甚至连输入密码提示信息都没有

userlist_deny=YES/NO  #设置是否阻扯user_list文件中的用户登录FTP服务器,默认为YES
tcp_wrappers=YES  #是否使用tcp_wrappers作为主机访问控制方式。在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制;前者设置允许访问记录,后者设置拒绝访问记录。

    #如想限制192.168.57.1/192.168.57.9对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:

    vsftpd:192.168.57.1:DENY

    vsftpd:192.168.57.9:DENY

 

anon_upload_enable=YES  ##是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES

anon_mkdir_write_enable=YES    ##允许匿名用户创建目录(选项write_enable需要为YES)

anon_upload_enable=YES  ##允许匿名用户上传(选项write_enable需要为YES)
anon_other_write_enable=YES  ##允许匿名用户进行写操作(如删除和重命名文件或目录)
anon_world_readable_only=YES  ##匿名用户仅被允许下载对于它可读的文件

 

chown_uploads=YES  #设定是否允许改变上传文件的属主,与下面一个设定项配合使用;注意,不推荐使用root用户上传文件

chown_username=whoever  #设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名;可以把上传的文件都改成root属主。whoever:任何人

xferlog_file=/var/log/vsftpd.log  #设定系统维护记录FTP服务器上传和下载情况的日志文件

syslog_enable  ## 是否将原本输出到/var/log/vsftpd.log中的日志,输出到系统日志

idle_session_timeout=600    ##设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒

data_connection_timeout=120    ##设置数据连接超时时间,该语句表示数据连接超时时间为120秒

nopriv_user=ftpsecur    ##运行vsftpd需要的非特权系统用户,缺省是nobody

async_abor_enable=YES  ##是否识别异步ABOR请求,如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用;此设定并不安全,通常将其取消

ascii_upload_enable=YES

ascii_download_enable=YES    ##是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。允许ASCII方式传输数据可能会导致由"SIZE /big/file"方式引起的DoS攻击

ftpd_banner=Welcome to blah FTP service  ##登录FTP服务器时显示的欢迎信息;如有需要,可在更改目录欢迎信息的目录下创建名为.message的文件,并写入欢迎信息保存后

deny_email_enable=YES   ##黑名单设置。如果很讨厌某些email address,就可以使用此设定来取消他的登录权限;可以将某些特殊的email address抵挡住。与banned_email_file=/etc/vsftpd/banned_emails配合使用

banned_email_file=/etc/vsftpd/banned_emails  ##当上面的deny_email_enable=YES时,可以利用这个设定项来规定哪些邮件地址不可登录vsftpd服务器,此文件需自己创建,一行一个email address即可

chroot_list_enable=YES  ##用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限,锁定在自己的home目录中。vsftpd将在下面chroot_list_file选项值的位置寻找chroot_list文件必须与下面的设置项配合。

chroot_list_file=/etc/vsftpd/chroot_list  ##被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录,此文件需自己建立。

ls_recurse_enable=YES  ##是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O

 

chroot_local_user=YES   # #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)

anon_root=/home/data  ##匿名用户的根目录,默认/var/ftp/pub 

local_root=/data/  ##本地用户登录后的根目录,也就是非匿名


pasv_enable=YES  ##
pasv_min_port=12000  ##
pasv_max_port=18000  ##
reverse_lookup_enable=NO  ##

 

 

 

匿名用户上传的权限为umask为066

 

 

2.默认配置功能:

允许匿名用户和本地用户登录。
匿名用户的登录名为ftp或anonymous。
本地用户(vsftpd服务器)的登录名为本地用户名,口令为本地用户的口令。
本地用户可以离开其home目录,切换到有权访问的其他目录,并且在权限允许的情况下进行上传和下载。
写在文件/etc/vsftpd/ftpusers中的本地用户禁止登录。

 

3.FTP用户

  3.1.本地用户
    用户在FTP服务器上拥有账号,且该账号为为本地用户的账号
    可以通过输入自己的账号和口令进行授权登录
    登录目录为自己的home目录($HOME)
  3.2.虚拟用户
    用户在FTP服务器上拥有账号,但该账号只能用于文件传输服务

    可以为每个用户定制单独的配置文件,进行权限设置
    登录目录为某一指定的目录
    通常可以上传和下载
  3.3.匿名用户
    用户在FTP服务器上没有账号
    登录目录为/var/ftp

 

例1:匿名访问,可上传,可下载

   

#vim /etc/vsftpd/vsftp.conf
    anon_upload_enable=YES
  anon_umask=022   ##不开启上传的文件权限为600,这样不能下载 #
chown ftp:ftp /var/ftp/pub

 

 

  添加可删除功能

anon_other_write_enable=YES

 

 

 

   

例2:匿名访问,仅可下载

   默认配置

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

 

例3:一个目录,指定用户ben_a可上传,可下载,可删除;ben_up可上传,不可下载;ben_down可下载,不可上传;

 

例4:允许用户自由切换目录

  chroot_list_enable与chroot_local_user组合效果

  chroot_local_user=YES chroot_local_user=NO
chroot_list_enable=YES

1.所有用户都被限制在其主目录下

2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制

1.所有用户都不被限制其主目录下

2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制

chroot_list_enable=NO

1.所有用户都被限制在其主目录下

2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户

1.所有用户都不被限制其主目录下

2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户

  假设有ftp1, ftp2两个ftp用户, 计划让ftp1用户锁定在主目录下,不允许切换到其他目录, 但是允许ftp2用户自由切换目录,则可以分如下两种方式实现:

  方式一:

令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp2
 
解释:chroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。
 
方式二:

令:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp1

解释:chroot_local_user=NO则所有用户不被限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=NO,即全体用户都“不被限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“会被限制在主目录下”的用户。

 

其他情况:

 

对于chroot_local_user和chroot_list_enable的组合还有这样两种情况:


chroot_local_user=YES
chroot_list_enable=NO

chroot_local_user=NO
chroot_list_enable=NO

当chroot_list_enable=NO时,就不再启用chroot_list_file,此时就是单纯的把全部用户限定或不限定在主目录下了!
 

补充:

  • 关于chroot_local_user的设置,通常我们倾向于:全局禁止跳出主目录,使用chroot_list添加例外!即:使用Case 1的设置!
    • 匿名用户默认的root是/var/ftp

 

例6:配置基于本地用户的访问控制

使选项userlist_file对应的文件(默认值为/etc/vsftpd/user_list)中指定的本地用户不能访问,而其他用户可以访问
userlist_enable=YES
userlist_deny=YES
使选项userlist_file对应的文件(默认值为/etc/vsftpd/user_list)中指定的本地用户可以访问,而其他用户不可以访问
userlist_enable=YES
userlist_deny=NO

Local_enable =yes
Wirte_enable =yes
Anon_mkdir_write _enable=yes  ##说明:创建目录的同时可以在此目录中上传文件.此权限只有在write_enable=yes时 才有效,默认值为yes

# useradd –d /home/test test1
# chmod 700 /home/test
# passwd test1

 

例7:ftps

 

例8:虚拟用户

1.修改vsftp.conf文件#关闭匿anonymous_enable=NO#限制ftp用户在其家目录

chroot_local_user=YES
#允许出根目录的白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
pasv_enable=YES
#使用被动模式4000至5000端口
pasv_min_port=4000
pasv_max_port=5000
local_enable=YES
write_enable=YES
local_umask=022
#使用本地时间
use_localtime=YES
dirmessage_enable=YES
#日志文件配置,并开启xferlog与vsftp.log双日志,xferlog记录上传与下载信息,vsftpd.log记录登录、上传、下载、删除等详细信息
dual_log_enable=YES
xferlog_enable=YES
log_ftp_protocol=YES
xferlog_std_format=YES
reverse_lookup_enable=NO
pasv_address=192.168.0.60
#connect_from_port_20=YES
ftp_data_port=20
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
userlist_enable=YES
tcp_wrappers=YES

#虚拟用户配置-----------
#开启pam模块登录认证
pam_service_name=vsftpd.vu
guest_enable=YES
#映射虚拟用户至系统用户(指定系统用户)
guest_username=virtual
#虚拟用户配置目录 user_config_dir
=/etc/vsftpd/user_conf #禁锢虚拟用户的主目录,同时禁止访问除主目录之外的目录 #virtual_use_local_privs=YES

 

2.创建虚拟用户密码文件

#vim /etc/vsftpd/vsftpd_logins.tx

#db_load -T -t hash -f /etc/vsftpd/vsftpd_logins.txt /etc/vsftpd/vsftpd_login.db

#chmod 700 /etc/vsftpd/vsftpd_login.db

 

3.配置pam认证文件

#vim /etc/pam.d/vsftpd.vu

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

4.创建vsftp系统用户

useradd -s /sbin/nologin virtual

5.创建用户配置文件主目录

mkdir  /etc/vsftpd/user_conf

6.分别为用户创建配置文件

文件名要与账号名一致

#vim /etc/vsftpd/user_conf/master9042

local_root=/SLT_IDC/in/JEFP0
anon_world_readable_only=NO  ##不允许匿名用户下载
write_enable=YES
anon_mkdir_write_enable=YES  #允许匿名创建目录,此项在write_enable必须为YES才生效
anon_upload_enable=YES  ##允许匿名用户上传 ,此项在write_enable必须为YES才生效。
anon_other_write_enable=YES  ##允许匿名用户其他权限:删除、重命名

vim /etc/vsftpd/user_conf/smart0103

local_root=/SLT_IDC/out/SLT_CAT
anon_world_readable_only=NO  ##不允许匿名用户下载
write_enable=YES
anon_mkdir_write_enable=YES  #允许匿名创建目录,此项在write_enable必须为YES才生效
anon_upload_enable=YES  ##允许匿名用户上传 ,此项在write_enable必须为YES才生效。
anon_other_write_enable=YES  ##允许匿名用户其他权限:删除、重命名

例9:多人要访问公用目录设置

创建虚拟用户的公用目录、真正的存文件的公共目录

mkdir /SLT_IDC/in/JEFP0/public
mkdir /SLT_IDC/out/SLT_CAT/public

创建公用目录

mkdir /data/public
chown -R virtual /data/public

挂载公用目录到个公目录下

mount -B -o rw /data/public /SLT_IDC/out/SLT_CAT/public
mount -B -o rw /data/public /SLT_IDC/in/JEFP0/public

mount -B 保存在内存中,重启服务器失效。

可以放在/etc/rc.local中,放在fstab中对于ro的权限设置可能失效(仍有rw权限)

10.主被动模式及端口设置

主动模式:

pasv_enable=NO (passive模式关闭)
pasv_min_port=3000
pasv_max_port=4000
port_enable=YES (active模式开启)

被动模式:

pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000

端口修改

vim /etc/vsftpd/vsftpd.conf

20端口改为16020
ftp_data_port=16020

改21端口为421
listen_port=64421

 

posted @ 2020-09-14 09:57  天涯160  阅读(11)  评论(0)    收藏  举报