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. Chapter 3 Phenomenon——23
  2. suse docker 安装mysql_Docker(三):Docker安装MySQL
  3. 五、队列(Queue)
  4. Windows平台下安装PhoenixSuit要点
  5. 用递归合并两个排序的链表
  6. 牛客 - 骚区间(线段树+思维)
  7. nginx配置文件nginx.conf
  8. C++ C# 中作用域限定符
  9. 《推理的迷宫》读书笔记之一
  10. 机器学习之网格搜索(GridSearch)及参数说明,实例演示
  11. android 随身无线网卡,让小锐WiFi支持USB无线网卡/随身WiFi(附各种“随身wifi”芯片型号)...
  12. 多媒体计算机的扫描仪属于感觉媒体吗,多媒体计算机中的扫描仪属于感觉媒体...
  13. H3C交换机 access端口配置
  14. 汇编语言学习笔记(续)
  15. 每日英语(2021-2-27)
  16. Xilinx SDx 2018.3安装
  17. vim/Gvim安装插件
  18. 移动端H5页面生成图片解决方案
  19. [转载]打工辛酸路:我是一朵飘零的花之61
  20. python-selenium使用 chrome chromedrive版本问题

热门文章

  1. python动画精灵梦叶罗丽_动画《精灵梦叶罗丽》被爆抄袭,冰公主相似度高,连101都抄袭...
  2. Linux远程终端连接
  3. STM32低功耗停止模式 以及简述判断中断的两种方式
  4. 这可能是最全的在Ubunto安装idea,maven以及进行Wordcount实例的一个博客了
  5. 用UNetBootin制作Linux启动盘
  6. QQ号码在线状态代码
  7. 巧删配置文件解决阿里旺旺标签栏无显示问题
  8. 千纸鹤折纸css3动画网页代码
  9. C#如何使用log4net记录本地日志
  10. 基于Nginx实现简单的分布式部署