Linux怎么设置root用户禁止远程登录

Linux怎么设置root用户禁止远程登录
最新回答
若つ迷尘ゎ

2024-04-19 12:39:56

禁止root用户远程登录Linux系统,可通过修改SSH配置文件、重启SSH服务、验证设置及创建普通用户授权实现。以下是具体操作步骤和安全建议:

一、修改SSH配置文件
  • 编辑文件:使用文本编辑器(如vi或nano)打开/etc/ssh/sshd_config文件:sudo vi /etc/ssh/sshd_config
  • 修改参数:找到PermitRootLogin行,取消注释(删除行首#)并修改为no:PermitRootLogin no
  • 保存退出:在vi中按Esc键后输入:wq保存并退出。

二、重启SSH服务
  • 重启命令:根据系统使用systemctl或service命令重启SSH服务:sudo systemctl restart sshd # 适用于systemd系统sudo service sshd restart # 适用于SysVinit系统
三、验证设置
  • 测试登录:尝试使用root用户通过SSH远程登录,应收到Permission denied错误:ssh root@your_server_ip
四、创建普通用户并授权
  • 添加用户:创建普通用户并设置密码:sudo adduser your_username
  • 授予sudo权限:将用户加入sudo组以获取管理员权限:sudo usermod -aG sudo your_username
  • 使用方式:通过SSH登录普通用户后,使用sudo执行需要root权限的命令。
五、禁止root远程登录的重要性
  • 降低风险:root用户拥有系统最高权限,一旦密码泄露,攻击者可完全控制服务器。
  • 增加攻击难度:禁用root登录后,攻击者需先获取普通用户权限再提权,延长了攻击时间并增加了被发现的风险。
六、其他安全增强措施
  • SSH密钥登录

    生成密钥对(公钥+私钥),将公钥上传至服务器~/.ssh/authorized_keys文件。

    登录时使用私钥,无需输入密码,安全性更高。

  • 防火墙限制

    使用iptables或ufw限制SSH端口(默认22)的访问,仅允许特定IP或IP段。

    sudo ufw allow from 192.168.1.0/24 to any port 22 # 示例:允许192.168.1.0/24网段访问
  • 更改默认SSH端口

    修改/etc/ssh/sshd_config中的Port参数(如改为2222),减少被自动化扫描的风险。

    Port 2222

    重启SSH服务后,登录时需指定端口:

    ssh -p 2222 your_username@your_server_ip
  • 部署Fail2ban

    安装Fail2ban监控登录失败记录,自动封禁恶意IP。

    sudo apt install fail2ban # Debian/Ubuntusudo systemctl enable fail2ban
  • 定期更新系统

    及时安装安全补丁,修复已知漏洞:

    sudo apt update && sudo apt upgrade # Debian/Ubuntusudo yum update # CentOS/RHEL

七、应急处理:普通用户密码遗忘或无法登录
  • 通过控制台/VNC重置

    使用root权限重置普通用户密码:

    sudo passwd your_username
  • 单用户模式重置

    重启服务器,在GRUB界面选择内核后按e编辑启动项。

    找到以linux或linux16开头的行,在行尾添加init=/bin/bash。

    按Ctrl+X启动,进入单用户模式后重置密码:

    passwd your_username

    重启系统。

  • 联系服务器提供商:若无法物理访问,可寻求提供商协助恢复访问权限。
八、注意事项
  • 物理安全:单用户模式需物理或控制台访问权限,需保护服务器物理环境。
  • 备份配置:修改关键文件前建议备份,避免操作失误导致服务不可用。

通过以上步骤,可有效禁止root用户远程登录,并结合其他安全措施显著提升服务器安全性。