让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

Linux下若何部署FTP管事器

发布日期:2022-05-15 14:53    点击次数:140

FTP 是 File Transfer Protocol 的缩写,即文献传输契约,它通过收罗在管事器和客户端之间传输文献,当今也曾成为一种平素使用的范例器具

vsftpd 是 very secure ftp daemon 的缩写,它是 Linux 上使用最受宽贷、使用最平素的 FTP 管事器之一,它具有安全,速率快,郑重的秉性,许多伏击的 FTP 站点比如 ftp.gnu.org、ftp.freebsd.org 都是使用 vsftpd 作为管事器的

现时,FTP管事在日常责任中使用得也挺多,每次管事器版块更新都需要先打包,然后上传到线上的FTP管事器上,再从FTP管事器高下载管事器包到线上机器,进行MD5校验,然后就不错更新线上管事器了

施展

在装置 vsftpd 之前,有几个伏击的场地需要施展下

责任现象

管事器使用两个端口和客户端通讯,一个是敕令端口,也叫轨则端口,默许是 21, 用于敕令的传输 ,一个是数据端口,默许是 20 ,用于数据的传输

主动现象

客户端向FTP管事器发送端口信息,由管事器主动连结该端口

经过:客户端和FTP管事器的敕令端口(21)莳植TCP连结,当需要传输数据时,客户端新启动一个用于数据传输的端口,并在敕令端口的连结上用 PORT 敕令告诉管事器该端标语,管事器与该端口莳植TCP连结,连结得胜之后,客户端运转传输数据

被迫现象

FTP管事器开启并发送端口信息给客户端,由客户端连结该端口,管事器被迫经受连结

经过:客户端和FTP管事器的敕令端口(21)莳植TCP连结,当需要传输数据时,管事器侦听一个用于数据传输的端口,并在敕令端口的连结上用 PASV 敕令告诉客户端该端标语,客户端与该端口莳植TCP连结,连结得胜之后,客户端运转传输数据

提议:

1、大多半FTP客户端都在局域网中,莫得独处的公网IP地址,且有防火墙防止,主动现象下FTP管事器得胜连结到客户端比拟认真。因此,如无罕见需求,都是将FTP管事器配置为被迫现象,本文背面的FTP管事器配置亦然以被迫现象为例的

2、被迫现象下,敕令端口和数据端口都是在FTP管事器端开启,也都不错通过启动配置来修改,由于默许的端口是公开的,安全性低,是以本体装置的技术都会修改默许端口

用户认证现象 匿名用户现象

任何人无需密码考证就不错胜利登录到FTP管事器。这种现象最不安全,一般只用来保存不伏击的公开文献,不推选在坐蓐环境中使用

腹地用户现象

通过Linux系统腹地账号进行考证的现象,相较于匿名用户现象更安全。

臆造用户现象

FTP管事器的独灵验户。臆造用户只可看望Linux系统为其提供的FTP管事,而不可看望Linux系统的其它资源,进一步增强了FTP管事器的安全性。

匿名用户现象一般用于不伏击的于公开文献,何况只提供下载管事,也即是说,用户只可下载,不可有其他操作,腹地用户现象通过配置锁定目次、修改敕令端口和数据端口 不错进一步增强安全性,本文背面的配置是以该现象为例的

装置

装置前不错使用底下的敕令检验是否已装置

vsftpd -v 

如果未装置会有如下教唆

[root@localhost ~]$ vsftpd -v -bash: vsftpd: 未找到敕令 

装置 vsftpd

yum install vsftpd 

装置完成后,推论 vsftpd -v 敕令,如果输出书本号,暗意装置得胜

[root@localhost ~]# vsftpd -v vsftpd: version 3.0.2 
配置管事器

装置完成之后,默许的配置位于 /etc/vsftpd/vsftpd.conf, 如果找不到默出嫁置在那处,不错使用底下的敕令查找下,其中 /etc/vsftpd 目次即是存放配置的场地

[root@localhost ~]# whereis vsftpd  vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz 

配置的状貌相对马虎,每一滑都是谛视概况选项,谛视以 # 号发轫,选项的状貌是 option=value 的状貌,每个选项占一滑,option、= 以及 value 之间不允许出现空格

vsftpd 对每个配置的选项都成立了一个默许值,管事器启动之后,在 vsftpd.conf 中配置的选项会袒护管事器中的默许值

vsftpd 可配置的选项许多,底下按照类别把常用的配置项分红了 看望权限、锁定看望目次、末端用户登录、修改端口、日记配置、其他配置 几组, 每个配置项前都加多了精细的施展

配置项分组主如果为了回来施展每一组配置项的作用,本体配置的过程中,把通盘组的配置项添加到 vsftp.conf 中即可

