一、安装
yum -y install vsftpd
二、配置
编辑/etc/vsftpd/vsftpd.conf
# 与主机较相关的设定值 connect_from_port_20=YES (NO) # 数据传输端口; listen_port=21 # 命令通道端口,此设定值仅适合以 stand alone 的方式来启动!(对于 super daemon 无效) dirmessage_enable=YES (NO) # 当使用者进入某个目录时,会显示该目录需要注意的内容,显示的档桉预设是 .message ,你可以使用底下的设定项目来修订! message_file=.message # 当 dirmessage_enable=YES 时,可以设定这个项目来让 vsftpd 寻找该档桉来显示讯息! listen=YES (NO) # 若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的! pasv_enable=YES (NO) # 启动被动连接模式(passive mode) use_localtime=YES (NO) # 是否使用本地时间?vsftpd 预设使用 GMT 时间(格林威治),所以会比台湾晚 8 小时,建议设定为 YES 吧! write_enable=YES (NO) # 如果你允许使用者上传资料时,就要启动这个设定值; connect_timeout=60 # 单位是秒,在主动连接模式下,在60秒内得不到客户端的回应,则强制断线 accept_timeout=60 # 当使用者以被动式 PASV 来进行资料传输时,如果主机启用 passive port 并等待 client 超过 60 秒而无回应, 那麽就给他强制断线!这个设定值与 connect_timeout 类似,不过一个是管理主动连线,一个管理被动连线。 data_connection_timeout=300 # 如果伺服器与用户端的资料连线已经成功建立 (不论主动还是被动连线),但是可能由于线路问题导致 300 秒内还是无法顺利的完成资料的传送,那用户端的连线就会被我们的 vsftpd 强制剔除! idle_session_timeout=300 # 如果使用者在 300 秒内都没有命令动作,强制离线! max_clients=0 # 如果 vsftpd 是以 stand alone 方式启动的,那么这个设定项目可以设定同一时间,最多有多少 client 可以同时连上 vsftpd 哩!? max_per_ip=0 # 与上面 max_clients 类似,这裡是同一个 IP 同一时间可允许多少连线? pasv_min_port=0,pasv_max_port=0 # 上面两个是与 passive mode 使用的 port number 有关,如果您想要使用 65400 到 65410 这 11 个 port 来进行被动式连线模式的连接,可以这样设定 pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的话,表示随机取用而不限制。 ftpd_banner=一些文字说明 # 当使用者连线进入到 vsftpd 时,在 FTP 用户端软体上头会显示的说明文字。不过,这个设定值资料比较少啦! 建议你可以使用底下的设定值来取代这个项目; banner_file=/path/file # 这个项目可以指定某个纯文字档作为使用者登入 vsftpd 伺服器时所显示的欢迎字眼。 ########################################### # 与实体用户较相关的设定值 guest_enable=YES (NO) # 若这个值设定为 YES 时,那麽任何非 anonymous 登入的帐号,均会被假设成为 guest (访客) 喔! 至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的相关权限。但可以透过 guest_username 来修改。 guest_username=ftp # 在 guest_enable=YES 时才会生效,指定访客的身份而已。 local_enable=YES (NO) # 这个设定值必须要为 YES 时,在 /etc/passwd 内的帐号才能以实体用户的方式登入我们的 vsftpd 主机 local_max_rate=0 # 实体用户的传输速度限制,单位为 bytes/second, 0 为不限制。 chroot_local_user=YES (NO) # 将使用者限制在自己的家目录之内(chroot)!这个设定在 vsftpd 当中预设是 NO,因为有底下两个设定项目的辅助喔! 所以不需要启动他! chroot_list_enable=YES (NO) # 是否启用将某些实体用户限制在他们的家目录内?预设是 NO ,不过,如果您想要让某些使用者无法离开他们的家目录时, 可以考虑将这个设定为 YES ,并且规划下个设定值 chroot_list_file=/etc/vsftpd.chroot_list # 如果 chroot_list_enable=YES 那麽就可以设定这个项目了! 他裡面可以规定那一个实体用户会被限制在自己的家目录内而无法离开!(chroot) 一行一个帐号即可! userlist_enable=YES (NO) # 是否借助 vsftpd 的抵挡机制来处理某些不受欢迎的帐号,与底下的设定有关; userlist_deny=YES (NO) # 当 userlist_enable=YES 时才会生效的设定,若此设定值为 YES 时,则当使用者帐号被列入到某个档桉时, 在该档桉内的使用者将无法登入 vsftpd 伺服器!该档桉档名与下列设定项目有关。 userlist_file=/etc/vsftpd.user_list # 若上面 userlist_deny=YES 时,则这个档桉就有用处了!在这个档桉内的帐号都无法使用 vsftpd 喔! ########################################### # 匿名者登入的设定值 anonymous_enable=YES (NO) # 设定为允许 anonymous 登入我们的 vsftpd 主机!预设是 YES ,底下的所有相关设定都需要将这个设定为 anonymous_enable=YES 之后才会生效! anon_world_readable_only=YES (NO) # 仅允许 anonymous 具有下载可读档桉的权限,预设是 YES。 anon_other_write_enable=YES (NO) # 是否允许 anonymous 具有写入的权限?预设是 NO!如果要设定为 YES, 那麽开放给 anonymous 写入的目录亦需要调整权限,让 vsftpd 的 PID 拥有者可以写入才行! anon_mkdir_write_enable=YES (NO) # 是否让 anonymous 具有建立目录的权限?预设值是 NO!如果要设定为 YES, 那麽 anony_other_write_enable 必须设定为 YES ! anon_upload_enable=YES (NO) # 是否让 anonymous 具有上传资料的功能,预设是 NO,如果要设定为 YES , 则 anon_other_write_enable=YES 必须设定。 deny_email_enable=YES (NO) # 将某些特殊的 email address 抵挡住,不让那些 anonymous 登入! 如果以 anonymous 登入主机时,不是会要求输入密码吗?密码不是要您 输入您的 email address 吗?如果你很讨厌某些 email address , 就可以使用这个设定来将他取消登入的权限!需与下个设定项目配合: banned_email_file=/etc/vsftpd.banned_emails # 如果 deny_email_enable=YES 时,可以利用这个设定项目来规定哪个 email address 不可登入我们的 vsftpd 喔!在上面设定的档桉内,一行输入一个 email address 即可! no_anon_password=YES (NO) # 当设定为 YES 时,表示 anonymous 将会略过密码检验步骤,而直接进入 vsftpd 伺服器内喔!所以一般预设都是 NO 的! anon_max_rate=0 # 这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,如果是 0 则不限制(由最大频宽所限制),如果您想让 anonymous 仅有 30 KB/s 的速度,可以设定『anon_max_rate=30000』 anon_umask=077 # 限制 anonymous 的权限!如果是 077 则 anonymous 传送过来的档桉 权限会是 -rw------- 喔! ########################################### # 关于系统安全方面的一些设定值 ascii_download_enable=YES (NO) # 如果设定为 YES ,那么 client 就可以使用 ASCII 格式下载文件。 ascii_upload_enable=YES (NO) # 与上一个设定类似的,只是这个设定针对上传而言!预设是 NO one_process_model=YES (NO) # 这个设定项目比较危险一点~当设定为 YES 时,表示每个建立的连线 都会拥有一支 process 在负责,可以增加 vsftpd 的效能。不过, 除非您的系统比较安全,而且硬体配备比较高,否则容易耗尽系统资源喔!一般建议设定为 NO 的啦! tcp_wrappers=YES (NO) # 当然我们都习惯支援 TCP Wrappers 的啦!所以设定为 YES 吧! xferlog_enable=YES (NO) # 当设定为 YES 时,使用者上传与下载档桉都会被纪录起来。记录的档桉与下一个设定项目有关: xferlog_file=/var/log/vsftpd.log # 如果上一个 xferlog_enable=YES 的话,这裡就可以设定了!这个是登录档的档名啦! xferlog_std_format=YES (NO) # 是否设定为 wu ftp 相同的登录档格式?!预设为 NO ,因为登录档会比较容易读! 不过,如果您有使用 wu ftp 登录档的分析软体,这裡才需要设定为 YES nopriv_user=nobody # 我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权限 相当的低,因此即使被入侵,入侵者仅能取得 nobody 的权限喔! pam_service_name=vsftpd # 这个是 pam 模组的名称,我们放置在 /etc/pam.d/vsftpd 即是这个咚咚!
建立虚拟用户
1)建立虚拟用户数据库
vi login
username1
password1
username2
password2
然后以root用户登录系统,建立用户数据库,并更改权限:
db_load -T -t hash -f login /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db
2)建立PAM文件
vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
3)为虚拟用户建立文件夹
useradd -d /ftp -s /sbin/nologin virtual
chown -R virtual:virtual /ftp
4)按需修改vsftpd.conf以下配置
anonymous_enable=NO local_enable=YES write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd pam_service_name=vsftpd
5)建立用户的权限
vi /etc/vsftpd/username1
anon_world_readable_only=NO write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES anon_mkdir_write_enable=YES
6)重启服务
service vsftpd restart
注意事项
●如果要删除掉一个虚拟用户,先在logins.txt中删除用户对应的用户名和密码,然后删除vsftpd_login.db,重新运行db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
●如果只是要修改用户的密码,只需重新运行db_load就可以
●如果要改变用户的其它配置,只需修改用户的配置文件
开启双重日志
dual_log_enable=YES xferlog_enable=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES vsftpd_log_file=/var/log/vsftpd.log
xferlog是 wu-ftpd 类型的传输日志, 可以用于 标准工具分析. vsftpd.log 是 vsftpd 自有类型的日志.
防火墙设置
主动模式
iptables -A INPUT -p TCP --dport 21 -j ACCEPT
iptables -A INPUT -p TCP --dport 20 -j ACCEPT
被动模式
iptables -A INPUT -p TCP --dport 21 -j ACCEPT
iptables -A INPUT -p TCP--dport 2000:2009 -j ACCEPT
三、启动(二种模式)
超级守护模式启动
vi /etc/xinetd.d/vsftpd
# vsftpd is the secure FTP server. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf per_source = 5 <==同一IP的连接数量 instances = 200 <==同一时间的连接数量 no_access = 192.168.1.3 banner_fail = /etc/vsftpd/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST }
vi /etc/vsftpd/vsftpd.conf
listen=NO
service vsftpd stop
service xinetd restart
独立启动
service vsftpd start
文章参考鸟哥及其它网络资料。