Linux中FTP服务器搭建与安全配置方式

 更新时间:2024年02月09日 15:09:45   作者:程序员喵哥  
这篇文章主要介绍了Linux中FTP服务器搭建与安全配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用

FTP(File Transfer Protocol)是一种用于在计算机之间传输文件的标准协议。

在Linux系统上,您可以搭建自己的FTP服务器,以便轻松共享和传输文件。

本文将提供详细的步骤和示例代码,帮助大家安全地搭建和配置Linux FTP服务器。

步骤1:安装FTP服务器

首先,需要选择并安装一个FTP服务器软件。

在Linux中,常用的FTP服务器软件包括vsftpd、ProFTPD、和Pure-FTPd。

以下是使用vsftpd作为示例的安装步骤:

1
2
3
4
# 安装vsftpd
sudo apt update
sudo apt install vsftpd    # 对于Ubuntu/Debian
sudo yum install vsftpd    # 对于CentOS/RHEL

步骤2:配置vsftpd

启用vsftpd服务

1
2
# 启动vsftpd服务
sudo systemctl start vsftpd

设置开机启动

1
2
# 设置vsftpd服务开机启动
sudo systemctl enable vsftpd

步骤3:配置FTP用户访问

创建FTP用户

1
2
# 创建一个FTP用户(例如myftpuser)
sudo adduser myftpuser

分配FTP用户的家目录

1
2
# 设置FTP用户的家目录为/var/ftp
sudo usermod -d /var/ftp myftpuser

配置FTP用户的访问权限

编辑vsftpd配置文件以允许FTP用户访问:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

在文件中添加以下行以启用本地用户访问:

1
2
3
# 启用本地用户访问
local_enable=YES
write_enable=YES

重启vsftpd服务

1
2
# 重启vsftpd服务以应用更改
sudo systemctl restart vsftpd

步骤4:配置FTP安全性

配置FTP用户的登录

编辑vsftpd配置文件以限制FTP用户登录:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

添加以下行以禁止FTP用户登录SSH:

1
2
3
# 禁止FTP用户登录SSH
chroot_local_user=YES
allow_writeable_chroot=YES

启用FTP用户上传和下载

1
2
# 启用FTP用户上传和下载
sudo setsebool -P ftp_home_dir 1

步骤5:配置FTP端口

配置FTP端口范围

编辑vsftpd配置文件以定义FTP数据传输的端口范围:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

添加以下行以定义端口范围:

1
2
3
# 定义端口范围
pasv_min_port=30000
pasv_max_port=31000

步骤6:防火墙配置

如果系统启用了防火墙,需要配置防火墙规则以允许FTP流量通过。

针对Ubuntu/Debian

1
2
3
4
# 允许FTP流量通过防火墙
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp

针对CentOS/RHEL

1
2
3
4
5
# 允许FTP流量通过防火墙
sudo firewall-cmd --permanent --add-port=20/tcp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

步骤7:测试FTP服务器

使用FTP客户端软件(如FileZilla)连接到FTP服务器,使用FTP用户名和密码进行身份验证。

确保可以成功上传和下载文件。

步骤8:配置FTP服务器的日志记录

为了跟踪FTP服务器活动和安全性,可以配置FTP服务器的日志记录。

编辑vsftpd配置文件以启用日志记录:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

添加以下行以启用日志记录:

1
2
3
# 启用日志记录
xferlog_enable=YES
xferlog_std_format=YES

步骤9:FTP服务器安全性进一步优化

为了进一步增强FTP服务器的安全性,可以采取以下措施:

使用TLS/SSL加密

配置FTP服务器以使用TLS/SSL加密传输数据,以保护敏感信息的传输。

这需要安装SSL证书,以确保数据在传输过程中得到加密和保护。

对于vsftpd服务器,可以使用以下命令为FTP服务器启用TLS/SSL:

1
2
3
4
5
6
7
8
9
# 安装SSL证书工具
sudo apt-get install openssl    # 对于Ubuntu/Debian
sudo yum install openssl        # 对于CentOS/RHEL
 
# 生成自签名SSL证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
 
# 编辑vsftpd配置文件以启用TLS/SSL
sudo nano /etc/vsftpd.conf

在vsftpd配置文件中添加以下行:

1
2
3
4
5
6
7
8
9
10
11
# 启用TLS/SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_ciphers=HIGH
require_ssl_reuse=NO
ssl_cert_file=/etc/ssl/private/vsftpd.pem

重启vsftpd服务以应用更改:

1
sudo systemctl restart vsftpd

限制FTP用户访问

如果需要限制FTP用户的访问,可以在vsftpd配置文件中添加用户白名单或黑名单。

编辑vsftpd配置文件并添加以下行来限制FTP用户的访问:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

使用userlist_fileuserlist_deny选项来创建用户白名单或黑名单文件,然后指定文件的路径:

1
2
3
4
5
# 创建用户白名单文件
sudo touch /etc/vsftpd.allowed_users
 
# 编辑用户白名单文件以添加允许的用户
sudo nano /etc/vsftpd.allowed_users

