购买一台服务器后该做什么

一、查看系统基本信息

创建一个快速查看脚本 system_info.sh

#!/bin/bash

echo "===== 系统版本 ====="
cat /etc/centos-release
echo ""

echo "===== 内核版本 ====="
uname -r
echo ""

echo "===== CPU信息 ====="
lscpu | grep -E "Model name|Socket|Core|CPU\(s\)"
echo ""

echo "===== 内存信息 ====="
free -h
echo ""

echo "===== 磁盘信息 ====="
df -h --total
echo ""

echo "===== 网络信息 ====="
ip addr show | grep -E "inet |ether" | grep -v "127.0.0.1"
echo ""

echo "===== 系统运行时间 ====="
uptime

二、创建admin用户/组

服务器绝对不建议直接使用 root 账号登录。主要原因包括:

  1. 安全风险:一旦被攻击,攻击者获得完全控制权

  2. 误操作风险:root 权限下任何操作都可能造成灾难性后果

  3. 审计困难:多人使用 root 无法追踪具体操作者

  4. 最小权限原则:按需分配权限,不滥用最高权限

推荐做法:创建拥有 sudo 权限的用户/组(替代 root)

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具

su = Switch User(切换用户)

用于改变身份

类似:"我要变成另一个人"

sudo = SuperUser DO(超级用户执行)

用于临时借用权限

类似:"借你的权限用一下"

1、创建 test_admin 用户

# 1. 创建新用户(以 test_admin 为例)
useradd test_admin

# 2. 设置用户密码
passwd test_admin
# 输入并确认密码

2、将 test_admin 赋予 root权限 

#手动
visudo
#在最后添加添加一行
# 添加以下内容(按需调整)
#需要密码:
test_admin ALL=(ALL) ALL
#不需要密码 (懒人较爱)
test_admin    ALL=(ALL)    NOPASSWD: ALL

检查 sudo 权限:

# 切换到新用户
su - test_admin
# 测试 sudo 权限
sudo whoami  # 应该显示 root
sudo ls /root  # 测试能否访问 root 目录
# 查看可用的 sudo 命令
sudo -l

三、限制远程SSH登录

查看失败的登录尝试

grep "Failed password for" /var/log/secure

可以看到一直都有乱起八糟的 ip 在尝试连接你的服务器。且 root 、 admin 这两个用户是被尝试得最多的。毕竟经典账密 admin 123456 可不是盖的。

所以最好对SSH登录进行一定限制。如限制 root 远程登录与设置仅允许特定用户登录。

禁用 root 远程 SSH 登录

# 1. 编辑 SSH 配置
vim /etc/ssh/sshd_config

# 2. 找到并修改以下行:
PermitRootLogin no           # 禁止 root 直接登录
AllowUsers test_admin my_admin            # 可选:只允许特定用户登录

# 3. 重启 SSH 服务
systemctl restart sshd

# 4. 重要:测试新用户连接正常后再退出当前 root 会话
# 新开终端用 admin 用户登录测试

# 查看成功的登录
sudo grep "Accepted password for" /var/log/secure

四、切换/使用root

当前是 admin 用户,切到 root用户:
sudo su -          # 输入 admin 密码,切换到 root

sudo su 和 sudo su - 不完全一样,它们有一些重要的区别。主要体现在环境变量的加载和当前目录的变化上. sudo su目录不变且不会加载环境变量。sudo su - 会,等价于sudo -i

简单判断:

如果只是偶尔需要执行特权命令 → 使用 sudo

如果你需要在多个命令中都使用 root 权限 → sudo -i

更推荐的安全做法

# 1. 只为需要 root 权限的单个命令使用 sudo
sudo systemctl restart nginx
sudo cat /var/log/secure

典型的服务器管理流程

# 1. 以普通用户登录(如admin)
ssh admin@server

# 2. 检查系统(不需要root)
df -h

# 3. 安装软件(需要root)
sudo yum install nginx

# 4. 配置Nginx(需要root)
sudo vi /etc/nginx/nginx.conf

# 5. 复杂的多步操作(需要root shell)
sudo -i
# 进入root环境
cd /etc/nginx/sites-available
cp default.conf myapp.conf
vi myapp.conf
systemctl reload nginx
# 立即退出
exit

# 回到普通用户继续工作

五、软件安装

在CentOS中,无论是使用admin账户还是root账户安装软件,实际上最终都需要root权限才能安装。但是,从安全性和审计的角度来看,推荐使用具有sudo权限的普通用户(如admin)来安装软件,而不是直接使用root账户。

推荐做法:使用admin账户通过sudo安装

为什么不推荐直接使用root账户安装?

  1. 安全风险:如果直接使用root账户,一旦被攻击,攻击者将获得完全的控制权。

  2. 操作风险:root账户没有操作确认,任何命令都会立即执行,可能导致误操作。

  3. 审计困难:如果多人共享root账户,无法追踪具体是谁执行了操作。

为什么 admin + sudo 更好?

方面admin + sudoroot 账户说明
安全性✅ 高❌ 低sudo 需要再次验证身份
审计跟踪✅ 可追踪❌ 难追踪sudo 记录谁、何时、执行了什么
操作确认✅ 有提醒❌ 无提醒输入密码步骤减少误操作
权限范围✅ 可控❌ 无限制sudo 可配置限制命令
环境隔离✅ 好❌ 差保持用户环境,避免路径问题
误操作风险✅ 低❌ 高每个特权命令都需要明确授权

