当我们往服务器上上传文件时,如果使用普通用户登录,就要提供用户名和密码,这在ftp上是明文传输的,显然不够安全,一旦被截获,就可能被利用而进入系统,虽然可以使用SSL加密传输,但是这样一来速度就下降了不少。所以我们就采用限制IP访问的方式,只允许从某个IP连接进来,然后使用匿名访问ftp,这样一来就不用输入用户名和密码了,系统中的用户名和密码就不会泄露了,而且也足够安全,不会被别人从其它主机登录。
下面我们来看看在vsftpd上如何设置只允许从某个主机访问,并且开启匿名访问:
1,修改/etc/vsftpd/vsftpd.conf文件,
#开启匿名访问
anonymous_enable=YES
#设置匿名用户的ftp根路径,注意根路径不能有w权限,否则要报500错误:500 OOPS: vsftpd: refusing to run with writable anonymous root
#该路径下可以创建一个pub目录,一个incoming目录,拥有者都改为ftp,pub目录可以设置为只读,incoming设置为可写。
anon_root=/var/ftp
#开启匿名上传权限
anon_upload_enable=YES
#开启匿名创建目录权限
anon_mkdir_write_enable=YES
#开启匿名文件修改的权限,否则要报553 could not create file的错误,参见:vsFTPd的553 Could not create file 错误
anon_other_write_enable=YES
#开启tcp_wrappers,这样就可以在/etc/hosts.allow和/etc/host.deny中设置允许和拒绝访问的IP了
tcp_wrappers=YES
2,设置只允许访问的IP
这个在/etc/hosts.allow和/etc/hosts.deny中设置,可以参考以下几篇文章:
这两个文件的关系是,现在hosts.allow文件中查找允许的IP,如果找到就允许访问,就不找hosts.deny文件了,如果没找到,就在hosts.deny中查找,如果找到,就拒绝,没找到,还是允许访问。文件的格式是:
vsftpd:192.168.1.2
vsftpd:192.168.1.100:DENY
vsftpd:192.168.1.
vsftpd:ALL
其中vsftpd:192.168.1.100:DENY 这种方式也可以定义在hosts.allow中,表示这个主机被拒绝访问。
例如我们只允许从192.168.1.2访问服务器,其它的都拒绝访问,则可以这么配置:
hosts.allow:vsftpd:192.168.1.2
hosts.deny:vsftpd:ALL