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 会话窗口,以便在新配置导致无法连接时进行恢复。
挺不错的,入门必学!
问一下老牛是做服务器运维的吗?
不是,我是做建筑的
我vps直接用root 懒!
有点不安全
debian家族的Linux吧。。。
顺带说,sudo也挺好使。。。
debian和centos各有所长,对于个人站长没什么意义,投入实际生产就需要考虑维护管理的成本了,这点上两个系统区别大