centos

centos sftp配置有哪些限制

小樊
52
2025-09-20 03:48:42
栏目: 智能运维

CentOS SFTP配置的常见限制方法

1. Chroot Jail限制访问目录

通过ChrootDirectory指令将用户限制在指定目录(如用户主目录),使其无法访问系统其他部分。配置示例如下:

Match Group sftpusers  # 匹配sftpusers组(需提前创建)
    ChrootDirectory %h  # %h代表用户主目录
    ForceCommand internal-sftp  # 强制使用内部SFTP命令
    AllowTcpForwarding no  # 禁用TCP转发
    X11Forwarding no  # 禁用X11转发

需确保ChrootDirectory目录及其父目录权限为755(所有者为root),否则用户无法登录。

2. 限制仅能使用SFTP(禁用SSH Shell)

通过ForceCommand internal-sftp强制用户只能使用SFTP,无法获得Shell访问权限。常与Match UserMatch Group结合使用,例如:

Match User ftpuser  # 针对特定用户
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

此配置可彻底防止用户通过SSH登录系统。

3. 带宽流量限制

使用tc(Traffic Control)工具限制用户的上传/下载速度。例如,限制某用户带宽为1Mbps的脚本示例:

#!/bin/bash
USER="sftpuser"
UPLOAD_LIMIT="100kbit"
DOWNLOAD_LIMIT="100kbit"
tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate $DOWNLOAD_LIMIT
tc class add dev eth0 parent 1:1 classid 1:10 htb rate $UPLOAD_LIMIT
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst $USER flowid 1:10

需将脚本添加到用户登录时的自动执行路径(如/etc/profile.d/),确保每次登录时生效。

4. IP访问限制

通过防火墙(如firewalld)限制特定IP地址访问SFTP服务。配置步骤:

# 允许SFTP服务(默认端口22)
sudo firewall-cmd --permanent --add-service=sftp
# 限制特定IP(如192.168.1.100)访问
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
# 重新加载防火墙配置
sudo firewall-cmd --reload

此方法可有效防止未经授权的IP地址访问SFTP服务。

5. 用户/组权限控制

6. SELinux策略限制

若系统启用SELinux(默认enforcing模式),需调整SELinux策略以允许SFTP访问。例如:

SELinux可提供更细粒度的访问控制,增强SFTP安全性。

7. Fail2Ban防止暴力破解

安装fail2ban监控SFTP登录日志,自动封禁多次尝试失败的IP地址。配置示例:

# 安装fail2ban
sudo yum install fail2ban
# 启用并配置SFTP jail
sudo vi /etc/fail2ban/jail.local

添加以下内容:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3  # 允许的最大失败次数
bantime = 600  # 封禁时间(秒)

重启fail2ban服务后,可有效防止暴力破解。

0
看了该问题的人还看了