vsftp服务--本地用户访问
具体演示
一、基本配置
本地用户,即用系统的用户和密码来登陆ftp。也就是用useradd 添加用户和passwd修改密码的方式,来作为ftp的用户名与密码。一旦截获到用户名的密码,不光可以登录ftp,还可以登录到Centos系统本身,这样还是有一些安全隐患的。
vsftpd的本地用户基本配置就3个参数,这三个参数以及值如下:
local_enable=YES # 本地用户是否开启,默认为YES
write_enable=YES #本地用户是否允许上传,默认为YES
local_umask=022 # 本地用户上传的umask值,默认是022,则目录的权限是755(777-022=755),文件权限是644(666-022=644)
这些参数在《vsftp服务–配置文件详解》中已经说过了。
这里,我用test1的本地用户登陆ftp,默认显示的文件位置为家目录下,而且能切换到Linux系统的/下。如下:
随意切根带来的后果是什么?
因为默认情况下,没有对本地用户的默认位置做锁定,导致一个普通用户都能随意的切根。然后把系统的重要文件下载到windows本地,随便打开,这非常非常的不安全,这样的文件比如/etc/passwd、/etc/shadow,还有网页文件等等。
二、演示上传与下载
get test1_f1 # 传输完成,同样的,你在windows的哪个位置登陆,就下载到那里。
put windows_f1 # 传输完成,这里的上传文件的位置就在登陆ftp的那个位置。
三、更改本地用户的默认位置以及限速
能更改本地用户默认的登录位置吗?(本地用户默认位置为用户家目录下)
可以,只要在/etc/vsftpd/vsftpd.conf中加入一行参数和值------“ local_root=/vsftpd/ftp ”。这个参数的意思是设置本地用户的FTP根目录,如果目录不存在,需要手动创建目录。覆盖范围为全局生效,也就是只要是本地登陆的用户,都在这个位置。(同样的,需要注意文件权限,只有配置文件开启了上传以及系统的目录权限是正确的,才能上传)如果你愿意,也可以限制速度——" local_max_rate=300 "。参数的意思是限制本地用户最大传输速度,单位为字节/秒,即KB/s
四、把用户限制在家目录下
前面说用户没有锁定到家目录下,非常的不安全,怎么办?
加上参数——“chroot_local_user=YES”,参数的意思是开启用户目录限制。旧版本加了这个参数就能成功锁定目录,但是到了新版本,vsftp程序认为做了用户限制后默认目录如果有w权限非常不安全,于是登录ftp的时候会出现下图500代码错误,强制你需要更改默认位置让它没有x权限,否则不让你登陆。如下图:
我们知道家目录的默认权限是700,这是/etc/login.def文件决定的。
出现了500代码错误没关系,外加一个参数“ allow_writeable_chroot=YES ”就可以了,这个参数的意思是允许锁定目录的情况下有w权限。官方的说法是将此参数设置为“yes”会有一定的安全风险。
这是效果:
五、不同用户分别对待
在生产服务器上,有很多的灵活需求,比如说我不想所有的本地用户都限制在指定的主目录当中,而是一部分人能够切换,而另外一部分人不能够切换,分别对待,这样可以做到吗?
可以,三个参数“ chroot_local_user=YES,chroot_list_enable=YES,chroot_list_file=/etc/vsftpd/chroot_list ”全部打开就可以做到,写入到 /etc/vsftpd/chroot_list 文件中的用户可以访问任何目录,其他用户则被限制在家目录或者指定的主目录当中。
注意!/etc/vsftpd/chroot_list这个文件用来控制切换目录的白名单,而/etc/vsftpd/ftpusers和/etc/vsftpd/user_list用来控制本地用户登陆的黑名单。两者的功能不要混淆了