一、说明

 

  linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp)。 我们这里也是简单的说明下vsftp的配置。

  vsftp提供3种远程的登录方式:

(1)匿名登录方式

  就是不需要用户名,密码。就能登录到服务器电脑里面

(2)本地用户方式

  需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

(3)虚拟用户方式

  同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

 

二、安装

  



[root@localhost ~]
# whereis vsftpd
[root@localhost ~]
#



 



三、SELinux 设置



 



关闭



setenforce 0  # 设置SELinux 成为permissive模式 (关闭SELinux)
setenforce 1  # 设置SELinux 成为enforcing模式  (开启SELinux)
 
# 或者修改配置
[root@localhost ~]# vi /etc/selinux/config 
# SELINUX=enforcing # 注释掉 
# SELINUXTYPE=targeted # 注释掉 
SELINUX=disabled # 增加 
:wq! #保存退出
[root@localhost ~]# setenforce 0



 

或设置setsebool(推荐)



#查看ftp sebool 配置
[root@localhost ~]getsebool -a | grep ftp

ftpd_anon_write --> on
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> on
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> on
tftp_home_dir --> off

#允许ftpd全部权限
[root@localhost ~]setsebool -P ftpd_full_access on



 

四、防火墙配置

  



#停止firewall
[root@localhost ~]systemctl stop firewalld.service

#禁止firewall开机启动
[root@localhost ~]systemctl disable firewalld.service

#或者,添加ftp服务
[root@localhost ~]firewall-cmd --permanent --zone=public --add-service=ftp
[root@localhost ~]firewall-cmd --reload



 

五、修改配置文件 

 



[root@localhost ~]#less /etc/vsftpd/vsftpd.conf |grep -v ^#
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_list_file=/etc/vsftpd/chroot_list

pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_promiscuous=NO
pasv_address=183.63.152.2222
pasv_min_port=50000
pasv_max_port=50000



 

六、添加ftp用户

 



#添加ftp用户,不允许shell登录
[root@localhost ~]useradd ftpuser -d /home/ftpuser -s /sbin/nologin 

#设定ftp用户密码
[root@localhost ~]pass ftpuser



 

七、配置文件常用详解

 



(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息

(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间

(4)accept_timeout=60 设置在多长时间后自动建立连接

(5)connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;

(6)max_clients=200 指明服务器总的客户并发连接数为200

(7)max_per_ip=3 指明每个客户机的最大连接数为3

(8)local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制

(9)anon_max_rate=30000匿名用户的最大传输速率限制

(10)pasv_min_port=端口

(11)pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口,被动模式使用;

(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;

(13)listen_port=端口号 设置FTP工作的端口号,默认的为21

(14)chroot_local_user=YES 设置限制所有的本地用户登录ftp登录后,改变根目录【chroot()】到自己的家目录
allow_writeable_chroot=YES 设置家目录锁定后,需要允许ftp登录对家目录可写
(15)chroot_local_user=NO 默认,本地用户登录后到系统的根目录,不chroot到自己家目录 

(16)chroot_list_enable=YES 启用chroot_list,chroot_list里面的用户是chroot_local_user设置的例外用户!!!!

(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 ) 

(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录; 

(19)userlist_enable=YES/NO 是否加载用户列表文件; 

(20)userlist_deny=YES 表示userlist加载的用户会拒绝登录,NO表示userlist加载的用户允许登录; 
     ftpuser文件里面加载的用户也会拒绝登录,由/etc/pam.d/vsftpd 决定:auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

(21)userlist_file=/etc/vsftpd/user_list 列表文件



 

 八、其他配置,附录



1. 匿名服务器的连接(独立的服务器)
在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

2. 开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

3. 开启匿名服务器下传的权限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读—–下传 (W)写—-上传 (X)执行—-如果不开FTP的目录都进不去

4.普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传5. 安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
pasv_address=183.63.152.222(Use this option to override the IP address that vsftpd will advertise in response to the PASV command. 
Provide a numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup.)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)

6. 查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号



 

九、NAT



FTP服务器外网NAT使用被动模式,映射连接端口21,数据端口50000

配置打开被动模式配置
pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=50000
pasv_max_port=50000