步骤:

  1. 使用admin账户登录。

  2. 通过sudo执行安装命令。

例如:

# 1. 以 admin 用户登录服务器
ssh admin@服务器IP

# 2. 更新系统包列表
sudo yum update

# 3. 安装 EPEL 仓库(如果需要)
sudo yum install epel-release

# 4. 安装 nginx
sudo yum install nginx

# 5. 启动 nginx
sudo systemctl start nginx

# 6. 设置开机自启
sudo systemctl enable nginx

# 7. 检查状态
sudo systemctl status nginx

优点:

  1. 审计跟踪:通过sudo执行的命令会被记录在系统日志中(通常是/var/log/secure),可以追踪谁在什么时间执行了安装操作。

  2. 最小权限原则:admin用户只有在需要时才临时获取root权限,而不是一直拥有root权限。

  3. 减少误操作:在执行安装命令前,sudo会要求输入密码,这给了用户一个确认的机会。

注意事项:

  • 确保admin用户在sudoers文件中配置了安装软件所需的权限。通常,我们给admin用户完整的sudo权限(通过wheel组或直接配置),这样admin用户就可以执行任何root命令,包括安装软件。

查看审计日志(sudo 的优势)

# 查看谁安装了 nginx,什么时间
sudo grep "nginx.*install" /var/log/secure
# 或
sudo journalctl _COMM=sudo | grep nginx

创建安装脚本

# 创建 /usr/local/bin/install-nginx.sh
#!/bin/bash
set -e  # 遇到错误立即停止

echo "更新系统..."
sudo yum update -y

echo "安装EPEL仓库..."
sudo yum install epel-release -y

echo "安装nginx..."
sudo yum install nginx -y

echo "配置防火墙..."
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

echo "启动服务..."
sudo systemctl enable --now nginx

echo "验证安装..."
sudo nginx -t
sudo systemctl status nginx

# 给予执行权限
sudo chmod +x /usr/local/bin/install-nginx.sh
sudo chown admin:admin /usr/local/bin/install-nginx.sh

六、配置密钥登录(可选)

root密码登录 vs 密钥登录的全面对比

这两种登录方式在安全性、便利性、管理方式上有本质区别:

一、核心区别总结

特性密码登录密钥登录
认证方式记忆的密码字符串非对称加密密钥对
安全级别低-中等(依赖密码强度)极高(几乎不可破解)
防暴力破解弱(可能被猜中)强(无法通过猜测登录)
传输安全密码可能被嗅探密钥本身不传输
方便性需要记忆和输入一次配置,永久使用
自动化脚本需处理密码(不安全)可无缝集成
多服务器管理每台不同密码同一私钥管理所有服务器

建议使用SSH密钥对登录Linux云服务器,此方式通过加密的密钥文件进行身份验证,比密码更安全,还能实现免密登录。

具体使用SSH密钥方式有两种:本地自生成密钥对、 使用腾讯云控制台密钥对。本地自生成方式相对麻烦一点,需要手动生成公私钥并上传公钥到服务器。使用腾讯云控制台密钥对相对简单些,但是可能会导致机器重启。

6.1 本地自生成密钥对(推荐)

6.1.1 在每位需要登录的成员的本地电脑上生成专属密钥对,如用户A执行:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/user_a_id_rsa -C "email_of_userA"
# 生成 user_a_id_rsa(私钥,自己保管) 和 user_a_id_rsa.pub(公钥,交给你)

6.1.2 将对应公钥上传到服务器 ~/.ssh 目录

# 1. 登录服务器(使用你最初的管理密钥)
ssh -i admin.pem ubuntu@server_ip

# 2. 切换到需要授权用户的home目录(例如,大家共用ubuntu用户,或各自独立的账户)
cd ~

# 3. 确保.ssh目录和授权文件存在
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# 4. 将成员的公钥内容追加到授权文件末尾
echo "这里粘贴user_a的公钥内容" >> ~/.ssh/authorized_keys
echo "这里粘贴user_b的公钥内容" >> ~/.ssh/authorized_keys

6.2 腾讯云控制台密钥对

核心步骤如下:

  1. 创建SSH密钥对:登录腾讯云控制台,进入云服务器 > SSH密钥页面,选择地域后点击“创建密钥”。建议选择“创建新密钥对”,设置名称后腾讯云会生成密钥对并自动下载私钥.pem文件),请务必妥善保管,不同的人可以创建不同的密钥对。

  2. 绑定密钥对到服务器:在密钥列表中,找到目标密钥,点击“绑定实例”。选择关机状态的同地域Linux服务器进行绑定。绑定过程可能导致服务器重启,建议在业务低峰期操作。

  3. 使用私钥连接服务器:本地使用SSH命令连接时,通过 -i 参数指定私钥文件路径。

    ssh -i /本地路径/您的密钥名.pem ubuntu@服务器公网IP
    

安全加固建议:为了提高安全性,绑定密钥后,可以修改服务器SSH配置,禁止密码登录。编辑/etc/ssh/sshd_config文件,找到PasswordAuthentication并将其值改为no,然后重启SSH服务(如sudo systemctl restart sshd)。

这样子配置了密钥登陆并关闭密码登录后,其它非法用户基本就不可能再登录到你的服务器了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值