当前位置: 首页 > 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.lryc.cn/news/618088.html

相关文章:

  • 多路转接 select
  • 【数据结构入门】二叉树(1)
  • IoT/实现和分析 NB-IoT+DTLS+PSK 接入华为云物联网平台IoTDA过程,总结避坑攻略
  • 智能合约执行引擎在Hyperchain中的作用
  • 快速搭建前端playwright工程
  • FinQ4Cn: 基于 MCP 协议的中国 A 股量化分析
  • Java -- 集合 --Collection接口和常用的方法
  • Python网络爬虫(一) - 爬取静态网页
  • 爬虫与数据分析结合:中国大学排名案例学习报告
  • TDengine IDMP 基本功能(2.数据建模)
  • 爬虫与数据分析结和
  • 爬虫与数据分析入门:从中国大学排名爬取到数据可视化全流程
  • MySQL详细安装
  • 《算法导论》第 18 章 - B 树
  • 【MYSQL】MySQL中On duplicate key update
  • Dify入门指南(2):5 分钟部署 Dify:云服务 vs 本地 Docker
  • Python自动化测试实战:reCAPTCHA V3绕过技术深度解析
  • 常见鱼饵制作方式
  • Flutter学习笔记(六)---状态管理、事件、路由、动画
  • Vuex和Pina的区别
  • Prompt Engineering 最佳实践:让AI输出更精准的核心技巧
  • MaixPy简介
  • 贪心----2.跳跃游戏
  • 【09】中兴通讯——中兴 软件工程师 第一轮一面,技术面,校招,面试问答记录
  • QML的中英文翻译
  • OpenCV计算机视觉实战(19)——特征描述符详解
  • 【前端基础】16、结构伪类(注:粗略说明)
  • Facebook广告投放进阶:ABO精测与CBO放量的协同增长策略
  • 计算机网络---DNS(域名系统)
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的多目标跟踪与行为分析优化(393)