[置顶] CentOS6.3下配置vsftpd,nginx通过http协议列出目录

本来这个主机是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的访问限制在内网的事了


你可能感兴趣的:([置顶] CentOS6.3下配置vsftpd,nginx通过http协议列出目录)