ftp数据以明文方式来进行传输,使用tcp协议
有两种工作模式:
主动模式:使用21号端口来进行传输控制,使用20号端口来进行数据连接。
客户端通过服务器的21号端口来连接上服务器,并告知自己打开的数据连接的端口(通常是一个大于1024的端口),当有数据传输需求的时候,服务器会使用自己的
20号端口主动去连接客户端的相应端口。
被动模式:使用21号端口来进行传输控制,使用随机端口来进行数据连接
客户端通过服务器的21号端口来连接上服务器,服务器会告知客户端自己打开的数据连接的端口,当有数据传输需求的时候,客户端会使用一个随机端口(通常大于1024)
去连接服务器响应的数据连接端口。
ftp的主动模式和被动模式主要在进行防火墙的设置时需要考虑一下。

ftp中的用户:
1.系统实体账户:这些账户默认登录的家目录是自己的home目录,并且可以任意切换目录,如果要使用系统帐号作为ftp帐号,最好让将这些用户禁锢在自己的家目录中,并
且设置这些用户的shell为/sbin/nologin
2.匿名用户:一般就给下载权限即可,默认登录后的主目录在/var/ftp
3.虚拟账户:相对比较安全这些用户都不是系统账户,只具有对ftp的相关操作权限,可以自定义用户主目录

主要的配置文件
主配置文件/etc/vsftpd/vsftpd.conf
/etc/vsftpd/ftpusers 这个文件中的用户都不允许登录系统,在/etc/pam.d/vsftpd文件中定义的,里面一行一个帐号
/etc/vsftpd/user_list 这个是与配置文件中的userlist_enable和userlist_deny配合起来使用的,起到允许或者拒绝某别用户登录ftp,一行一个帐号
/etc/vsftpd/chroot_list 这个文件默认不存在需要手动建立,起到禁锢系统账户家目录的作用
比较严格的chroot环境的设定
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list 不受chroot限制的用户放在此文件中

具体的chroot以及ftpusers和user_list的使用比较简单这里主要介绍基于ssl的ftp以及基于虚拟用户的ftp。
1.基于SSL的ftp
1、首先自己建立一个CA
  cd /etc/pki/CA
  openssl genrsa 2048 > private/cakey.pem
  chmod 600 private/cakey.pem
  然后给CA自己制作一个证书
  vi /etc/pki/tls/openssl.cnf
  找到[CA_defualt]把下面的目录改为:
  dir = /etc/pki/CA改成绝对路径
  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
2、给ftp服务颁发证书
  cd /etc/pki/CA
  mkdri certs crl newcerts
  touch serial index.txt
  echo 01 > serial
  cd /etc/vsftpd/
  mkdir ssl用来存放证书,cd ssl
  自己生成一个证书
  openssl genrsa 2048 > ftp.key
  chmod 600 ftp.key
  向CA生成一个证书办法请求
  openssl req -new -key ftp.key -out ftp.csr
  为此httpd服务器颁发证书
  openssl ca -in ftp.csr -out ftp.crt -days 3650 此时ftp.csr文件就没用了,可以删除
3、测试

在windows下我这里使用flashfxp测试,新建连接如下:

2.使用虚拟账户
yum install db4-utils这个软件包
1、在/etc/vsftpd目录下面建立一个用户列表
vi vsuser.list在这个文件中一行写用户名一行写密码
db_load -T -t hash -f vsuser.list   vsuser.db 将用户认证文件转换为认证数据库
更改一下文件权限只有root用户可以读写
chmod 600 /etc/vsftpd/vsuser.*
mkdir /var/ftproot 为虚拟用户创建一个家目录
useradd -d /var/ftproot -s /sbin/nologin virtual 创建一个系统用户来映射虚拟用户,登录时候所有虚拟用户是以这个系统用户的身份来登录的
chmod 755 /var/ftproot 设置虚拟用户家目录的权限
建立支持虚拟用户的PAM认证文件vi /etc/pam.d/vsftpd.vu,此文件不存在手动建立即可
#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vsuser
account    required     pam_userdb.so db=/etc/vsftpd/vsuser
2、在vsftpd.conf文件中添加对虚拟用户的支持
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
3、为虚拟用户单独设置权限

在vsftpd.conf文件中添加用户配置目录支持user_config_dir=/etc/vsftpd/vsuser_dir
配置文件名与用户名同名
mkdir /etc/vsftpd/vsuser_dir
vi /etc/vsftpd/vsuser_dir/tom为tom用户设置单独的权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
然后重启测试一下,看看虚拟用户是否能够登录了。

转载于:https://blog.51cto.com/lymrg/641008

