Linux下ftp服务搭建之小试牛刀

之前分享了ftp实现原理,但没有在linux下搭建过ftp server。最近有个迫切需求:在linux中下载有些安装包较慢,所以想将电脑下载的安装包通过ftp方式传到虚机内部!催生了此次实践:在Ubuntu操作系统虚机中安装一个ftp服务(client和server)。

你可以学到四点:0) ftp的安装;1) ftp各个使用场景;2) ftp各个场景的配置;3) 对ftp协议更加清楚。

ftp版本安装及安装后检查

安装部分可以参考之前一篇文章Ubuntu下安装源设置和服务安装命令apt-get以及apt安装版本检查

1. 先获取apt-get的安装源:

Ubuntu安装源apt-get方法

2. 然后安装sftp版本:

Ubuntu下apt-get安装服务

3. 安装后,ftp版本检查:

apt list | grep vsftp

检查ftp版本号

4. 安装后,ftp服务/进程和端口检查:

ftp服务/进程/端口检查

通过查看ftp服务或进程可以找到ftp服务的主程序目录/usr/sbin/vsftpd,ftp主配置文件/etc/vsftpd.conf。启动脚本的目录为/etc/init.d/vsftpd。

主配置文件/etc/vsftpd.conf默认配置如图

vsftpd.conf默认配置

可从配置文件中获取到如下信息依次是:ftp服务默认不监听IP V4,监听的是IP V6,不允许匿名登录,允许本地用户登录, 切换目录时显示目录下.message的内容,用户使用本地时间,允许ftp日志打印,默认控制连接端口为21,主动方式下数据连接时ftp服务端的端口为20,ssl加密不开启即ftp非sftp。

ftp常用的场景

根据一个主机上的ftp服务个数,ftp常用的场景大致分为单个ftp服务和多个ftp服务。根据是否加密又分为ftp和sftp。场景列表如下:

1. ftp服务:默认21控制连接端口配置,主动模式下服务端的数据连接端口固定为20,被动模式下数据连接端口由协议栈随机分配端口范围,只有下载权限

2. ftp服务:控制连接端口改为10021,主动模式下服务端的数据连接端口不为20由协议栈随机分配端口,被动模式下服务端的数据连接端口由ftp程序随机分配端口范围,有写权限(创建目录文件和上传文件)

3. sftp服务:控制连接端口改为10022,主动模式下服务端的数据连接端口为10020,被动模式下服务端的数据连接端口由ftp程序随机分配端口范围,有读写权限,最多有几个客户端同时连接,同一个ip允许多少个连接。

4.  一个主机上运行多个ftp应用

单个ftp服务的参数配置

通用处理:修改完vsftpd.conf,需要重启ftp服务,使配置生效。

1. 场景1的ftp主配置文件,如图:

场景1的配置文件

ftp服务监听IP V4,不允许匿名登录,允许本地用户登录, 不配置则默认控制连接端口为21,主动方式下ftp服务端进行数据连接时端口为20,ssl加密不开启即ftp非sftp,默认不配置pasv_enable=YES开启被动模式。

1) chroot_local_user=yes #限制所有用户都在家目录

2) chroot_list_enable=YES #调用限制在家目录的用户名单

3) chroot_list_file=/etc/vsftpd/chroot_list #限制在家目录的用户名单所在路径

注释:2)和3)配置时,vsftpd.chroot_list文件中用户限制在自己目录(一个账户写一行)

1) 2)和3)配置时所有的ftp用户都限制在自己的目录,vsftpd.chroot_list文件中用户反而不受限制在自己目录,FAQ1中限制自己目录的用户不具有可写权限。

4) xferlog_enable=YES #激活上传/下载日志

5)xferlog_file=/var/log/vsftpd.log#日志路径

6)xferlog_std_format=YES #标准日志格式

7) connect_from_port_20=YES #主动方式数据连接ftp客户端时ftp服务端的端口

8) data_connection_timeout=120 #数据连接空闲超时,单位秒

