如何通过Debian SSH精确限制特定用户访问权限,以最大化提升账户安全性?
- 内容介绍
- 文章标签
- 相关推荐
Debian服务器一旦SSH暴露到公网,最怕的就是账号被暴力、权限过大导致误删程序文件、SFTP使用者越权窥探根目录。很多运维踩过的坑是:所有使用者都能登录任何IP都能尝试密码SFTP账号能cd到/一次泄露等于整台主机沦陷。下面用sshd_config做精细化管控,把“谁能连、从哪连、用啥方式连”全部锁死。
1. 先明确痛点:SSH失控会带来什么风险
痛点1:暴力无休止。老实说,默认端口22+密码登录。每天auth.log被刷爆,CPU和带宽被拖垮。
痛点2:使用者权限泛滥。实习账号也能ssh进生产机,随手rm -rf把业务删掉。
痛点3:SFTP越权访问。SFTP上传使用者本应只能传文件,却能看到/etc和/var敏感数据。
痛点4:IP来源不可控。VPS被扫后境外IP随意尝试登录,日志里全是陌生地址。
2. 安装与基础加固
安装SSH服务
PAM精细认证控制
Edit /etc/security/access.conf 定义访问控制规则,并在PAM中启用 pam_access.so。
Fai l2Ban防御暴力
Fai l2Ban可限制暴力攻击,并可配置为限制特定使用者的访问。 编辑 /etc/fail 2ban/jail.d/ssh.conf :
bantime = 600
maxretry = 3
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = iptables-multiport
3. 使用sshd_config主要白名单管控
Edit /etc/ssh/sshd_config 文件并重新启动 service ssh restart。这是最直接的精准限制手段。
a) 精确限制特定使用者登录
# 只允许这几个使用者通过SSH登录
AllowUsers user1 user2 user3
# 明确禁止这些使用者
DenyUsers user4 user5 user6
b) 按IP地址绑定使用者,杜绝异地登录
# 只允许来自指定IP的使用者登录
AllowUsers user1@192.168.1.1 user2@192.168.1.2
# Match指令更灵活
Match Address 192.168.1.100
AllowUsers user1 user2
Match Address 192.168.1.101
DenyUsers user3 user4
c) 按组控制批量账号权限
# 只允许属于白名单组的成员登录
AllowGroups group1 group2 group3
# 禁止敏感组登录SSH
DenyGroups group4 group5 group6
sudo groupadd sftpusers
sudo usermod -a -G sftpusers username
4.SFTP只读目录与Chroot Jail隔离。防止越权浏览程序文件
Match Group sftpusers
ChrootDirectory /chroot/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuntication no
PermitTunnel no
PermitTTY no
设置后该组使用者只能在指定chroot目录活动,看不到程序根目录,解决主要问题“上传账号能看全盘”的痛点。务必收紧主目录权限,避免Chroot失败:
5 防暴力与登录行为限流
编辑 sshd_config :
LoginGraceTime 1m MaxAuthTries 3 PasswordAuntication no PubkeyAuntication yes
至于配合日志记录。
记录包含源地址目标地址协议端口的日志到 /var/log/ssh.log,方便事后审计谁在何时从哪发起连接。
6 无密码密钥登录替代明文密码
先备份 sshd_config。设置 AllowUsers 和 DenyUsers,接下来在服务器和客户端创建新使用者,其他使用者和非授权客户端无法登录,确保服务器的安全性。
7 实战组合建议
生产环境推荐组合拳: PAM + Fai l2Ban 防爆破 + AllowUsers@IP 白名单 + 组级Chroot SFTP + 禁用密码强制密钥 + MaxAuthTries限流 + 改默认端口+独立日志。这样即使账号泄露,没有白名单IP也连不上,没有私钥也无法免密。没有权限也出不了沙箱,才能真正最大化提高Debian账户安全性。
Debian服务器一旦SSH暴露到公网,最怕的就是账号被暴力、权限过大导致误删程序文件、SFTP使用者越权窥探根目录。很多运维踩过的坑是:所有使用者都能登录任何IP都能尝试密码SFTP账号能cd到/一次泄露等于整台主机沦陷。下面用sshd_config做精细化管控,把“谁能连、从哪连、用啥方式连”全部锁死。
1. 先明确痛点:SSH失控会带来什么风险
痛点1:暴力无休止。老实说,默认端口22+密码登录。每天auth.log被刷爆,CPU和带宽被拖垮。
痛点2:使用者权限泛滥。实习账号也能ssh进生产机,随手rm -rf把业务删掉。
痛点3:SFTP越权访问。SFTP上传使用者本应只能传文件,却能看到/etc和/var敏感数据。
痛点4:IP来源不可控。VPS被扫后境外IP随意尝试登录,日志里全是陌生地址。
2. 安装与基础加固
安装SSH服务
PAM精细认证控制
Edit /etc/security/access.conf 定义访问控制规则,并在PAM中启用 pam_access.so。
Fai l2Ban防御暴力
Fai l2Ban可限制暴力攻击,并可配置为限制特定使用者的访问。 编辑 /etc/fail 2ban/jail.d/ssh.conf :
bantime = 600
maxretry = 3
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = iptables-multiport
3. 使用sshd_config主要白名单管控
Edit /etc/ssh/sshd_config 文件并重新启动 service ssh restart。这是最直接的精准限制手段。
a) 精确限制特定使用者登录
# 只允许这几个使用者通过SSH登录
AllowUsers user1 user2 user3
# 明确禁止这些使用者
DenyUsers user4 user5 user6
b) 按IP地址绑定使用者,杜绝异地登录
# 只允许来自指定IP的使用者登录
AllowUsers user1@192.168.1.1 user2@192.168.1.2
# Match指令更灵活
Match Address 192.168.1.100
AllowUsers user1 user2
Match Address 192.168.1.101
DenyUsers user3 user4
c) 按组控制批量账号权限
# 只允许属于白名单组的成员登录
AllowGroups group1 group2 group3
# 禁止敏感组登录SSH
DenyGroups group4 group5 group6
sudo groupadd sftpusers
sudo usermod -a -G sftpusers username
4.SFTP只读目录与Chroot Jail隔离。防止越权浏览程序文件
Match Group sftpusers
ChrootDirectory /chroot/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuntication no
PermitTunnel no
PermitTTY no
设置后该组使用者只能在指定chroot目录活动,看不到程序根目录,解决主要问题“上传账号能看全盘”的痛点。务必收紧主目录权限,避免Chroot失败:
5 防暴力与登录行为限流
编辑 sshd_config :
LoginGraceTime 1m MaxAuthTries 3 PasswordAuntication no PubkeyAuntication yes
至于配合日志记录。
记录包含源地址目标地址协议端口的日志到 /var/log/ssh.log,方便事后审计谁在何时从哪发起连接。
6 无密码密钥登录替代明文密码
先备份 sshd_config。设置 AllowUsers 和 DenyUsers,接下来在服务器和客户端创建新使用者,其他使用者和非授权客户端无法登录,确保服务器的安全性。
7 实战组合建议
生产环境推荐组合拳: PAM + Fai l2Ban 防爆破 + AllowUsers@IP 白名单 + 组级Chroot SFTP + 禁用密码强制密钥 + MaxAuthTries限流 + 改默认端口+独立日志。这样即使账号泄露,没有白名单IP也连不上,没有私钥也无法免密。没有权限也出不了沙箱,才能真正最大化提高Debian账户安全性。