构建安全的ftp服务器相关推荐

  1. linux搭建ftp修改域名访问,linux下构建建设完美FTP服务器

    关键字:ubuntu linux Apache2 PHP5 Pure-FTPD pureftpd MySQL5 linux下构建建设完美FTP服务器,可管理,WEB管理,管理界面. ========= ...

  2. FTP服务器构建与维护,ftp服务器的搭建与三种访问途径

    FTP服务器的搭建与三种访问途径 FTP服务介绍 FTP服务(File Transfer Protocol,文件传输协议)是典型的C/S结构 的应用层协议,需要由服务端软件,客户端软件两部分共同实 现 ...

  3. 搭建文件共享服务器 实验报告,ftp服务器搭建实验报告.doc

    ftp服务器搭建实验报告 计算机科学与技术系 实 验 报 告 课程名称:计 算 机 网 络 实验名称:ftp服务器的搭建 姓名: 王欢 学号: 124077031045 日期:2014.11.21 地 ...

  4. 用Linux构建高效FTP服务器(2)

    快速构建FTP服务器 FTP服务器实现的基本功能是上传下载,下面就分几个步骤来搭建一个可以实现下载功能的简易FTP服务器. 1.安装FTP服务器 如果在安装系统时没有选择安装FTP服务器,可以通过Re ...

  5. ftp服务器 无线路由器,用无线路由器构建FTP服务器 快乐大家分享

    ftp(文件传输协议)诞生之后,便迅速地得到了推广和应用,而依据此协议提供服务的ftp服务器在运行时,用户可以通过Internet连接到服务器上下载文件,同时将自己的文件上传到ftp服务器上,大大地方 ...

  6. linux ftp服务器构建

    今天有点心血来潮,突然有了个构建ftp服务器的想法,搞了小两个小时,基本上算完工了,其实个人认为没有什么大用,不过就是在网上可以通过浏览器下载文件而已.下面主要介绍一下具体搭建的过程. 步骤一: 安装 ...

  7. linux系统构架ftp,用Linux系统构建高效FTP服务器

    在众多网络应用中,FTP(文件传输协议)有着非常主要 的地位.Internet中一个十分主要 的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中.与大多数Internet服务一样,FT ...

  8. win7系统ftp服务器构建,win7系统构建ftp服务器

    win7系统构建ftp服务器 内容精选 换一换 本文操作介绍使用Linux操作系统的HECS(云耀云服务器)安装宝塔面板.宝塔面板是一款使用方便.功能强大且终身免费的服务器管理软件,支持Linux与W ...

  9. 无线路由器文件服务器,用无线路由器构建FTP服务器

    FTP(文件传输协议)诞生之后,便迅速地得到了推广和应用,而依据此协议提供服务的ftp服务器在运行时,用户可以通过Internet连接到服务器上下载文件,同时将自己的文件上传到ftp服务器上,大大地方 ...

最新文章

  1. gsoap写一个c++ webservice
  2. 虚拟IO服务器,虚拟IO服务器VIOS概念.doc
  3. Nginx负载均衡实现之用户手动选择与DNS轮询
  4. php运算符优先级题目,详解php运算符优先级
  5. python免费下载及安装_Python的下载及安装
  6. 二叉树——求先序排列(洛谷 P1030)
  7. 2017.9.12 claris的剑 失败总结
  8. 【Docker】Error: No such image: gotok8s/kube-proxy:v1.16.5
  9. Bugku 社工——初步收集
  10. C语言中的各种百分号都代表什么意思
  11. 搭建公众号微商城+小程序微商城 企业商城系统一条龙 拖拽可视化装修模板
  12. 又到年底冲刺时,华为小米竞相降价促销
  13. b、B、kb、kB单位
  14. 修改域服务器同步时间,配置Windows Server 2008 R2 域控制器的时间同步
  15. 【34. 完全背包】
  16. 【STM32】定时器TIM触发ADC采样,DMA搬运到内存(超详细讲解)
  17. 音频codec调试心得
  18. java角谷_java实现递归设计——数鸭子和角谷定理
  19. ByteBuff常用方法,使用
  20. 局域网控制软件的选择成为局域网是否安全的衡量标准

热门文章

  1. PHP入门-数组的定义与使用
  2. 安卓股票K线图绘制三方库
  3. linux u盘无损分区,科技常识:linux如何无损调整分区大小
  4. matlab截取字符串
  5. 利用时间修改工具进行二次开发
  6. 关于快速排序和归并排序的时间复杂度分析
  7. 归并排序时间复杂度----主定理
  8. 结合Free to Earn和Play to Earn,Monsterra在GameFi领域的尝试
  9. Go程序性能分析方法(一文全解)
  10. wap的全面解析!!