9) write_enable=YES #本地用户的写权限

10) local_umask=022 #FTP的本地文件权限(文件所有者有可写权限),可读r=4, 可写w=2, 可执行x=1,三个组依次为文件所有者/文件所属组/其他的权限。

创建用户组和用户

groupadd ftpuser #创建用户组ftpuser

mkdir /home/remote1

useradd -g ftpuser remote1 #将用户remote1加到用户组ftpuser

passwd remote1 #设置用户remote1

# 输入新密码

vi /etc/passwd  #文件中在remote1用户记录行添加/sbin/nologin

remote1:x:1001:1001::/home/remote1:/sbin/nologin

vi /etc/shells  #在最末尾添加一行

/sbin/nologin

chown -R remote1:ftpuser /home/remote1 #设置ftp目录的文件所有者和文件所属组

chmod 500 /home/remote1 #设置ftp目录所有者的可读可执行权限,见FAQ1。

ftp登录简单测试

ftp登录输入用户名和密码,下载文件成功(可读权限)但上传创建文件失败(可写权限)!只能到限制的目录内。

ftp登录测试

设置ftp客户端为被动模式,然后登录ftp,查看报文,控制连接服务端端口21,进入pasv被动模式并告知客户端:服务端数据连接的端口为61120

被动模式下报文

设置ftp客户端主被动模式,然后登录ftp,查看报文,控制连接服务端端口21(抓包时端口改为10021),port告知告知服务端:客户端的数据连接端口56717,服务端用20端口进行数据连接客户端

主动模式下报文

2. 场景2的ftp主配置文件,如图:

场景2的配置文件

1) connect_from_port_20=NO #FTP PORT主动模式数据传输时不使用20端口。

2) listen_port=10021 #控制连接服务端端口

3) pasv_enable=YES # 开启被动模式

4) pasv_min_port=5000#被动模式服务端数据连接的最小端口

5) pasv_max_port=5005 #被动模式服务端数据连接的最大端口

6) chroot_local_user=NO #不限制所有用户都在自己的家目录

创建用户和用户组同场景1

设置ftp目录的文件所有者和文件所属组,设置ftp目录所有者的可读可写可执行权限。

设置ftp目录属性

ftp登录简单测试

ftp登录输入用户名和密码,下载文件成功(可读权限)和上传创建文件成功(可写权限)!并没有限制在自己的目录内。

场景2 ftp可读可写权限测试

设置ftp客户端为被动模式,然后登录ftp,查看报文,控制连接服务端端口10021,进入pasv被动模式并告知客户端:服务端数据连接的端口为50004(在指定范围内)

场景2被动模式

设置ftp客户端主被动模式,然后登录ftp,查看报文,控制连接服务端端口10021,port告知告知服务端:客户端的数据连接端口56717,服务端没有用20端口进行数据连接客户端。

FAQ篇

FAQ1:场景1若chmod 700 /home/remote1,报错“500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

解决方法1: 命令chmod a-w /home/remote1 去除用户主目录的写权限。

方法2:在vsftpd的配置文件中增加下列两项中的一项:allow_writeable_chroot=YES

FAQ2: 场景2主动模式下ftp服务端主动连接ftp客户端失败,Windows主机的防火墙将相应端口屏蔽

解决方法:在Windows下将ftp客户端程序允许通过Windows防火墙进行通信。

允许ftp客户端通过防火墙

本期实践了ftp两个场景的配置和测试,收获颇丰!你有收获嘛?

纸上得来终觉浅,觉知此事要躬行!

要知sftp各个场景如何搭建和主机上同时运行多个ftp应用,请下两回分享!

sftp服务搭建涉及几个问题:sftp如何加密配置的,ftp客户端和服务端如何安全交互。

多个ftp运行涉及几个问题:ftp软件安装几次,ftp进程目录修改,ftp参数配置。

参考资料:

ftp核心配置参数

Debain下ftp参数配置

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容