本来这个主机是CentOS6.2最小安装的,结果运行了yum update,导致升级成了6.3版本
这台机器在安装vsftpd前,基本是全新的,就是配置了哈网络和开启了ssh服务,本机有两张网卡,一张在内网网段,一张在外网
目地:这次配置并没有对权限有太大要求,就是要求内网匿名用户通过ftp协议对目录具有基本全部权限,然后外网用户无法ftp进来,只能通过外网nginx提供的http列出目录服务读目录,下载
由于这次vsftpd只需要一个匿名用户,所以安装和配置都很简单:
以root权限登录
yum install vsftpd
chkconfig vsftpd on
sevice vsftpd start
service iptables stop #测试中暂时关闭防火墙,不然无法访问
然后就是对/etc/vsftpd/vsftp.conf文件的配置
在后面添加
anon_root=/var/ftp #匿名用户登录后的根目录
local_root=/var/ftp #本地用户登录后的根目录
anon_umask=022
anon_upload_enable=YES #匿名用户有上传权限
anon_mkdir_write_enable=YES #匿名用户可以创建目录并在此目录上传
anon_other_write_enable=YES #匿名用户对文件夹有有重命名和删除权限
下面这个关于目录的设置比较关键
然后就是ftp的根目录/var/ftp权限不能设置为777,不然会出现常见错误:
500 OOPS: vsftpd: refusing to run with writable anonymous root
所以:
chown -R 755 /var/ftp
那匿名用户的可读可写怎么解决,再建一个目录/var/ftp/everyone,将这个目录权限设为777即可,然后在/etc/fstab文件中将ftp的那块硬盘挂在该目录下即可
接着安装nginx,列出目录:
源码安装nginx
修改nginx的配置文件的location部分即可:
location / {
root /var/ftp/everyone/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
#index index.html index.htm;
}
说明参见:http://blog.licess.org/nginx-autoindex/
这样在iptables关闭的情况下,测试均正常
接着是对iptables进行相关配置,然后打开iptables,毕竟这样更安全
大家知道ftp有主动模式和被动模式之分,端口的使用也有点区别,但是ftp客户端会自动选择的,所以就开放20和21号端口也可
方法1:
按照ssh的22号端口配置开放20,21端口
在/etc/sysconfig/iptables添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #开放80端口 两个方法这句都要有
方法2:
在上述文件添加:
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-I INPUT -p tcp --dport 21 -j ACCEPT
-I OUTPUT -p tcp --dport 21 -j ACCEPT
这样开启iptables就能访问了,但是filezilla延时很大,基本无法忍受
在/etc/sysconfig/iptables-conf文件中添加两个模块即可
IPTABLES_MODULES="ip_conntrack_ftp" #added for ftp service
IPTABLES_MODULES="ip_nat_ftp"
重启iptables服务即可
以上都ok,接着就是关于将ftp的访问限制在内网的事了