博客 / Others/ Linux 服务器(Debian/Ubuntu)初始安全配置完整指南

Linux 服务器(Debian/Ubuntu)初始安全配置完整指南

Linux 服务器初始配置指南(Debian/Ubuntu)

本文介绍 Debian/Ubuntu 系统服务器的初始安全配置流程,其他 Linux 发行版(如 CentOS/RHEL)的命令可能略有不同,但核心步骤相似。

第一步:以 root 用户登录并修改密码

使用 SSH 以 root 用户身份登录到你的服务器(请将以下示例 IP 替换为你的实际服务器 IP)。

ssh root@你的服务器IP地址

首次连接时会显示主机密钥警告,输入 yes 接受并继续。登录成功后,建议立即修改 root 密码:

passwd

第二步:创建具有 sudo 权限的普通用户

为了安全,建议避免直接使用 root 账户进行日常操作。创建一个新的普通用户并赋予其管理权限。

1. 创建一个新用户组(例如 admin):

groupadd admin

2. 创建新用户(例如 bill),并指定其主目录和默认 shell:

useradd -d /home/bill -s /bin/bash -m bill

参数说明:-d 指定主目录,-s 指定登录 shell,-m 表示创建主目录。

3. 为新用户设置密码:

passwd bill

4. 将新用户添加到 admin 组:

usermod -a -G admin bill

5. 为新用户配置 sudo 权限。使用 visudo 命令安全地编辑 /etc/sudoers 文件:

visudo

在文件中找到类似 root ALL=(ALL:ALL) ALL 的行,在其下方添加一行来为新用户授权。以下是两种常见配置:

  • 无需密码使用 sudo(便捷但安全性稍低)
    bill    ALL=(ALL) NOPASSWD: ALL
  • 需要密码使用 sudo(推荐,更安全)
    bill    ALL=(ALL:ALL) ALL

6. 配置完成后,退出 root 会话,并使用新用户身份重新登录以测试权限:

exit
ssh bill@你的服务器IP地址

第三步:强化 SSH 安全配置

1. 配置 SSH 密钥登录:首先确保你的本地机器拥有 SSH 密钥对(~/.ssh/id_rsa.pub~/.ssh/id_rsa)。如果没有,请在本地终端运行 ssh-keygen 生成。

将你的公钥上传到服务器。推荐使用 ssh-copy-id 命令(如果本地支持):

ssh-copy-id -p 22 bill@你的服务器IP地址

或者,手动将公钥内容追加到服务器的 ~/.ssh/authorized_keys 文件中。

2. 修改 SSH 配置文件:以新用户(bill)登录服务器,备份并编辑 SSH 守护进程配置文件:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sudo nano /etc/ssh/sshd_config

建议进行以下关键修改(确保相关行未被注释,即行首没有 #):

# 更改默认端口(例如改为 25000)
Port 25000

# 仅使用 SSH 协议版本 2
Protocol 2

# 禁止 root 用户直接通过 SSH 登录
PermitRootLogin no

# 禁用密码认证,强制使用密钥登录(配置密钥后再启用此项)
PasswordAuthentication no

# 启用公钥认证
PubkeyAuthentication yes

# 指定授权密钥文件位置
AuthorizedKeysFile .ssh/authorized_keys

# 可选:禁用 DNS 反向解析,加速连接
UseDNS no

# 可选:仅允许特定用户登录(例如 bill)
AllowUsers bill

重要提示:在将 PasswordAuthentication 设置为 no 之前,请务必确认你的 SSH 密钥登录已成功配置并测试无误,否则可能导致无法登录。

3. 设置正确的文件权限

sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

4. 重启 SSH 服务使配置生效

sudo systemctl restart ssh  # 对于使用 systemd 的系统
# 或者
sudo service ssh restart     # 对于使用 SysV init 的系统

5. (可选)配置本地 SSH 客户端:在本地机器的 ~/.ssh/config 文件中添加以下内容,简化连接命令:

Host 你的服务器别名
    HostName 你的服务器IP地址
    User bill
    Port 25000

配置后,即可使用 ssh 你的服务器别名 直接连接。

第四步:基础系统配置

1. 设置系统区域和语言:确保系统区域设置为 UTF-8 编码,以避免软件出现乱码。

sudo locale-gen en_US.UTF-8 zh_CN.UTF-8  # 生成所需的区域设置
sudo update-locale LANG=en_US.UTF-8      # 设置默认区域(示例为英文)

2. 更新系统软件包

sudo apt update
sudo apt upgrade -y

后续安全建议

完成以上基础配置后,为进一步提升服务器安全,建议考虑:

  • 配置防火墙:使用 ufw(Uncomplicated Firewall)或 iptables 只开放必要的端口(如 SSH 新端口、HTTP/HTTPS)。
  • 安装 Fail2Ban:自动屏蔽多次尝试失败登录的 IP 地址。
  • 定期更新与监控:设置自动安全更新,并监控系统日志。

注意:本文提供的配置是通用建议。在实际生产环境中,请根据具体的安全策略和需求进行调整。在进行任何关键配置更改(尤其是 SSH 设置)前,建议保持一个活动的 SSH 会话窗口,以便在新配置导致无法连接时进行恢复。

  1. avatar
    防辐射网

    挺不错的,入门必学!

  2. 问一下老牛是做服务器运维的吗?

    1. 不是,我是做建筑的

  3. 我vps直接用root 懒!

    1. 有点不安全

  4. avatar
    不认识

    debian家族的Linux吧。。。
    顺带说,sudo也挺好使。。。

    1. debian和centos各有所长,对于个人站长没什么意义,投入实际生产就需要考虑维护管理的成本了,这点上两个系统区别大

回复 老牛 取消回复

您的邮箱不会公开。必填项已用 * 标注。