看望权限
#是否允许匿名登录,默许允许,如果允许,用户名 ftp 和 anonymous 都会被当做匿名登录 #为了安全,一般不允许匿名登录 anonymous_enable=NO  #是否允许匿名上传,默许不允许,如果允许 write_enable 选项需要成立为 YES #为了安全,一般不允许 anon_upload_enable=NO  #是否允许腹地用户登录,默许不允许,如果允许,在 ``` /etc/passwd``` 中的用户都不错登录 FTP 管事器 #如果不予许匿名登录的话,这个选项需要成立为允许 local_enable=YES  #是否允许在FTP管事器上写入, 默许不允许,如果有上传文献、删除文献等需求,一般都是开启的 write_enable=YES  #成立写入管事器文献的权限掩码值,如果值是八进制需要以 0 发轫,不然会手脚十进制 #值为 022,能随和大部分FTP的需求 local_umask=022 
锁定看望目次
#默许为 NO, 如果成立为 YES,暗意用户通过FTP客户端登录之后 #只可在FTP管事器指定的目次中,不允许切出目次, chroot_local_user=YES  #用户名插入到腹地 FTP 主目次中 user_sub_token=$USER  #界说用户 FTP 主目次,用户登录得胜之后,vsftpd 管事器会切换到此目次, #此时 FTP 客户端会位于此目次中,后续的上传以及下载都是针对这个目次的 local_root=/home/$USER/ftp 

把登录的用户锁定在指定的目次中,幸免用户看望不应该看望的目次,这里咱们成立成只允许看望我方的 home 目次中的 ftp 目次,举例:新添加一个用户 testuser 有益用于上传下载, testuser 通过 FTP 客户端得胜登录后,会自动切换到 /home/testuser/ftp 目次,何况不允许切出该目次

隆重:用户上传和下载都是在末端的目次中,是以一般都是把锁定目次成立到剩余空间比拟大的磁盘中

末端用户登录
#如果成立为 YES ,vsftpd 将会从 userlist_file 选项指定的文献读取用户列表 userlist_enable=YES  #成立用户列表配置文献, 如果 /etc/vsftpd/user_list 不存在需要手工创建 userlist_file=/etc/vsftpd/user_list  #此选项检验 userlist_enable 选项,当 userlist_enable 为 YES 时 #如果 userlist_deny 成立为 NO , 暗意只允许 userlist_file 中的用户登录 #如果 userlist_deny 成立为 YES, 暗意不容 userlist_file 中的用户登录,允许其他用户登录 userlist_deny=NO 
修改端口
#如果启用,vsftpd 将在独处现象下运行,vsftpd 本人将负责侦听和惩处传入的连结 listen=NO  # 跟 listen 选型近似,然则此选项是侦听在 IPV6 上的 socket # 而 listen 是 IPV4, 此选项和 listen 是互斥的,不可同期成立为 YES listen_ipv6=YES  #管事器侦听端口,亦然敕令端口, 默许是21,修改之后, 防火墙需要做相应的调遣 #同期 FTP 客户端登录的技术需要指定端标语 #为了增强安全性,配置的技术一般都会修改 listen_port=48888  #开启被迫现象 pasv_enable=YES #被迫现象下,管事器的地址,默许是内网地址 #如果在云管事器上部署,需要修改成公网IP pasv_address=192.168.70.20  #成立被迫现象下,莳植数据传输可使用的端口限制的最小值。 #提议把端口限制成立在一段比拟高的限制内,举例50000~50010,有助于升迁看望FTP管事器的安全性 pasv_min_port=50000  #成立被迫现象下,莳植数据传输可使用的端口限制的最大值 pasv_max_port=50010 
日记配置
#是否记载上传下载日记,默许是不记载,如果成立为记载 #默许日记文献位于 /var/log/vsftpd.log, 如果配置了 vsftpd_log_file 选项,会袒护默许日记文献 xferlog_enable=YES  #记载上传下载的日记 xferlog_file=/var/log/xferlog  #是否按照范例状貌记载日记 xferlog_std_format=YES 
其他配置
# vsftpd 使用的 PAM 管事名字 pam_service_name=vsftpd # tcp_wrappers=YES 

这两个配置使用默许生成的选项即可,无须做任何修改

成立防火墙

如果你部署的FTP管事器的机器上防火墙是关闭景况的话,不错跳过此状貌,概况你不想成立防火墙的话,不错通过 systemctl stop firewalld 敕令关闭防火墙,这么也不错忽略此状貌

上头配置中管事器侦听端口(也叫敕令端口) listen_port 选项成立的是 48888,数据端口的限制是 50000-50010, 是以防火墙需要敞开这些端口,推论以下敕令即可成立

[root@localhost ~]# firewall-cmd --zone=public --add-port=48888/tcp --permanent success [root@localhost ~]# firewall-cmd --zone=public --add-port=50000-50010/tcp --permanent success 

