在公司的业务中,有一些常用的软件是公开使用的,比如XSHELL这一些常用的,用的时候总不能在去下载吧!!!
所以公司中就会搭建一些共享服务器等,本次介绍的就是VSFTPD的用法

(本次要求,将vsftpd做出来,实现匿名用户可以上传)


                 客户机可以从服务器上上传下载
     192.168.1.100     ----------》     192.168.1.1
    pc客户机----------------------------ftp服务器



   
第一步,安装软件包
本次采用yum的方式安装,也可以用rpm或者源码包安装,顺带关闭掉防火墙

[root@localhost 桌面]# yum -y install vsftpd
 
第二步,然后等待安装完毕,安装完毕之后,就要修改主配置文件来让它实现匿名用户可以访问
主配置文件的路径在/etc/vsftpd/vsftpd.conf
[root@localhost 桌面]# vim /etc/vsftpd/vsftpd
vsftpd.conf             vsftpd_conf_migrate.sh  
[root@localhost 桌面]# vim /etc/vsftpd/vsftpd.conf
...
 27 anon_upload_enable=YES      #是否允许匿名用户上传,默认是NO
...
 31 anon_mkdir_write_enable=YES   #是否允许匿名用户创建目录,默认是NO    #这里为了简单,就直接用set nu 来显示行号进行配置的修改了
 32 anon_other_write_enable=YES   #是否允许匿名用户进行其他所有的写入操作
...
第三步,修改完毕后,保存退出,接下来设置acl权限
[root@localhost ~]# setfacl -m u:ftp:rwx /var/ftp/pub/
[root@localhost ~]# getfacl /var/ftp/pub/
getfacl: Removing leading '/' from absolute path names
# file: var/ftp/pub
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x
第四步,接下来就启动服务,并将服务设置为开机自动启动,用客户端来进行访问
[root@localhost ~]# service vsftpd restart
[root@localhost ~]# chkconfig vsftpd on
接着就用匿名用户上传下载来试试吧


实现结果是成功的,但是随着使用,问题也出现了,因为匿名用户可以上传下载,传上去的东西还是可以删除的
所以安全这一块不太好,细心的还能发现能进入到服务器的根目录,这样子简直太不安全了
接下来要对安全这一方面改进一下,开启防火墙,禁止匿名用户访问,将访问用户囚禁在家目录
接着上个实现做的使用
[root@localhost 桌面]# vim /etc/vsftpd/vsftpd.conf
 12 anonymous_enable=NO     #拒绝匿名用户登录
 97 chroot_local_user=YES   #将访问用户囚禁在家目录
然后重启服务,开启防火墙
[root@localhost ftp]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
[root@localhost ftp]# service iptables start
iptables:应用防火墙规则:                                 [确定]
首先清空防火墙规则,
[root@localhost ftp]# iptables -F
[root@localhost ftp]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
然后来对防火墙规则进行写入
[root@localhost ftp]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT     #允许通过21号端口
[root@localhost ftp]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]
将防火墙规则保存起来
下面还有一个有趣的验证,叫vsftpd黑白名单
创建几个用户
[root@localhost ~]# useradd lily
[root@localhost ~]# useradd mike
[root@localhost ~]# useradd kaka
[root@localhost ~]# echo "123456" | passwd --stdin lily
Changing password for user lily.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "123456" | passwd --stdin mike
Changing password for user mike.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "123456" | passwd --stdin kaka
Changing password for user kaka.
passwd: all authentication tokens updated successfully.
这里为了简单,就将密码设置为123456了
然后分别写入/etc/vsftpd/ftpusers黑名单  /etc/vsftpd/user_list 白名单,默认为黑名单
[root@localhost ~]# grep lily /etc/vsftpd/ftpusers   #测试黑名单
lily
[root@localhost ~]# grep mike /etc/vsftpd/user_list  #测试白名单
mike

然后重启服务进行验证,发现只有kaka用户能访问进去,但是很多然不明白了,为什么白名单内的访问不进去呢,看下面
[root@localhost ~]# grep userlist_deny /etc/vsftpd/vsftpd.conf
userlist_deny=NO                         #只允许user_list里面的用户访问FTP
因为白名单是默认没有开启的,所以作用同等于黑名单,下面将白名单开启
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
119 userlist_enable=YES     #是否启用user_list名单
120 userlist_deny=NO        #是否允许user_list名单中的进行访问还是拒绝
然后重启服务,进行验证