配置安全的 SFTP香港高防服务器:步骤与技巧

 

配置安全的 SFTP(基于 SSH 的文件传输协议)在香港高防服务器上是保证数据安全性和传输效率的重要步骤。


一、什么是 SFTP?

SFTP(SSH File Transfer Protocol)是一种通过 SSH(Secure Shell)建立安全连接的文件传输协议,提供文件上传、下载和管理功能。与传统的 FTP 不同,SFTP 通过加密通道传输数据,确保文件传输的安全性。


二、配置安全 SFTP 的完整步骤

1. 安装并配置 SSH 服务

SFTP 是基于 SSH 的,因此需要确保 SSH 服务正常运行。

(1) 安装 SSH 服务

在大多数 Linux 发行版中,SSH 通常默认安装。如果未安装,使用以下命令安装:

bash
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server -y

# CentOS/RHEL
sudo yum update -y
sudo yum install openssh-server -y
 
 

(2) 启动并启用 SSH 服务

bash
# 启动 SSH 服务
sudo systemctl start sshd

# 设置开机启动
sudo systemctl enable sshd
 
 

2. 创建专用 SFTP 用户

为确保安全性,建议为 SFTP 创建独立用户,并限制其访问权限。

(1) 创建 SFTP 用户组

bash
sudo groupadd sftpusers
 
 

(2) 添加 SFTP 用户

将用户 sftpuser 添加到 SFTP 用户组,并指定其主目录:

bash
sudo useradd -m -G sftpusers -s /sbin/nologin sftpuser
 
 
  • -m:创建用户的主目录。
  • -G sftpusers:将用户添加到组 sftpusers
  • -s /sbin/nologin:禁止用户通过 SSH 登录,仅允许使用 SFTP。

(3) 设置用户密码

bash
sudo passwd sftpuser
 
 

3. 配置 SSH 服务以支持 SFTP

需要修改 SSH 配置文件来启用 SFTP,并限制用户的访问范围。

(1) 编辑 SSH 配置文件

打开配置文件:

bash
sudo nano /etc/ssh/sshd_config
 
 

添加或修改以下内容:

bash
# 禁止 SFTP 用户使用 SSH 登录
Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
 
 
  • Match Group sftpusers:应用规则到 SFTP 用户组。
  • ChrootDirectory /home/%u:将用户限制在其主目录中,防止访问其他目录。
  • ForceCommand internal-sftp:强制用户仅使用 SFTP。
  • AllowTcpForwarding noX11Forwarding no:禁用 TCP 转发和 X11 转发,增强安全性。

(2) 设置目录权限

为了使用 ChrootDirectory,需要设置主目录的权限:

bash
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/uploads
sudo chown sftpuser:sftpusers /home/sftpuser/uploads
 
 
  • /home/sftpuser 的所有者必须是 root,并且权限为 755
  • /home/sftpuser/uploads 是用户的上传目录,其所有者为 sftpuser

(3) 重启 SSH 服务

完成修改后,重启 SSH 服务以使配置生效:

bash
sudo systemctl restart sshd
 
 

4. 测试 SFTP 配置

(1) 本地测试

在本地通过 SFTP 客户端连接服务器:

bash
sftp sftpuser@your_server_ip
 
 

输入密码后,您应能够登录并访问 /uploads 目录。

(2) 使用 SFTP 客户端

使用任何 SFTP 客户端(如 FileZilla、WinSCP)连接:

  • 主机:服务器 IP 地址。
  • 用户名sftpuser
  • 密码:您设置的用户密码。
  • 端口:默认是 22

三、增强 SFTP 安全性的技巧

1. 更改默认 SSH 端口

默认 SSH 端口(22)容易受到恶意扫描攻击,更改为其他端口可以降低风险:

bash
sudo nano /etc/ssh/sshd_config
 
 

修改:

bash
Port 2222
 
 

然后重启 SSH 服务:

bash
sudo systemctl restart sshd
 
 

连接时记得指定新的端口:

bash
sftp -P 2222 sftpuser@your_server_ip
 
 

2. 设置防火墙规则

配置防火墙以仅允许 SFTP 端口访问:

(1) 使用 UFW(Ubuntu/Debian)

bash
sudo ufw allow 2222/tcp
sudo ufw enable
 
 

(2) 使用 Firewalld(CentOS/RHEL)

bash
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
 
 

3. 配置 Fail2Ban 防暴力破解

Fail2Ban 是一款保护 SSH 香港高防服务免受暴力破解攻击的工具。

(1) 安装 Fail2Ban

bash
# Ubuntu/Debian
sudo apt install fail2ban -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install fail2ban -y
 
 

(2) 配置 SSH 保护

编辑配置文件:

bash
sudo nano /etc/fail2ban/jail.local
 
 

添加以下内容:

ini
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
 
 

重启 Fail2Ban:

bash
sudo systemctl restart fail2ban
 
 

4. 使用 SSH 密钥认证

禁用密码登录,改用密钥认证,提升安全性。

(1) 生成 SSH 密钥

在客户端生成密钥对:

bash
ssh-keygen -t rsa -b 4096
 
 

(2) 上传公钥到服务器

将公钥上传到服务器:

bash
ssh-copy-id -i ~/.ssh/id_rsa.pub sftpuser@your_server_ip
 
 

(3) 禁用密码登录

编辑 SSH 配置文件:

bash
sudo nano /etc/ssh/sshd_config
 
 

设置:

bash
PasswordAuthentication no
 
 

重启 SSH 服务:

bash
sudo systemctl restart sshd
 
 

5. 启用日志审计

启用 SSH 和 SFTP 的日志记录,监控所有活动。

(1) 查看日志

SSH 和 SFTP 活动通常记录在 /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(CentOS/RHEL)中:

bash
sudo tail -f /var/log/auth.log
 
 

(2) 配置详细日志

/etc/ssh/sshd_config 中启用详细日志:

bash
LogLevel VERBOSE
 
 

重启 SSH 服务后,日志将记录更多活动信息。


四、总结

配置安全的 SFTP 服务器需要从以下几个方面入手:

  1. 基础配置:安装 SSH 服务,创建专用 SFTP 用户,并限制其访问范围。
  2. 加强安全性:更改默认端口、配置防火墙、使用 Fail2Ban 防止暴力破解。
  3. 提升认证方式:使用 SSH 密钥认证,禁用密码登录。
  4. 日志审计与监控:启用详细日志记录,定期检查 SFTP 活动。

通过以上步骤,您可以在香港高防服务器上部署一个安全、高效的 SFTP 解决方案,同时利用高防服务器的优势抵御潜在的网络攻击。

超过 50,000 人的信任 网硕互联期待你加入我们的会员。