防火墙成立好以后,推论底下的敕令重启防火墙管事

[root@localhost ~]# systemctl restart firewalld 

终末,检讨下端口是否得胜敞开

[root@localhost ~]# firewall-cmd --list-port          50000-50010/tcp 48888/tcp 

从效果不错看出,防火墙也曾敞开了 48888、50000-50099 端口

启动管事器

配置完 /etc/vsftpd/vsftpd.conf ,成立好防火墙之后,推论底下的敕令启动管事器

systemctl start vsftpd

启动之后,查询管事器景况,证据管事器是否启动得胜

[root@localhost ~]# systemctl status vsftpd                     ● vsftpd.service - Vsftpd ftp daemon    Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)    Active: active (running) since Fri 2021-09-1 20:21:00 CST; 3 days ago  Main PID: 94916 (vsftpd)    CGroup: /system.slice/vsftpd.service            └─94916 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf  Sep 1 20:21:00 localhost systemd[1]: Starting Vsftpd ftp daemon... Sep 1 20:21:00 localhost systemd[1]: Started Vsftpd ftp daemon. 

将管事器成立成开机启动

systemctl enable vsftpd 

底下的敕令不错证据管事器的敕令端口是否开启( 配置的是 : 48888 )

[root@localhost ~]# netstat -antup | grep vsftpd tcp6       0      0 :::48888                :::*                    LISTEN      20501/vsftpd         [root@localhost ~]# 
新建FTP用户

新建用户 mytest, 并成立密码

[root@localhost ~]# useradd mytest [root@localhost ~]# passwd mytest 

新建 FTP 目次,并修改目次权限

[root@cghost21 home]# mkdir -p /home/mytest/ftp/files [root@cghost21 home]# chmod -R 500 /home/mytest/ [root@cghost21 home]# chmod -R 700 /home/mytest/ftp/files 

隆重:/home/mytest/ftp 是 mytest 用户的锁定目次,mytest 登录之后,只可呆在此目次以及此目次的子目次中,不允许切换到其他目次

"/home/mytest/ftp/files" 目次是本体的上传下载的目次,是以需要有可读写和可推论权限

终末,还需要把用户名加入到FTP管事器允许登录的用户列表中,也即 /etc/vsftpd/vsftpd.conf 中 userlist_file 选项对应的文献 /etc/vsftpd/user_list中,如果 user_list 不存在,需要手工创建并把 mytest添加进去

测试

管事器一齐搭建好之后,需要进行测试,这里我准备的 FTP管事器的IP是 192.168.70.20, FTP客户端机器的IP是 192.168.70.11

参加FTP管事器的 /home/mytest/ftp/files 目次, 新建一个 a.txt 测试文献

[root@localhost files]# pwd /home/mytest/ftp/files [root@localhost files]# echo "ftp server..." >> a.txt [root@localhost files]# 

参加FTP客户端机器的 /home/wl/temp目次,新建一个 test.txt 测试文献

[root@localhost temp]# echo "ftp test..." >> test.txt [root@localhost temp]# cat test.txt  ftp test... 

测试上传下载需在FTP客户端机器上装置 FTP 客户端, 推论以下敕令进行装置,如已装置,可忽略

yum install ftp 

推论底下一系列的敕令,进行测试

1、登录FTP管事器敕令,状貌:ftp 管事器ID 敕令端口  2、输入登请托户名  3、输入登录密码  4、登录得胜之后,此时位于FTP管事器的 /home/mytest/ftp 目次中,推论 ls 敕令之后,  效果裸露现时目次还有一个 files 的子目次  5、推论 pwd 敕令检讨现时所在目次,FTP管事器上的 /home/mytest/ftp 目次即是 FTP 的根目次  6、推论 cd files 敕令参加 files 目次,也即FTP管事器上的 /home/mytest/ftp/files 目次,  然后推论 ls 敕令检讨现时目次的文献,不错看到 FTP管事器上的测试文献 a.txt  7、推论 put test.txt 敕令,把FTP客户端机器上现时目次( /home/wl/temp ) 中的 test.txt 文献  上传到管事器的 /home/mytest/ftp/files 目次中  8、推论 get a.txt 敕令,把FTP管事器上的 /home/mytest/ftp/files/a.txt 文献下载到 FTP客户端机器确现时目次( /home/wl/temp ) 中  9、上传下载测试完成之后,推论 exit 敕令,退出 FTP 敕令行  10、终末推论 cat a.txt 敕令检讨从 FTP管事器高下载的测试文献的内容,从效果不错看出,和管事器上的测试文献内容是相同的 
小结

本文先容了 Linux 下FTP管事器 vsftpd 的装置、配置、测试等通盘这个词状貌以及隆重事项,文中仅仅对 vsftpd 的常用配置项做了施展,更多的配置项请参考官网文档