vsftpd基础介绍
vsftpd英文全称very secure file transfer protocol deamon,是FTP服务器端软件中,比较常见的一种。从网上了解到ftp服务器端的软件有vsftpd 、serv-u、proftpd、FileZilla Server等,这里主要介绍vsftpd配置。
vsftpd安装
1、检查是否安装
yum list installed | grep vsftpd
2、未安装,进行yum安装
yum install vsftpd.x86_64
vsftpd配置
1、配置文件
vim /etc/vsftpd/vsftpd.conf
2、配置详解
anonymous_enable=NO
//允许匿名访问,默认为YES,可选值【yes,no】
local_enable=YES
//本地用户允许访问,默认为YES,可选值【yes,no】
write_enable=YES
//设定允许进行写操作(上传、删除),默认为YES,可选值【yes,no】
local_umask=022
//设定权限掩码,默认022,对应的文件上传权限644、目录权限755
anon_upload_enable=NO
//设定匿名访问情况下,允许上传
anon_mkdir_write_enable=NO
//设定匿名访问情况下,允许创建目录
dirmessage_enable=YES
//设定开启目录标语功能
connect_from_port_20=YES
//设定端口20进行数据连接,并不是ftp链接端口.
chown_uploads=YES
//是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
chown_username=whoever
//设定禁止上传文件更改宿主
xferlog_enable=YES
//设定开启日志记录功能
xferlog_file=/var/log/ftp/vsftpd.log
//设置日志目录
xferlog_std_format=YES
//设定日志使用标准的记录格式
idle_session_timeout=600
//设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。
data_connection_timeout=120
//设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒。
nopriv_user=vsftpd
//设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
async_abor_enable=YES
//设定支持异步传输功能。
ascii_upload_enable=YES
//设定支持ASCII模式的上传功能。
ascii_download_enable=YES
//设定支持ASCII模式的下载功能。
ftpd_banner=This Vsftp server supports virtual users ^_^
//设定Vsftpd的登陆标语。
deny_email_enable=YES
//可将某些特殊的 email address 抵挡住。如果以anonymous 登录服务器时,会要求输入密码,也就是您的email address, 如果很讨厌某些email address ,就可以使用此设定来取消他的登录权限,但必须与下面的设置项配合
banned_email_file=/etc/vsftpd/banned_emails
//当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定那个email address 不可登录vsftpd 服务器,此文件需用户自己创建,一行一个email address 即可!
ls_recurse_enable=YES
// 是否允许递归查询 , 大型站点的 FTP 服务器启用此项可以方便远程用户查询
chroot_local_user=YES
chroot_list_enable=YES
//设置为 NO 时,用户登录FTP 服务器后具有访问自己目录以外的其他文件的权限, 设置为 YES 时 , 用户被锁定在自己的 home 目录中,vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件,此文件需用户建立, 再将需锁定在自己home 目录的用户列入其中,每行一个用户
chroot_list_file=/etc/vsftpd/chroot_list
//此文件需自己建立 , 被列入此文件的用户 , 在登录后将不能切换到自己目录以外的其他目录 , 由 FTP 服务器自动地 chrooted 到用户自己的home 目录下,使得 chroot_list 文件中的用户不能随意转到其他用户的FTP home 目录下,从而有利于FTP 服务器的安全管理和隐私保护
listen=YES
//如果设置为 YES , 则 vsftpd 将以独立模式运行,由vsftpd 自己监听和处理连接请求
listen_ipv6=YES
//设定是否支持IPV6
pam_service_name=vsftpd
// 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即/etc/pam.d/vsftpd 文件,此文件中file=/etc/vsftpd/ftpusers 字段,说明了PAM 模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers 中
userlist_enable=YES/NO
//此选项默认值为NO , 此时ftpusers 文件中的用户禁止登录FTP 服务器;若此项设为YES ,则 user_list 文件中的用户允许登录 FTP 服务器,而如果同时设置了 userlist_deny=YES ,则 user_list 文件中的用户将不允许登录FTP 服务器,甚至连输入密码提示信息都没有,直接被FTP 服务器拒绝
userlist_deny=YES/NO
//此项默认为YES ,设置是否阻扯user_list 文件中的用户登录FTP 服务器
tcp_wrappers=YES
//表明服务器使用 tcp_wrappers 作为主机访问控制方式,tcp_wrappers 可以实现linux 系统中网络服务的基于主机地址的访问控制,在/etc 目录中的hosts.allow 和hosts.deny 两个文件用于设置tcp_wrappers 的访问控制,前者设置允许访问记录,后者设置拒绝访问记录。例如想限制某些主机对FTP 服务器192.168.57.2 的匿名访问,编缉/etc/hosts.allow 文件,如在下面增加两行命令:vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY 表明限制IP 为192.168.57.1/192.168.57.9 主机访问IP 为192.168.57.2 的FTP 服务器,此时FTP 服务器虽可以PING 通,但无法连接
关于userlist_enable、userlist_deny的设置,ftpusers和user_list文件的区别
ftpusers:禁止user_list列表中的用户访问FTP
userlist_enable=YES,userlist_deny=YES,禁止user_list列表中的用户访FTP
userlist_enable=YES,userlist_deny=NO, 只允许user_list列表中的用户FTP。
userlist_enable=NO,userlist_deny=YES ,因设定userlist_enable=NO,忽略user_list文件,user_list不启作用
userlist_enable=NO,userlist_deny=NO ,因设定userlist_enable=NO,忽略user_list文件,user_list不启作用
ftpusers禁止的优先级更高。假设ftpusers禁止woodie用户访问,userlist允许woodie用户访问,则在运行时,用户woodie不能访问ftp.
设置用户
1、创建用户
useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
passwd test //为test设置密码
2、更改用户相应的权限设置
usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp
usermod -s /sbin/bash test //用户test恢复正常
usermod -d /test test //更改用户test的主目录为/test
3、限制用户访问
限制用户只能访问/home/test,不能访问其他路径
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
改完配置文件,不要忘记重启vsFTPd服务器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
4、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面