yum install vsftpd curlftpfs
ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:
ftpusers    该文件用来指定那些用户不能访问ftp服务器。
user_list   该文件用来指示的默认账户在默认情况下也不能访问ftp.
vsftpd.conf   vsftpd的主配置文件.
ftpusers和user_list用来控制登录用户。
ftpusers文件中的内容不受任何配制项的影响,总是有效,是一个黑名单!

更新虚拟用户数据
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vu_list.db 
/etc/init.d/vsftpd restart


vsftpd.conf中常用的配置内容:
    1、匿名用户能否上传和写文件,一般配置为NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    匿名用户能否登录,视情况而定,看是否是专有用户使用。
    anonymous_enable=NO
    2、端口设定
    port_enable=YES,即默认情况下,FTP  PORT主动模式被启用
    connect_from_port_20=YES,即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。
    ftp_data_port=port number,设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。
    3、通信编码模式
    默认情况下可以通过ascii模式传输。将配置改为NO后,只能通过binary形式传输。
    ascii_upload_enable=YES
    ascii_download_enable=YES



匿名
默认匿名共享目录 /var/ftp
指定匿名共享目录 anon_root=/data/3mang_apps(目录权限不能为777,否则无法登录)

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES    允许匿名用户
local_enable=YES                允许本地用户登陆
anon_world_readable_only=YES  匿名只读
或
anon_other_write_enable=YES  匿名可写
anon_upload_enable=YES            匿名可上传
anon_mkdir_write_enable=YES    匿名可以创建目录
local_max_rate=1000000--------------1M    限制上传下载的速度

日志相关
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog  
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

挂载
curlftpfs ftp://$IP /mnt/

用户
将配置文件中”anonymous_enable=YES “改为 “anonymous_enable=NO”
添加chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd/chroot_list
useradd ftpadmin -s /sbin/nologin -d /home/ftpadmin        用户目录权限755,777会无法使用(如果是两级目录,上级需要777)
passwd ftpadmin 修改密码
/etc/vsftpd/chroot_list 添加ftpadmin   用户的登录控制还可以参照上文中user_list进行设定。


虚拟目录
比如我的ftp的默认目录是/var/ftp,我想把/mnt/soft文件夹,映射到/var/ftp/a目录中,我就如下操作
我们要先在/var/ftp目录中建一个目录
[root@localhost ~]# mkdir /var/ftp/a                               然后执行mount命令
[root@localhost ~]# mount --bind /mnt/soft /var/ftp/a    这样就OK了。
[root@localhost etc]# vi /etc/fstab
将 /mnt/soft   /home/public  auto bind 0 0                         添加到/etc/fstab文件的末尾


四、FTP 的主动与被动模式
    FTP是基于TCP的服务,在实际应用中有两个接口:一个数据接口,一个控制接口。默认情况下这两个端口是21(控制端口)和20(数据端口)。
    主动方式的FTP是:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,
    并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
    被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端发起.
    当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,
    客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口
    (P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。 
    简单的来说,可以认为两者的区别主要在于客户端和服务器端到底是由谁来确定非特权端口,也就是这一对TCP通信组合的通道。
    如果是客户端先确定非特权端口就是主动模式,服务器端先确定非特权端口就是被动模式。(但实质上通信过程是不一样的,
    这种说法只可以做简单区分用)
五、FTP相关的防火墙设定
    当Linux系统启动了防火墙后,需要相应的对防火墙进行设定,防止防火墙阻断FTP通信。
 支持主动方式FTP,防火墙设定:    
1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接) 
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
 4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
支持被动方式的FTP,防火墙设定:  
1. 从任何大于1024的端口到服务器的21端口(客户端初始化的连接) 
2. 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
下面以被动模式的防火墙为例给出示范:
    首先vi  /etc/vsftpd/vsftpd.conf文件中配置开启pasv被动模式:
    pasv_enable=YES
    设定非特权端口的通信范围(示例只做参考):
    最小值pasv_min_port=10020
    最大值pasv_max_port=11020
    保存后注意配置后重启vsftpd服务。
    然后vi  /etc/sysconfig/iptables,配置系统防火墙:
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 10020:11020 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    保存后注意重启iptables服务。

    如果FTP服务器为云服务器或者有局域网路由控制,除了单独设定路由端口映射规则并在云服务器安全规则中添加例外,还要在
    /etc/vsftpd/vsftpd.conf中声明被动模式的公网地址,以防端口映射出现问题:
    pasv_address=111.111.111.111(示例)
    pasv_addr_resolve=yes
    pasv_promiscuous=yes

注:如果连接过程中出现200 PORT command successful. Consider using PASV.这条错误信息,不要轻易按照网上建议最多的
关闭PASV模式,只采用主动模式。因为在很多情况下客户端处于VLAN等网络环境下,很难主动给出链接端口,不得不采用被动模式,
出现这个错误并不能通过关闭PASV模式解决,而应该寻找PASV各方面的位置,找到配置中存在的问题进行解决。

results matching ""

    No results matching ""