当前位置: 首页 > news >正文

Linux-FTP服务器搭建

CentOS配置vsftp

1. 准备

  1. 在vmware中安装centos7,网络模式为NAT

  1. 配置centos7的配置文件(etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=yes),保证正常生成ip地址,
  2. 为方便操作,在宿主机使用xshell或其他客户端连接centos

2. 安装vsftp

  1. 检查是否安装vsftp
[root@localhost ~]# vsftpd -v
-bash: vsftpd: 未找到命令
[root@localhost ~]# rpm -q vsftpd
未安装软件包 vsftpd 

  1. 安装vsftp

[root@localhost ~]# yum install vsftpd

  1. 查看vsftp服务状态
[root@localhost ~]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

以上输出说明vsftp服务已安装成功,但没有启动

  1. 启动vsftp服务
[root@localhost ~]# systemctl start vsftpd.service
[root@localhost ~]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 四 2021-08-05 15:04:58 CST; 22s ago
  Process: 1621 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 1622 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─1622 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

8月 05 15:04:58 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
8月 05 15:04:58 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
[root@localhost ~]# 

3. 匿名使用FTP

3.1 匿名登录FTP

  1. 在宿主机中测试连接ftp服务

在地址栏输入:ftp://192.168.114.139/ (censtos虚拟机的IP地址)

出现上图说明连接失败

  1. 原因分析: 因为centos中我们开启了防火墙,连接请求被防火墙阻止。
  2. 解决方案

  • 关闭防火墙,在方法可用在测试环境,生产环境不建议使用
  • 修改防火墙配置
  1. 关闭防火墙再测试

[root@localhost ~]# systemctl stop firewalld.service

在地址栏输入:ftp://192.168.114.139/

出现上图说明连接失败

  1. 原因分析: 因为centos中我们开启了防火墙,连接请求被防火墙阻止。
  2. 解决方案
  • 关闭防火墙,在方法可用在测试环境,生产环境不建议使用
  • 修改防火墙配置
  1. 关闭防火墙再测试

[root@localhost ~]# systemctl stop firewalld.service

在地址栏输入:ftp://192.168.114.139/

注: pub 是vsftp的默认目录,对应censtos中的/var/ftp/pub。

3.2 匿名操作FTP

  1. 此时在pub中创建目录或上传文件会报错:

  1. 原因分析:

1)centos中/var/ftp/pub目录的权限,默认情况下是可读的,但不可写,需要需改权限

2)selinux阻止对操作

3)vsftpd默认情况下允许匿名用户登录,查看文件, 但不允许匿名用户操作文件,或创建目录。

  1. 解决方案:

1)修改/var/ftp/pub目录的权限为777

chmod 777 -R /var/ftp/pub

2)关闭selinux

setenforce 0

上面的这种方式只能临时关闭,如果需要永久关闭需要修改配置文件:

[root@localhost targeted]# vim /etc/selinux/config


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

将 SELINUX=enforcing 改为 SELINUX=disabled,并注释掉SELINUXTYPE=targeted即可, 注意修改SELinux配置后必须重启服务器才能起效。

3)修改vsftpd的配置文件,配置文件所在的目录为:/etc/vsftpd/ 下

#备份原配置文件[root@localhost vsftpd]# mv vsftpd.conf vsftpd.conf.bak
[root@localhost vsftpd]# ls
ftpusers  user_list vsftpd.conf.bak  vsftpd_conf_migrate.sh
#将原配置文件中的注释行去掉,并将内容重定向到vsftpd.conf中
[root@localhost vsftpd]# cat vsftpd.conf.bak | grep -v "#" > vsftpd.conf
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
#查看新生成的配置文件[root@localhost vsftpd]# vim vsftpd.confanonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

在vsftpd.conf中加入如下配置:

anon_upload_enable=YES# 允许匿名用户上传文件anon_mkdir_write_enable=YES  # 允许
创建目录或写入文件anon_other_write_enable=YES  # 允许其他权限

完成以上设置,则vsftpd的匿名用户可以查看,获取ftp中的文件或目录,也可以上传,或在ftp中创建目录等操作。

4. 本地用户访问

本地访问,是指使用Linux中已经创建的本地用户和对应的密码来进行登录,本地用户登录后默认会限制在该用户对应的家目录。如果希望强制使用本地用户登录,则可以关闭匿名用户功能。

[root@localhost vsftpd]# vim vsftpd.conf

anonymous_enable=NO# 关闭匿名用户local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO# 关闭匿名用户上传功能anon_mkdir_write_enable=NO# 关闭匿名用户操作功能 dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

同时可以对登录的用户作限制,与黑名单功能类似,为了限制某些用户的登录,可以编辑/etc/vsftpd/ftpusers文件:

