SSH在CentOS上的权限管理方法
编辑/etc/ssh/sshd_config文件,使用AllowUsers(允许特定用户)、DenyUsers(拒绝特定用户)、AllowGroups(允许特定组)、DenyGroups(拒绝特定组)指令控制访问权限。例如:
AllowUsers user1 user2 # 仅允许user1、user2登录
AllowGroups sshusers # 仅允许sshusers组的用户登录
DenyUsers user3 # 拒绝user3登录
修改后需重启SSH服务生效:
sudo systemctl restart sshd
为避免root账户被暴力破解,建议禁用root登录。在/etc/ssh/sshd_config中修改:
PermitRootLogin no
重启SSH服务使设置生效。
将用户限制在特定目录(如/chroot/home/user1),防止其访问系统其他文件。操作步骤:
sudo mkdir -p /chroot/home/user1/{bin,lib64,lib,usr,dev}
sudo chown root:root /chroot/home/user1
sudo chmod 755 /chroot/home/user1
sudo cp /bin/bash /chroot/home/user1/bin/
sudo cp /lib64/{libtinfo.so.6,libc.so.6} /chroot/home/user1/lib64/
/etc/ssh/sshd_config中添加:Match User user1
ChrootDirectory /chroot/home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重启SSH服务。使用firewalld限制仅特定IP或网段能访问SSH(默认端口22):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
Fail2Ban可监控SSH登录日志,自动封禁多次失败的IP地址:
sudo yum install epel-release
sudo yum install fail2ban
/etc/fail2ban/jail.local:[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3 # 允许的最大失败次数
bantime = 600 # 封禁时间(秒)
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
若SELinux处于enforcing模式,需调整策略以允许SSH访问:
sudo setsebool -P ssh_sysadm_login on
sudo semanage fcontext -a -t ssh_home_t "/chroot/home(/.*)?"
sudo restorecon -Rv /chroot/home
密钥认证比密码认证更安全,可防止密码泄露:
ssh-keygen -t rsa -b 4096
.ssh文件夹:ssh-copy-id user1@server_ip
/etc/ssh/sshd_config,启用密钥认证并禁用密码认证:PubkeyAuthentication yes
PasswordAuthentication no
sudo systemctl restart sshd