将允许访问的用户添加到用户白名单文件中,并在vsftpd配置文件中启用白名单:

1
2
3
4
5
6
7
8
# 启用用户白名单
userlist_enable=YES
 
# 指定用户白名单文件的路径
userlist_file=/etc/vsftpd.allowed_users
 
# 禁止其他用户访问
userlist_deny=YES

配置FTP用户的主目录

还可以根据需要配置FTP用户的主目录,以限制他们的访问范围。

编辑vsftpd配置文件并添加以下行:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

通过使用local_root选项,可以将FTP用户的主目录设置为特定目录:

1
2
# 将FTP用户的主目录设置为特定目录
local_root=/var/ftp

启用登录失败重试限制

为了提高安全性,可以启用登录失败重试限制。

编辑PAM配置文件以添加限制:

1
2
# 编辑PAM配置文件
sudo nano /etc/security/limits.conf

在文件的底部添加以下行来启用登录失败重试限制:

1
2
# 启用登录失败重试限制
* hard maxlogins 3

步骤10:FTP服务器性能调优

为了确保FTP服务器的性能和稳定性,可以采取以下措施:

限制并发连接数

如果FTP服务器面临高并发连接,可以限制并发连接数以保护服务器资源。

编辑vsftpd配置文件并添加以下行:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

添加以下行来限制并发连接数:

1
2
3
# 限制并发连接数
​​​​​​​max_clients=100
max_per_ip=2

使用Passive模式

在某些网络环境中,使用Passive模式可能更稳定。

编辑vsftpd配置文件并添加以下行以启用Passive模式:

1
2
# 编辑vsftpd配置文件
sudo nano /etc/vsftpd.conf

添加以下行来启用Passive模式:

1
2
3
4
# 启用Passive模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

总结

通过按照以上步骤进一步优化FTP服务器的安全性和性能,可以确保FTP服务器在高效、安全的环境中运行,满足文件传输和共享的需求。

这些附加措施包括TLS/SSL加密、限制用户访问、配置用户主目录、登录失败重试限制、并发连接数限制和Passive模式等,有助于提高FTP服务器的安全性和性能,确保它在各种环境中稳定运行。

无论你是在内部网络中共享文件还是在互联网上提供FTP服务,这些优化步骤都将帮助大家实现更好的FTP服务器体验。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/GitHub_miao/article/details/135059104

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Linux md5sum命令的使用方法

    Linux md5sum命令的使用方法

    这篇文章主要介绍了Linux md5sum命令的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 搭建自己的个人服务器(个人电脑公网访问配置篇)

    搭建自己的个人服务器(个人电脑公网访问配置篇)

    搭建自己的个人服务器,主要涉及服务器上的防火墙和端口权限、路由器端口转发、端口映射等,需要的朋友可以参考下
    2023-08-08
  • linux开机启动nodemanager步骤

    linux开机启动nodemanager步骤

    这篇文章主要介绍了linux开机启动nodemanager的步骤,大家参考使用吧
    2014-01-01
  • linux系统下oracle11gR2静默安装的经验分享

    linux系统下oracle11gR2静默安装的经验分享

    这篇文章主要介绍了linux系统下oracle11gR2静默安装的经验, 所有操作无需使用图形界面. 静默安装能减少安装出错的可能性, 也能大大加快安装速度。有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • CentOS Yum编译安装MySQL 5.6

    CentOS Yum编译安装MySQL 5.6

    这篇文章主要为大家详细介绍了CentOS Yum编译安装MySQL 5.6,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Linux下文件的切分与合并的简单方法介绍

    Linux下文件的切分与合并的简单方法介绍

    这篇文章主要介绍了Linux下文件的切分与合并的简单方法介绍,介绍了相关实例。实例通过split及cat命令实现此过程,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Linux环境下生成openssl证书注意细节介绍

    Linux环境下生成openssl证书注意细节介绍

    大家好,本篇文章主要讲的是Linux环境下生成openssl证书注意细节介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux中验证tar包在传输后的完整性的过程详解

    Linux中验证tar包在传输后的完整性的过程详解

    在日常的系统管理或软件部署过程中,文件传输是一项常规操作,特别是当处理大型文件(如tar包)时,验证文件的完整性变得尤为重要,本文将介绍如何使用校验和来验证tar包在从一台机器传输到另一台机器后的完整性,需要的朋友可以参考下
    2023-12-12
  • Linux 3.X/4.x/5.x 忘记宝塔面板密码的解决方法

    Linux 3.X/4.x/5.x 忘记宝塔面板密码的解决方法

    在本篇文章里我们给大家整理的是关于忘记Linux 3.X/4.x/5.x 宝塔面板密码的解决方案,有需要的朋友们可以学习下。
    2019-10-10
  • 用DNSPod和Squid打造自己的CDN (七) 配置Squid

    用DNSPod和Squid打造自己的CDN (七) 配置Squid

    首先我们要明白一下squid在CDN中扮演的角色,squid在CDN中其实只是一个+缓存,跟一般的服务器类似,squid代替用户向真正有内容的服务器进行请求,并且缓存下来
    2013-04-04

最新评论