[root@localhost vsftpd]# vim ftpusers

# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

注意:上面的这个文件只能做黑名单, 与上面的ftpusers作用类似的还有user_list文件(这个文件与ftpusers存放在同一个目录), 与ftpusers文件不同的是user_list文件既可以作为白名单使用,也可以作为黑名单使用,具体起到的是白名单还是黑名单的作用,则要看vsftpd.conf配置文件中的配置(这个文件与ftpusers,及user_list存放在同一个目录), 配置如下:(vsftpd.conf)

# user_list将作为黑名单使用
userlist_enable=YESuserlist_deny=YES# user_list将作为白名单使用userList_enable=YESuserList_deny=NO# 表示不对任何用户作限制userList_enable=NOuserList_deny=NO

需要注意的是:ftpusers配置文件是不受配置项约束,总是有效的, user_list是可配置的。

5. 防火墙配置

在生产环境中,直接关闭防火墙不安全,下面是centos系统中针对ftp服务的防火墙配置

[root@localhost vsftpd]# firewall-cmd --zone=public --add-port=21/tcp --permanent
success
[root@localhost vsftpd]# firewall-cmd --zone=public --add-service=ftp --permanent
success
[root@localhost vsftpd]# firewall-cmd --reload

配置完成后,开启防火墙可以正常使用ftp

6. 被动模式

ftp传输数据的方式可以分为:主动方式,被动方式。

简单的理解,主动和被动主要是针对ftp服务器来说的,如果在发生数据时,由ftp服务器发起连接,则叫做主动方式,如果发送数据时,由客户端的发起的,则为被动方式。

编辑/etc/vsftpd/vsftpd.conf配置文件:

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pasv_enable=YES# 打开被动模式支持pasv_min_port=50000  # 被动模式下的数据传输所使用的随机端口的最小值
pasv_max_port=65535# 被动模式下的数据传输所使用的随机端口的最大值
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

被动模式的优点是:能够避免客户端网络环境的影响,被动模式的这个特点在实际中经常被使用,需要注意一点的是,具体是对于具体的某次连接,是被动方式还是主动方式则是客户端决定的,比如我们可以在FileZilla中指定连接服务器是使用被动方式还是主动方式

7. SELinx对FTP服务的影响

SELinux对FTP的影响主要发生在匿名操作的时候,具体的影响可以参看【3.2 匿名操作部分】,对于通过认证登录的用户默认情况下是不受影响的(除非自行修改了SELinux的配置)。

对于匿名用户读取文件是可以的,但不能上传或操作,这种默认的配置也是符合安全要求的。尽管不少资料在介绍Linux种ftp配置时,一般开始就将SELinux关闭,(甚至防火墙也关闭)。但为安全起见,还是建议开启SELinux和防火墙,保留匿名用户只能查看的权限(如果没有必要则直接关闭),对于需要上传或操作ftp上的文件时,使用认证用户即可。

http://www.dtcms.com/a/326639.html

相关文章:

  • 【图像算法 - 12】OpenCV-Python 入门指南:图像视频处理与可视化(代码实战 + 视频教程 + 人脸识别项目讲解)
  • DHCP服务配置与管理实战指南
  • CRMEB多商户系统(Java)v2.0更新预告:区域管理+预约商品,激活本地商业新活力!
  • NTC热敏电阻、压敏电阻和保险丝工作原理
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • python每日一题练习 两个数组的交集 非常简单
  • GCN: 图卷积网络,概念以及代码实现
  • 【LeetCode刷题集】--排序(三)
  • Protocol Buffers (protobuf) API 接口完全指南
  • maven项目打包成sdk后在别的项目使用
  • 从0开始的中后台管理系统-5(部门管理以及菜单管理页面功能实现)
  • 【科研绘图系列】R语言绘制散点图折线图误差棒组合图
  • 指派问题-匈牙利算法
  • 2025牛客多校第八场 根号-2进制 个人题解
  • HTTPS应用层协议-CA签名与证书
  • Vue 3 快速入门 第六章
  • MaixPy简介
  • Projects
  • 进程管理是什么
  • DeepSeek生成的高精度大数计算器
  • 自制网页并爬取,处理异常值(第十九节课内容总结)
  • .NET/C# webapi框架下给swagger的api文档中显示注释(可下载源码)
  • MP3Tag 软件功能简介
  • (二)vscode搭建espidf环境,配置wsl2
  • 第16届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2025年4月真题
  • 进阶版|企业级 AI Agent 的构建实践
  • 【03】厦门立林科技——立林科技 嵌入式 校招笔试,题目记录及解析
  • 从零开始的ReAct Agent尝试
  • 应用监控工具Skywalking
  • bitbake –s:列出所有可编译的模块