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

浙公网安备 33010602011771号