来源:Linux社区  作者:luzhi1024

详解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
#rpm -qa vsftpd 查看是否已经安装

#yum install -y vsftpd

#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的主程序 
其他一些说明文档和手册文件略! 
/var/ftp                            匿名用户主目录 
/var/ftp/pub                        匿名用户的下载目录

#service vsftpd start 
#chkconfig --level vsftpd 
#chkconfig --level 2345 vsftpd on

2 匿名用户的登录名:ftp(anonymous)  密码空 ,登录的目录为/var/ftp
 用匿名用户登录的时候默认是只有下载的权限,没有上传,创建和删除的权限:

#vim  /etc/vsftpd/vsftpd.conf  
anon_upload_enable=YES      上传 
anon_mkdir_write_enable=YES    创建 
anon_other_write_enable=YES    删除 
#service vsftpd restart

为了安全应该禁止匿名用户的登录:
123456 #vim  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
#anon_upload_enable=YES      上传 
#anon_mkdir_write_enable=YES    创建 
#anon_other_write_enable=YES    删除 
#service vsftpd restart

3 创建一个直接登录系统用户来登录ftp:
#useradd -s /sbin/nologin viong 
#passwd viong

用户具有 上传 创建 下载 切换目录
------------------------------------------------------------------
4 加强vsftp安全设置:
限制系统用户锁定在家目录:
#vim  /etc/vsftpd/vsftpd.conf 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list  限制更多的系统用户,把需要限制的用户加入/etc/vsftpd/chroot_list中即可 
#touch /etc/vsftpd/chroot_list 
#cut -d: -f 1 /etc/passwd >>/etc/vsftpd/chroot_list 将本地用户都加入到chroot_list

限制重要系统用户不能登录ftp:
#cat /etc/vsftpd/ftpusers  默认已经添加了系统中一些比较重要的用户 
#echo "viong" >>/etc/vsftpd/ftpusers  此时viong不能登录ftp

利用ftp用户策略允许登录ftp的系统用户:
/etc/vsftpd/user_list 只有在这个文件中的用户才能登录系统: 
#vim /etc/vsftpd/vsftpd.conf 
#在userlist_enable=YES 的后面添加 
userlist_deny=NO 
userlist_file=/etc/vsftpd/user_list

设置登录ftp目标ip地址:用iptables设置

---------------------------------------  
搭建支持SSL加密传输的vsftpd:
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem    生成证书 
#vim /etc/vsftpd/vsftpd.conf 
ssl_enable=YES 
allow_anon_ssl=NO 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 
ssl_tlsv1=YES 
ssl_sslv2=YES 
ssl_sslv3=YES 
rsa_cert_file=/etc/vsftpd/vsftpd.pem

下面是ssl参数一些定义,根据自己需求去修改:

ssl_enable=yes/no            //是否启用 SSL,默认为no
allow_anon_ssl=yes/no        //是否允许匿名用户使用SSL,默认为no
rsa_cert_file=/path/to/file      //rsa证书的位置
dsa_cert_file=/path/to/file      //dsa证书的位置
force_local_logins_ssl=yes/no    //非匿名用户登陆时是否加密,默认为yes
force_local_data_ssl=yes/no    //非匿名用户传输数据时是否加密,默认为yes
force_anon_logins_ssl=yes/no    //匿名用户登录时是否加密,默认为no
force_anon_data_ssl=yes/no    //匿名用户数据传输时是否加密,默认为no
ssl_sslv2=yes/no              //是否激活sslv2加密,默认no
ssl_sslv3=yes/no                //是否激活sslv3加密,默认no
ssl_tlsv1=yes/no                //是否激活tls v1加密,默认yes
ssl_ciphers=加密方法            //默认是DES-CBC3-SHA

#service vsftpd restart

用flashftp连接:
连接类型为:FTP使用公开SSL(验证SSL)
地址:192.168.137.130:21
登录类型:普通
用户:viong  
密码:123

ftp虚拟用户请看:http://www.linuxidc.com/Linux/2015-06/118443.htm

