Linux云服务器下搭建FTP服务器

FTP工作模式简介

FTP工作会启动两个通道:控制通道和数据通道。

控制通道一般由客户端发起,数据连接分两种:port(主动)和pasv(被动)。

PORT模式: 在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21) 发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口,在传送数据时,ftp_server将通过自己的TCP 20 端口和PORT中包含的端口建立新的连接来传送数据。

PASV模式: 传送数据时,ftp_client--PASV命令-->ftp_server(21) 发送PASV命令时,ftp_server自动打开一个1024--5000之间的随机端口并且通知ftp_client在这个端口上传送数据,然后客户端向指定的端口发出请求连接,建立一条数据链路进行数据传输。

安装FTP软件包

代码语言:javascript
复制
#rpm -qa vsftpd          //查看是否已经安装
#yum install -y vsftpd //安装FTP
#rpm -ql vsftpd          //列出安装文件如下
/etc/logrotate.d/vsftpd.            vsftpd的日志文件 
/etc/pam.d/vsftpd                    PAM认证文件 
/etc/rc.d/init.d/vsftpd              启动脚本 
/etc/vsftpd                          vsftpd的配置文件存放的目录 
/etc/vsftpd/ftpusers                禁止使用vsftpd的用户列表文件 
/etc/vsftpd/user_list                禁止或允许使用vsftpd的用户列表文件 
/etc/vsftpd/vsftpd.conf              主配置文件 
/etc/vsftpd/vsftpd_conf_migrate.sh  vsftpd操作的一些变量和设置 
/usr/sbin/vsftpd                    vsftpd的主程序

FTP安全设置

1.为了安全应该禁止匿名用户的登录:将配置文件的anonymous_enable参数设为NO,屏蔽匿名用户上传,创建,删除的功能

代码语言:javascript
复制
#vi  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
#anon_upload_enable=YES      上传 
#anon_mkdir_write_enable=YES    创建 
#anon_other_write_enable=YES    删除 
#service vsftpd restart    //重启FTP服务器

2.为加强安全设置:限制系统用户锁定在家目录:

代码语言:javascript
复制
#vi  /etc/vsftpd/vsftpd.conf 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list  //把需要限制的用户加入/etc/vsftpd/chroot_list即可

3.限制其他系统用户不能登录ftp:

代码语言:javascript
复制
#cat /etc/vsftpd/ftpusers   //ftpusers是禁止使用FTP用户列表。
#echo "uuu" >>/etc/vsftpd/ftpusers  此时viong不能登录ftp  //这样uuu用户将不能使用FTP

4.使用FTP的配置文件/etc/vsftpd/user_list来控制只有那些用户可以登录FTP:

代码语言:javascript
复制
/etc/vsftpd/user_list 用于存放哪些用户才能登录系统: 
#vi /etc/vsftpd/vsftpd.conf 
#在userlist_enable=YES 的后面添加 
userlist_deny=NO 
userlist_file=/etc/vsftpd/user_list

5.搭建支持SSL加密传输的vsftpd:

首先检查vsftpd软件是否支持SSL:

代码语言:javascript
复制
#ldd /usr/sbin/vsftpd |grep libssl
libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)   ==说明此版本支持
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem   //生成vsftpd.pem证书

#vi /etc/vsftpd/vsftpd.conf //设置主配置文件参数
ssl_enable=YES //是否启用 SSL,默认为no
allow_anon_ssl=NO //是否允许匿名用户使用SSL,默认为no
force_local_data_ssl=YES //非匿名用户传输数据时是否加密,默认为yes
force_local_logins_ssl=YES //非匿名用户登陆时是否加密,默认为yes
ssl_tlsv1=YES //是否激活tls v1加密,默认yes
ssl_sslv2=YES //是否激活sslv2加密,默认no
ssl_sslv3=YES //是否激活sslv3加密,默认no
rsa_cert_file=/etc/vsftpd/vsftpd.pem //rsa证书的位置