vsFTP配置总结之虚拟用户及权限管控
vsFTP配置总结之虚拟⽤户及权限管控
1 需求
为了保证系统的安全性,现对系统中vsftpd服务进⾏调整,主要为禁⽌OS本地账户直接登录,采⽤虚拟账户;设置两个虚拟账户,⼀个⽤于上传更新(可读可写),⼀个⽤于下载(仅读);ftp根⽬录/var/ftp/pub保持不变(可扩展)。
2 VSFTP介绍
VSFTP(Very Secure FTP)是⼀种在Unix/Linux中⾮常安全且快速稳定的FTP服务器,⽬前已经被许多⼤型站点所采⽤,如
在vsftpd服务器中⽀持3类⽤户,分别是匿名⽤户,本地⽤户,和虚拟账户。⽤途及区别如下。
1)、匿名⽤户:名为anonymous 或ftp 的FTP ⽤户,匿名FTP ⽤户登录后将FTP 服务器中的/var/ftp 作为FTP 根⽬录。匿名⽤户通常⽤于提供公共⽂件的下载,如架设公共软件下载的FTP 服务器,所有⼈都可以使⽤匿名⽤户进⾏软件下载。
2)、本地⽤户:账号是系统⽤户账号(/etc/passwd),使⽤FTP 本地⽤户账号登录FTP 服务器后,登录⽬录为本地⽤户的宿主⽬录。本地FTP⽤户账号通常和Web 服务器⼀起提供虚拟主机服务,作为⽹页虚拟主机更新⽹页的途径。
3)、虚拟⽤户:账号是为了保证FTP 服务器的安全性,由vsftpd 服务器提供的⾮系统⽤户账号,相对于FTP的本地⽤户来说,虚拟⽤户只是FTP服务器的专有⽤户,虚拟⽤户只能访问FTP服务器所提供的资源。虚拟⽤户FTP 登录后将把指定的⽬录作为FTP 根⽬录。虚拟⽤户与本地⽤户具有类似的功能,由于虚拟⽤户账号具有较⾼的安全性,可以替代本地⽤户账号使⽤。
下⾯将介绍在测试环境中vsftpd虚拟⽤户应⽤的配置过程。
3 VSFTP虚拟⽤户配置
3.1 软件安装
放弃我抓紧我播出时间
1)、执⾏rpm –qa| grep vsftpd,查看系统中是否已经安装了VSFTP,⽬前内外销系统中都已经安装了vsftpd。
本⼈测试环境是CentOS release5.5,安装VSFTP。执⾏如下
[root@localhost ~]# rpm-ivh vsftpd-2.0.5-24.el5_8.1.i386.rpm
启动服务
[root@localhost ~]# servicevsftpd start
设置下次⾃动启动
[root@localhost ~]#chkconfigvsftpd on
VSFTP安装完后,配置⽂件说明如下:
⽂件说明
/etc/f VSFTPD主配置⽂件
/etc/rc.d/init.d/vsftpd VSFTPD启动脚本,独⽴(stand alone)服务模式ios13描述文件
/etc/pam.d/vsftpd PAM认证⽂件(此⽂件中file=/etc/vsftpd/ftpusers字段,指明阻⽌来⾃/etc/vsftpd/ftpusers⽂件中的⽤户访问)
/etc/vsftpd/ftpusers禁⽌使⽤vsftpd的ftp⽤户列表⽂件
/
etc/vsftpd/user_list禁⽌或允许使⽤vsftpd的ftp⽤户列表⽂件(根据主配置⽂件来定)/var/ftp匿名⽤户主⽬录
/var/log/xferlog VSFTPD⽇志⽂件
2)、由于虚拟⽤户的信息需要通过DB库的⽅式进⾏存储,需要⽤到DB rpm包。执⾏rpm –qa | grep db4查看系统是否已经安装相应的软件包。如下图。
3.2 建⽴虚拟⽤户⼝令库
1)、建⽴虚拟⽤户的⼝令⽂件,⽂件中奇数⾏设置虚拟⽤户的⽤户名,偶数⾏设置⽤户的⼝令。Vi编辑器创建vuser⽂件,在⽂件中设置虚拟⽤户nxbar,密码nxbar;虚拟⽤户wxbar,密码wxbar;虚拟⽤户vuser,密码vuser。如下图。
2)、⽣成虚拟⽤户⼝令库,使⽤db_load命令,执⾏如下:
[root@localhost vsftpd]# db_load -T -t hash -f vuser /etc/vsftpd/vuser_list.db
其中,“-f ”命令选项设置的是虚拟⽤户的⼝令⽂件,即上⾯新建的vuser,最终⽣成⼝令库⽂件vuser_list.db。
3.3 修改认证⽂件
修改/etc/pam.d/vsftpd
修改后如下
其中,注释第4、5、6、7⾏,这⼏⾏是⽤来配置本地账户认证的,如果不注释,虚拟账户登陆时会按照本地账户认证的⽅式进⾏认证,因⽽会报错。新增第9、10⾏,即配置虚拟账户的认证,路径“/etc/vsftpd/vuser_list”即上⼀步中⽣成的⼝令库⽂件。其他⾏不会影响虚拟账户的认证,保留。
3.4 新增本地账户
我们希望通过ftp虚拟账户进⾏⽂件的传输,但在系统内还需要有⼀个本地账户与虚拟的ftp账户进⾏关联映射。
新建⽤户vuser,”-d”指定vuser的宿主⽬录为ftp的根⽬录/var/ftp/pub。执⾏如下:
[root@localhost vsftpd]# useradd -d /var/ftp/pub -s /sbin/nologinvuser
查看/var/ftp/pub,root所有,others⽤户满权限。当然这⾥也可以为vuser指定其他的宿主⽬录,但是要保证vuser必须有可读、可写的权限,否则在⽂件上传下载的时候会出现权限不⾜的问题。
3.5 修改VSFTPD主配置⽂件
修改/etc/f如下:
anonymous_enable=NO(是否允许匿名登录FTP 服务器,默认设置为YES 允许,即⽤户可使⽤⽤户名ftp 或anonymous 进⾏ftp 登录,⼝令为空。如不允许匿名访问设置为NO)
local_enable=YES(是否允许本地⽤户登录FTP服务器,默认设置为YES允许,本地⽤户登录后会进⼊指定的⽤户主⽬录,⽽匿名⽤户登录后进⼊匿名⽤户的下载⽬录/var/ftp/pub;设置虚拟账户必须设会YES)
local_umask=022(设置本地⽤户的⽂件掩码为缺省022,得到上传⽂件的初始权限)
#file_open_mode=666(对于上传的⽂件设定权限。默认为0666,如果你想被上传的⽂件可被执⾏,umask要改成0777,与
local_umask配合使⽤)入团
#anon_upload_enable=YES(是否允许匿名⽤户上传⽂件,须将write_enable=YES,默认设置为YES 允许)
#anon_mkdir_write_enable=YES(是否允许匿名⽤户创建新⽂件夹,默认设置为YES允许)祝福母亲的简短句子
xferlog_enable=YES(默认值为NO如果启⽤此选项,系统将会维护记录服务器上传和下载情况的⽇志⽂件,默认情况该⽇志⽂件
为/var/log/vsftpd.log,也可以通过下⾯的xferlog_file 选项对其进⾏设定)
connect_from_port_20=YES(设定 FTP 服务器将启⽤FTP数据端⼝的连接请求,端⼝20为ftp-data数据传输,21 为连接控制端⼝)
#chown_uploads=YES(设定是否允许改变上传⽂件的属主,与下⾯⼀个设定项配合使⽤)
#chown_username=whoever(设置想要改变的上传⽂件的属主,如果需要,则输⼊⼀个系统⽤户名,例如可以把上传的⽂件都改成root 属主。whoever任何⼈)
#xferlog_file=/var/log/xferlog(设定系统维护记录FTP 服务器上传和下载情况的⽇志⽂件,/var/log/vsftpd.log是默认的,也可以另设其它)
xferlog_std_format=YES
idle_session_timeout=600(设置数据传输中断间隔时间,此语句表⽰空闲的⽤户会话中断时间为600秒,即当数据传输结束后,⽤户连接FTP服务器的时间不应超过600秒,可以根据实际情况对该值进⾏修改)
考北京电影学院#data_connection_timeout=120(设置数据连接超时时间,该语句表⽰数据连接超时时间为120秒,可根据实际情况对其修改)
#nopriv_user=ftpsecure(运⾏ vsftpd 需要的⾮特权系统⽤户,缺省是nobody)
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails借据怎么写
#chroot_list_enable=YES(设置为 NO 时,⽤户登录FTP 服务器后具有访问⾃⼰⽬录以外的其他⽂件的权限,设置为 YES时,⽤户被锁定在⾃⼰的宿主⽬录中,vsftpd 将在下⾯ chroot_list_file 选项值的位置寻 chroot_list ⽂件,此⽂件需⽤户建⽴, 再将需锁定在⾃⼰宿主⽬录的⽤户列⼊其中,每⾏⼀个⽤户)
# (default follows)
#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,则不启⽤user_list⽂件;若此项设为YES ,则启⽤user_list ⽂件,⽽如果同时设置了userlist_deny=YES ,则 user_list ⽂件中的⽤户将不允许登录FTP 服务器,甚⾄连输⼊密码提⽰信息都没有,直接被FTP 服务器拒绝,如果userlist_deny=NO,将则只允许user_list⽂件中的⽤户登陆FTP服务器)
userlist_deny=YES(若已启⽤userlist_enable项,此项默认为YES,则阻⽌user_list ⽂件中的⽤户登录FTP 服务器;反之,则只允
许user_list⽂件中的⽤户登录)
tcp_wrappers=YES(表明服务器使⽤tcp_wrappers作为主机访问控制⽅式)
write_enable=NO(决定是否允许⼀些FTP命令去更改⽂件系统。包括上传⽂件,删除⽂件,新增⽬录,删除⽬录)
download_enable=NO(决定是否允许下载⽂件,如果设为NO,下载请求将返回“permission denied”)
guest_enable=YES(如果启⽤,所有的⾮匿名⽤户登录时将被视为游客,其名字将被映射为guest_username⾥所指定的名字。采⽤
虚拟⽤户必须设置该选项)
guest_username=vuser(设置当游客进⼊后,其将会被映射的名字。这⾥设置为“vuser”,即虚拟⽤户登陆ftp后被映射的本地⽤户名)
virtual_use_local_privs=YES(虚拟⽤户和本地⽤户权限相同。很重要,保证虚拟⽤户有和映射的本地⽤户相同的权限)
chroot_local_user=YES(设置虚拟⽤户被锁定在⾃⼰的宿主⽬录中。)
user_config_dir=/etc/vsftpd/user_config(定义⽤户配置⽂件的⽬录)
上表中标红的参数为重要的修改项,每项参数都在其后⾯的括号中有简单的说明。当然还有其他的很多参数来配置VSFTPD,这⾥不⼀⼀例句,附录中将会进⾏统⼀的说明。
3.6 管控ftp⽤户权限
从上⾯的配置中可以看到,我把“write_enable”和“download_enable”参数都设置为NO,那ftp⽤户该如何进⾏⽂件的传输呢?其实,这⾥为了管控权限,在主配置⽂件中都设置为“NO”,然后再对每个ftp⽤户进⾏单独的控制,分别对应单独的配置⽂件,从⽽保证权限分配的合理性及安全性。
其中user_config_dir参数指定了定义⽤户配置⽂件的⽬录,在这⾥只需要在user_config_dir中建⽴以ftp⽤户名命名的⽂件,内容为数据传输和⽤户权限。⾥⾯设置个⼈的合适的选项,就可以保证不同的虚拟⽤户获得不同的权限。
1)、新建user_config⽬录,路径为/etc/vsftpd/user_config
2)、配置nxbar⽤户的权限
代表可上传、可下载
配置wxbar⽤户的权限
代表可下载
当然在本系统中,如果我们不希望某个⽤户访问,可以直接将该ftp⽤户名写⼊ftpusers⽂件或者user_list⽂件。区别是user_list中拒接的⽤户不会提⽰输⼊密码,ftpusers拒接的⽤户可以输⼊密码,但不能登陆。
3.7 重启VSFTPD服务
⾄此,就完成了VSFTPD虚拟⽤户的设置,包括三个虚拟⽤户nxbar、wxbar、vuser,限定nxbar可上传、可下载,限定wxbar只可下载。同时,从VSFTPD的主配置⽂件中可以看到我们阻⽌了匿名⽤户的访问,由于注释了本地⽤户的认证,也阻⽌了本地⽤户的直接访问。
重启服务service vsftpd restart

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。