玩转vsftpd服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

CentOS 7安装配置FTP服务器  http://www.linuxidc.com/Linux/2014-11/109233.htm

Ubuntu实用简单的FTP架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设FTP服务器和Apache服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux系统vsftpd源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

openSUSE 13.2/13.1 下安装配置 FTP服务器 vsftpd  http://www.linuxidc.com/Linux/2014-12/110070.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-06/118442.htm

Linux中搭建一个ftp服务器详解的更多相关文章

  1. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  2. linux中搭建公网ftp服务器

    Linux搭建ftp服务器汇总整理 一.检查linux中是否已经安装vsftpd服务端软件 rpm -qa |grep vsftpd 二.卸载linux中的vsftpd服务端软件 rpm -e vsf ...

  3. Linux上构建一个RADIUS服务器详解

    作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息.但是网络设备通常只支持有限的用户管理功能.学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个 ...

  4. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

  5. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  6. Linux中/proc目录下文件详解(转贴)

      转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...

  7. Linux搭建一个FTP服务器

    1.安装vsftp 2.配置vsftpd.conf, vim /etc/vsftpd.conf 下面说说里面比较重要的选项 1 anonymous_enable=NO #不允许匿名用户 2 3 loc ...

  8. 文件服务器:FTP服务器详解

    文件服务器:FTP服务器 数据传输原理 功能简介 文件的传输与管理 不同等级的用户身份:user.guest.anonymous 实体用户.权限较完整 匿名用户.下载资源的能力 命令记录与日志文件记录 ...

  9. linux中iptables配置文件及命令详解详解

    iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconfig/iptables. 1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下 ...

随机推荐

  1. zend studio调试

    XDdebug搞了我一天 先把php.ini的代码发一下 [XDebug] zend_extension = "d:/WAMP/wamp/bin/php/php5.5.12/zend_ext ...

  2. 消息确认机制---confirm异步

    一:介绍 1.异步模式介绍 Channel对象提供ConfirmListener()回调方法只包含deliverTag(当前Channel发出的序列号),我们需要自己为每一个Channel维护一个un ...

  3. CentOS下生成密钥对(公钥、私钥)

    1.公钥.私钥简述: 假设数据传输方A向数据接收方B传输数据(以A为服务器,B为客户端为例).现在B有一对密钥对(公钥和私钥),B将公钥发送给A,A通过公钥加密后将数据传给B,B收到数据后利用手里的私 ...

  4. hdu 5748 Bellovin【最长上升子序列】

    题目链接:https://vjudge.net/contest/148584#problem/A 题目大意: 解题思路:题目要求为:输出与已知序列的每一个元素的f(i)(f(i)的定义如题)相同的字典 ...

  5. codeforces-1111

    https://www.cnblogs.com/31415926535x/p/10397007.html codeforces 537 div2 A 题意就是给你两个字符串,然后如果s,t的对应位上的 ...

  6. go语言学习-常用命令

    前面的文章中记录了安装 golang 和配置开发环境,本文将学习的 go 命令行命令以及使用场景. 查看可用命令 直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要 ...

  7. Python3正则表达式(4)

    正则表示式的子模式 使用()表示一个子模式,括号中的内容作为一个整体出现. (red)+  ==> redred, redredred, 等多个red重复的情况 子模式的扩展语法 案例1 tel ...

  8. JVM调优总结 -Xms -Xmx -Xmn -Xss(转)

    堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...

  9. JavaScript 比较好的建议

    规范JavaScript 编码 1,一个函数体内的变量声明只使用一个var var aaa, bbb, ccc; 2, 保持框架习惯一致性 比如使用jQuery的 $获取DOM ,就不要再去混合使用g ...

  10. spring如何解决单例循环依赖问题?

    更多文章点击--spring源码分析系列 1.spring循环依赖场景2.循环依赖解决方式: 三级缓存 1.spring循环引用场景 循环依赖的产生可能有很多种情况,例如: A的构造方法中依赖了B的实 ...