首页主机资讯centos sftp配置安全性如何提升

centos sftp配置安全性如何提升

时间2026-01-19 10:18:04发布访客分类主机资讯浏览486
导读:CentOS SFTP 安全性提升清单 一 基础加固 使用internal-sftp并强制仅 SFTP:在 /etc/ssh/sshd_config 设置 Subsystem 为 internal-sftp,并对需要隔离的用户用 Matc...

CentOS SFTP 安全性提升清单

一 基础加固

  • 使用internal-sftp并强制仅 SFTP:在 /etc/ssh/sshd_config 设置 Subsystem 为 internal-sftp,并对需要隔离的用户用 Match Group 限制,启用 ForceCommand internal-sftp,同时关闭 AllowTcpForwardingX11Forwarding,减少攻击面。
  • 禁用 root 登录与密码登录:设置 PermitRootLogin no;在密钥可用后设置 PasswordAuthentication noPubkeyAuthentication yes,仅保留公钥认证。
  • 限制可登录用户:通过 AllowUsers / DenyUsers 白名单/黑名单精确控制账户。
  • 目录与权限模型(满足 Chroot 要求):Chroot 根目录必须由 root 拥有且不可写,为用户创建可写子目录(如 uploads),避免用户逃逸到上层目录。
  • 审计与监控:将 LogLevel 调为 VERBOSE,持续审计 /var/log/secure 的登录与会话记录。

二 认证与访问控制

  • 使用SSH 密钥认证(优先 Ed25519RSA 4096):客户端生成密钥,将公钥放入用户的 authorized_keys 并设置权限 600/700;在服务器侧禁用密码登录。
  • 集中托管公钥(可选,便于运维与隔离):将用户公钥放入 /etc/ssh/sftp-keys//authorized_keys,由 root 拥有,避免用户修改;在 Match 块中通过 AuthorizedKeysFile 指定该路径。
  • 精细化访问控制:按用户或用户组使用 Match 定向策略(仅 SFTP、禁用端口转发、限制目录);必要时用 AllowUsers / DenyUsers 做名单控制。

三 网络与端口安全

  • 防火墙仅放行必要来源:使用 firewalld 仅开放 22/TCP(或变更后的端口)并对可信网段放行;云环境同步配置安全组。
  • 更改默认端口(可选,降低噪音攻击):将 Port 22 改为 1024–65535 的未使用端口,并在 firewalld 放行新端口;如启用 SELinux,执行 semanage port -a -t ssh_port_t -p tcp < 新端口>
  • 防暴力破解:部署 Fail2ban,启用 [sshd] 监狱对多次失败登录的 IP 自动封禁。

四 目录权限与 SELinux 要点

  • 推荐的目录结构:将 Chroot 根(如 /srv/sftp/data/sftp)属主设为 root:root、权限 755/700;为用户创建可写子目录(如 uploads)并属主为相应用户,避免 Chroot 根可写导致会话失败或越权。
  • SELinux 场景:若启用 SELinux 且 chroot 内无法写入,启用布尔值 ssh_chroot_rw_homedirs on,或用 semanage fcontext / restorecon 修复上下文。

五 快速配置示例

  • 目标:创建 sftpusers 组,用户 sftpuser 仅能 SFTP 访问 /srv/sftp/sftpuser,可写目录为 uploads;仅公钥登录;日志详细;firewalld 放行 22/TCP;Fail2ban 保护 SSH。
  • 步骤(可直接复用,按需替换路径与端口):
# 1) 安装与启动
sudo yum install -y openssh-server fail2ban
sudo systemctl enable --now sshd fail2ban

# 2) 创建用户与目录(Chroot 根不可写,子目录可写)
sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /bin/false sftpuser
sudo mkdir -p /srv/sftp/sftpuser/uploads
sudo chown root:root /srv/sftp /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp /srv/sftp/sftpuser
sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/uploads
sudo chmod 755 /srv/sftp/sftpuser/uploads  # 可按需设为 775 并配合 umask/ACL

# 3) 配置公钥(客户端生成后将公钥内容追加到 authorized_keys)
sudo mkdir -p /home/sftpuser/.ssh
sudo tee /home/sftpuser/.ssh/authorized_keys <
    <
    'EOF'
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ... sftpuser@client
EOF
sudo chown -R sftpuser:sftpusers /home/sftpuser/.ssh
sudo chmod 700 /home/sftpuser/.ssh
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys

# 4) 配置 sshd_config(建议先备份)
sudo tee -a /etc/ssh/sshd_config <
    <
    'EOF'

# 仅启用 internal-sftp
Subsystem sftp internal-sftp

# 全局安全基线
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
UsePAM yes

# SFTP 专用组策略
Match Group sftpusers
    ChrootDirectory /srv/sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
    PermitTunnel no
    GatewayPorts no

# 详细日志便于审计
LogLevel VERBOSE
EOF

# 5) SELinux(如启用)
sudo setsebool -P ssh_chroot_rw_homedirs on  # 若 chroot 内需要写入

# 6) 防火墙放行 22/TCP(如变更端口,同步修改并重载 firewalld)
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload

# 7) 重启并验证
sudo systemctl restart sshd
ss -tnlp | grep :22
sudo fail2ban-client status sshd
# 客户端测试:sftp sftpuser@your_server
  • 变更端口示例(可选):将 Port 22 改为 4422,执行
    sudo firewall-cmd --permanent --zone=public --add-port=4422/tcp & & sudo firewall-cmd --reload
    sudo semanage port -a -t ssh_port_t -p tcp 4422
    并在 sshd_config 中新增 Port 4422,重启 sshd。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos sftp配置安全性如何提升
本文地址: https://pptw.com/jishu/785568.html
CentOS里Notepad++如何共享 怎样在centos上实现sftp多用户配置

游客 回复需填写必要信息