vsftpd 经常使用功能参数配置及参数详解
Table of Contents
1 配置超级服务
vi /etc/xinetd.d/vsftpd service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf # 上面这个 server 的设定请依照您的主机环境来设定! # 至于 server_args 则请写入您的 vsftpd 的配置文件完整名称便可! per_source = 5 <==与同一 IP 的联机数目有关 instances = 200 <==同一时间最多的联机数目 no_access = 192.168.1.3 banner_fail = /etc/vsftpd/vsftpd.busy_banner # 上面这个文件就是当主机忙碌中,则在 Client 端显示的内容! log_on_success += PID HOST DURATION log_on_failure += HOST } [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf listen=NO
2 配置匿名用户
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES
参数 | 说明 |
---|---|
anonymous_enable=YES | 是否容许匿名登陆 yes=容许 no= 不容许 |
ftp_username=ftp | 设置ftp匿名登陆时的用户名,默认 ftp |
no_anon_password=YES | 匿名用户登陆不须要输入密码 默认 YES |
deny_email_enable=YES | 以banned_email_file里面的电子邮件为密码的匿名用户不能登陆 |
anon_root | 匿名用户登陆后的默认目录,不设置,默认为/var/ftp |
anon_upload_enable=YES | 容许匿名登陆用户上传文件 默认NO |
anon_mkdir_write_enable=YES | 容许匿名登陆用户建立目录 默认NO |
anon_other_write_enable=NO | 容许匿名用户有较高的写权限包括 删除目录和重命名等 默认NO |
anon_world_readable_only=YES | 容许匿名用户下载可读文件 默认YES , 设置为yes时只能下载不能直接在Ftp中阅读。 |
chown_uploads=YES | 设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。 |
3 配置本地用户登陆
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf #下面是容许某些用户登入的项目 存在user_list文件中的用户不容许登入 userlist_enable=YES userlist_deny=YES #若是这里改成NO 反过来只能存在user_list文件中的用户容许登入 userlist_file=/etc/vsftpd/user_list anonymous_enable=NO #下面是限制用户只能访问本身的主目录 存在chroot_list文件中的用户只能访问本身的主目录 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
4 配置虚拟用户登陆
#建立虚拟用户的专用目录 [root@localhost ~]# mkdir /home/vsftpd/admin [root@localhost ~]# vi /etc/vsftpd/loginuser.txt #加入两个用户 奇数行表明用户名 偶数行表明密码 admin admin123 #执行命令 生成虚拟数据库 [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/login.db #设置数据库文件的访问权限 [root@localhost ~]# chmod 600 /etc/vsftpd/login.db [root@localhost ~]# vi /etc/pam.d/vsftpd #将如下内容增长的原文件前面两行: auth required pam_userdb.so db=/etc/vsftpd/login account required pam_userdb.so db=/etc/vsftpd/login auth sufficient pam_userdb.so db=/etc/vsftpd/login account sufficient pam_userdb.so db=/etc/vsftpd/login #咱们创建的虚拟用户将采用PAM进行验证,这是经过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd 来启用的。 #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed #auth required pam_stack.so service=system-auth #auth required pam_shells.so #account required pam_stack.so service=system-auth #session required pam_stack.so service=system-auth 能够看出前面两行是对虚拟用户的验证,后面是对系统用户的验证。 为了安全我通常把系统用户的登入关闭 使用虚拟帐号登入ftp 对虚拟用户的验证使用了sufficient这个控制标志。 这个标志的含义是若是这个模块验证经过,就没必要使用后面的层叠模块进行验证了;但若是失败了, 就继续后面的认证,也就是使用系统真实用户的验证。 虚拟用户建立本地系统用户 #新建一个系统用户vsftpd, 用户登陆终端设为/bin/false(即便之不能登陆系统) [root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /bin/false [root@localhost ~]# chown vsftpd:vsftpd /home/vsftpd #改变目录所属用户组 根据须要建立/etc/vsftpd/vsftpd.conf,如下设置: listen=YES #监听为专用模式 anonymous_enable=NO #禁用匿名登入 dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log #记录ftp操做日志 xferlog_std_format=YES chroot_local_user=YES #对用户访问只限制在主目录 不能访问其余目录 guest_enable=YES #启用guest guest_username=vsftpd #使用虚拟帐号形式 user_config_dir=/etc/vsftpd/user_conf #虚拟帐号配置目录 pam_service_name=vsftpd #对vsftpd的用户使用pam认证 local_enable=YES #执行如下命令 [root@localhost ~]# mkdir /etc/vsftpd/user_conf [root@localhost ~]# cd /etc/vsftpd/user_conf [root@localhost ~]# vi /etc/vsftpd/user_conf/admin #加入如下内容 拥有全部权限 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/vsftpd/admin #若是不能读写操做 多是目录权限不够须要设置权限 试试看 [root@localhost ~]# chmod 777 /home/vsftpd/admin
5 使用SSL登入
[root@localhost ~]# cd /etc/pki/tls/certs/ [root@localhost ~]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem [root@localhost ~]#vi /usr/local/etc/vsftpd.conf ssl_enable=YES(开启vsftpd对ssl协议的支持) ssl_sslv2=YES(支持SSL v2 protocol) ssl_sslv3=YES(支持SSL v3 protocol) ssl_tlsv1=YES(支持TSL v1) rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem(证书的路径) ssl_enable=YES ssl_sslv2=YES ssl_sslv3=YES ssl_tlsv1=YES
这样重启vsftpd 就能够用客户端来尝试进行SSL加密链接了 。css
相关参数说明:html
参数 | 说明 |
---|---|
allow_anon_ssl=NO | 是否容许SSL链接,启用SSL后才可使用此参数,默认NO |
ssl_enable=NO | 是否启用ssl 安全链接 默认NO 若是设置为yes,vsftpd。 |
将启用openSSL,经过SSL支持安全链接和数据传输 | |
force_local_logins_ssl=YES | 是否对非匿名用户登陆加密 默认yes |
force_local_data_ssl=YES | 是否对非匿名用户传输加密 默认yes |
force_anon_logins_ssl=NO | 匿名用户登陆时是否加密 默认为no |
force_anon_data_ssl=NO | 匿名用户数据传输时是否加密 默认为no |
ssl_sslv2=NO | 是否开户sslv2协议。 默认NO ,若是设置为yes, |
前提为ssl_enable=YES | |
ssl_sslv3=NO | 是否开户sslv3协议。 默认NO ,若是设置为yes, |
前提为ssl_enable=YES | |
dsa_cert_file | 为ssl加密链接指定dsa证书位置 默认 无 |
ssl_ciphers | 是否指定加密方式 默认 DES-CBC3-SHA |
6 日志文件
参数 | 说明 |
---|---|
dual_log_enable=NO | # 是否启用双日志,默认NO 若是设置为yes,则分别在/var/log/xferlog、 |
var/log/vsftpd.log里记录日志。前一个为wu-ftpd格式,可被通用工具 | |
分析,后一个为vsftpd的专用格式 | |
xferlog_enable=YES | # 激活上传和下传的日志 依赖 参数xferlog_std_format的设置 |
xferlog_std_format=YES | # 使用标准格式记录上传、下传日志 |
syslog_enable=NO | # 是否关闭vsftpd的日志并记录系统日志 默认NO ,若是设置为YES,系 |
统日志会记录到/var/log/vsftpd.log,而VSFTPD的日志进程将中止。 |
7 传输模式
参数 | 说明 |
---|---|
ascii_download_enable=YES | 是否启用ascii模式下载文件 默认 NO |
ascii_upload_enable=YES | 是否启用ascii模式上传文件 默认 NO |
async_abor_enable=NO | 是否启用强制停止传输文件 默认 NO 启用此参数是为了 |
免停止传输时的客户端挂死。只有特殊状况下才使用。 | |
background=NO | 是否后台启动vsftpd监听 默认 NO 启用后,VSFTPD将 |
监听进程置于后台,当访问vsftpd服务时,console 会返 | |
回到shell 模式 | |
check_shell=YES | 检测是否有可用的shell环境 默认 YES |
userlist_enable=YES | 启用user_list 文件的检查 默认 NO 为YES时检查 |
user_list文件中的用户列表,为NO 时不检测该文件 | |
userlist_deny=NO | 只有在userlist_enable 启用时有效,默认YES . |
YES: 表示user_list文件中的用户不容许登陆ftp | |
NO: 表示只容许user_list文件中的用户登陆FTP |
8 传输速率设置
参数 | 说明 | 默认值 |
---|---|---|
anon_max_rate | 匿名用户容许的最大传输速率 | 0秒 |
local_max_rate | 本地认证用户的最大传输速率 | 0秒 |
9 超时设置
参数 | 说明 | 默认值 |
---|---|---|
accept_timeout | 尝试链接时间 | 60s |
data_connection_timeout | 数据传输延迟的最大时间,超过限制,会话将被终止 | 300s |
idle_session_timeout | 链接创建后,两次ftp命令之间的时间间隔,超时会话将被终止 | 300s |
10 用户建立的文件的权限
参数 | 说明 | 默认值 |
---|---|---|
anon_umask | 匿名用户建立的文件的默认权限 | 022 |
local_umas | 本地用户建立的文件的默认权限 | 022 |
11 链接数设置
参数 | 说明 | 默认值 |
max_clients | 容许的最大链接数 | 0 |
max_per_ip | 单个IP容许的最大链接数 | 0 |
12 端口设置
参数 | 说明 | 默认值 |
---|---|---|
listen_port=21 | FTP服务器创建链接所侦听的端口 | 21 |
ftp_data_port | 数据传输所使用的默认端口 | 20 |
connect_from_port_20=YES | 指定FTP数据传输链接使用20端口,设置为NO时,则进 | NO |
行数据链接时,所使用的端口由ftp_data_port指定 | ||
pasv_max_port=0 | passive 模式下数据传输使用的端口上限 | 0 |
pasv_mim_port=0 | passive 模式下数据传输使用的端口下限 | 0 |
13 用户访问权限
参数 | 说明 |
---|---|
chroot_list_enable=YES | 是否改变用户的根目录, 默认 NO。 当设置为YES时,须要以root |
用户作以下操做: | |
mkdir /etc/vsftpd/userconf; | |
cat >>$username<<eof | |
local_root=$path | |
EOF | |
说明 "$username" 是须要改变默认根目录的用户好比用户aaa | |
,$path 为你想要用户aaa默认访问的路径 ,好比/data/aaa | |
chroot_list_enable=YES | 设置是否启用chroot_list_file配置项指定的用户列表文件。 |
默认值为NO | |
chroot_list_file=/etc/vsftpd/chroot_list | 用于指定存储用户列表文件,该文件用于控制哪些用户只能够 |
访问本身的根目录,不能够访问根路径的上级路径目录 | |
chroot_local_user=YES | 用于指定用户列表文件中的用户是否容许切换到上级目录。默认值为NO。 |
经过搭配能实现如下多种效果。见表格下方。 |
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,能够切换到根路径的上级路径;未在文件中列出的用户,则不能切换。java
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到根路径的上级路径;未在文件中列出的用户,则能够切换。node
③当chroot_list_enable=NO,chroot_local_user=YES时,全部的用户均不能切换到用户根路径的上级路径python
④当chroot_list_enable=NO,chroot_local_user=NO时,全部的用户都可以切换到用户根路径的上级路径sql