一、vsftpd安装
1、查看是否安装了ftp相关的安装包 [root@test~]# rpm -qa | grep vsftpd 查看系统中是否安装了vsftpd服务,如果没有安装,先安装下服务 [root@test~]# yum -y install vsftpd //这里如果没有配置 yum源,也可以直接用rpm的方式安装 查看一下是否安装成功 [root@test~]# rpm -qa | grep vsftpd vsftpd-2.2.2-24.e16.x86_64 //看到这个文件,说明安装成功了 ** 2、启动服务并设置开机自动启动** [root@test~]# service vsftpd start //启动服务 [root@test~]# service vsftpd stop //关闭服务 [root@test~]# service vsftpd restart // 重启服务 [root@test~]#chkconfig --level 3 5 vstpd on //设置自启 [root@test~]#chkconfig --list vsftpd //查看是否设置成功 vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off ** 3、配置vsftpd文件** ** vsftpd** 主要有三个配置文件,都位于/etc/vsftpd目录下: ** ftpusers** //是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd服务的 user_list //默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可以让vsftpd服务器更加安全 vsftpd.conf //ftp服务器的主配置文件
二、匿名访问(可上传可下载)
vsftpd 安装好,启动,默认匿名用户就是可以访问的 ,只是不能上传(如果不行,可以试着关闭防火墙[root@test~]#service iptables stop)接下主要介绍的匿名用户上传权限 匿名用户上传需要注意三个地方: A、上传目录的写入权限 B、服务器的配置支持上传 C、selinux支持上传 ** 1、设置目录写入权限** [root@test~]# cd /var/ftp //切换到ftp目录下 [root@test ftp]# mkdir upftp //新建一个upftp目录 [root@test ftp]#chown ftp upftp //更改目录所有者(默认是root,更改成ftp,目录默认权限是755) ** 2、配置vftpd的配置文件** [root@test~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份配置文件(个人习惯) [root@test~]# vi /etc/vsftpd/vsftpd.conf #anon_upload_enable=YES //匿名上传 #anon_mkdir_write_enable=YES //匿名写入 取消上面两行的注释(也就是去掉这两行前面的#号) 保存退出 3、修改selinux [root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道 [root@test~]#setsebool -P allow_ftpd_anon_write on //打开匿名写入管道 修改上下文 [root@test~]#ls -Zd /var/ftp/upftp [root@test~]#chcon -t public_content_rw_t /var/ftp/upftp
准备就绪,只待重启服务器
[root@test~]#reboot
重启后,匿名应该就可以直接访问上传下载了
三、基本用户访问
基本用户的访问控制,需要注意两个方面:
A、配置文件的修改
B、selinux的修改
1、修改vsftpd的配置文件
[root@test~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //禁止匿名访问
anon_upload_enable=YES // 注释这行(也就是在这行前面加#号)
anon_mkdir_write_enable=YES // 注释这行(也就是在这行前面加#号)
保存退出
2、修改selinux
[root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道
[root@test~]#setsebool -P allow_ftpd_anon_write off //关闭匿名上传通道(之前打开的)
[root@test~]#setsebool -P ftp_home_dir on
3、创建虚拟用户
[root@test~]#useradd user1 //添加用户user1
[root@test~]#usermod -s /sbin/nologin user1 //禁止用户user1登录系统
[root@test~]#passwd user1 //设置密码
重启vsftpd服务,然后测试
**PS1:**上面这样配置,风险很大,危险性较高;连接上的FTP用户,不仅可以访问自己的家目录,还可以自由切换到其他目录下
因些,下面需要使用chroot功能
[root@test~]# vi /etc/vsftpd/vsftpd.conf
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
取消上面两行的注释(也就是去掉这两行前面的#号)
保存退出
chroot list默认是不存在的,需要我们手动建立,把user1这个用户加到这个文件中,重启vsftpd服务
再测试,可以发现用户锁定在了自己的家目录下,不能切换
还有一点,提醒大家,匿名用户登陆,默认是choot了的
**PS2:**系统添加一个用户也默认有ftp的登陆权限,也存在一定的风险,所以我们要制定更严格的ftp用户策略,我们将通过下面的配置,使只有在user_list文件中的用户才能登录系统
[root@test~]# vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES //这行系统默认存在
userlist_deny=NO //这行需要自己手动添加
userlist_file=/etc/vsftpd/user_list //这行需要自己手动添加(可以在文未添加)
保存,退出,重启vsftpd服务
再测试,会发现此时user1用户已经无法再登录了
然后把user1用户加入到user_list文件中,重启服务,这样user1用户就可以访问了
注意:优先权 ftpusers(拒绝)>user_list(系统用户,虚拟用户)>chroot_list(虚拟用户)
如果ftp用户存在ftpusers文件中,无论是否加入其它两个文件,都是无法访问ftp服务的;
如果ftp用户只存在chroot_list中,也是无法访问ftp服务的;
虚拟用户即要加入chroot_list(锁定在自家目录下)文件中,也需要加入user_list(访问ftp服务权限)文件中
参考文档:http://blog.51cto.com/redking/134839 http://blog.51cto.com/redking/136218