嘿,朋友。看到你点开这个标题,我猜你大概率是个刚入手了云服务器、或者正准备把现有服务器迁移到更稳定生态的开发者或运维同学。AlmaLinux 最近这几年在 Linux 圈子里可是火得一塌糊涂,毕竟它是 CentOS 的最佳精神续承者——完全二进制兼容 RHEL(Red Hat Enterprise Linux),而且由社区驱动,免费、开源、稳定,最重要的是,它不打算像当年的 CentOS 7 那样突然“断供”让你措手不及。
今天咱们不整那些虚头巴脑的理论,我就把自己当年踩过的坑、调过的参数、加固过的防火墙规则,全部揉碎了讲给你听。这就好比我要手把手教你怎么给新买的跑车做第一次保养和防盗改装。咱们目标很明确:从零开始,装好系统,配好网络,最后把它打扮得像个铁桶一样安全。
第一步:选对版本,别走弯路
在动手之前,我得先提醒你一件事:别下错了文件。AlmaLinux 有多个版本,目前主流且长期支持(LTS)的是 AlmaLinux 8 和最新的 AlmaLinux 9。
- AlmaLinux 8:基于 RHEL 8,内核较老但极其稳定,适合对兼容性要求极高、运行传统企业级应用(如旧版 Oracle DB、特定 Java 中间件)的场景。
- AlmaLinux 9:基于 RHEL 9,支持更新的硬件特性、更新的软件栈(如 Python 3.9+、GCC 11+),是未来的趋势。
我的建议:除非你有非常明确的遗留系统依赖,否则直接上 AlmaLinux 9。如果你是在阿里云、腾讯云、AWS 或 DigitalOcean 等云厂商控制台一键部署,通常可以直接选择镜像。但如果是通过 ISO 镜像自建虚拟机(比如用 KVM、VMware 或本地测试环境),请去官网 almalinux.org 下载最新的 Minimal 或 Everything ISO。Minimal 版只包含基础系统,体积小、攻击面小,最适合服务器;Everything 版包含所有开发包,适合做本地构建机。
第二步:安装系统——极简主义的艺术
很多新手喜欢图形化安装,但在服务器上,我强烈建议你使用 文本界面安装(Text Mode) 或者直接使用云厂商提供的 自定义镜像/Cloud-Init 方式。为什么?因为图形界面占用内存、消耗 CPU,而且对于服务器来说,GUI 完全是多余的负担,甚至是一个安全隐患。
假设你是通过 ISO 启动进入安装程序,以下是几个关键设置点,请务必注意:
1. 语言与键盘
保持默认 English 和 US Keyboard。别折腾中文输入法,服务器日志全是英文报错,你看得懂就行,装中文输入法只会增加复杂度。
2. 网络配置(重中之重)
这是最容易出问题的地方。在云环境中,网卡名称可能是 eth0, ens3, enp0s3 等等,取决于虚拟化技术。
- IPv4 设置:选择 DHCP 自动获取 IP(大多数云主机默认如此)。如果你需要静态 IP,确保你的子网掩码、网关和 DNS 服务器填写正确。
- 主机名:给它起个有意义的名字,比如
web-prod-01或db-master-01。避免使用localhost或随机字符串。
3. 磁盘分区
- 新手推荐:选择 “I will configure partitioning”(手动分区)以学习原理,或者直接选 “Use All Space” + “Standard Partition”。
- 专家建议:对于生产环境,务必分离
/home和/var/log。/(根分区):分配 50GB-100GB,足够系统和软件运行。/boot:分配 1GB,存放内核文件。/home:剩余空间的大部分,存放用户数据。这样如果用户数据爆满,不会搞挂系统。/var/log:单独划分一个小分区(如 10-20GB),防止日志写满导致系统崩溃。
4. 软件选择
再次强调,不要选 GNOME Desktop!选择 “Server with GUI” 仅在你确实需要远程桌面管理时才考虑,否则就选 “Minimal Install”。Minimal 安装完成后,系统只有命令行,资源占用极低,安全性最高。
点击 “Begin Installation”,等待进度条走完,设置 Root 密码和普通用户(如果需要)。重启后,你就拥有了一个干净的 AlmaLinux 9 系统。
第三步:初始网络配置与连通性测试
系统重启后,你会看到一个登录提示符。先用 root 账号登录。
1. 检查网络状态
输入以下命令查看网卡状态:
ip addr show
你应该能看到类似 eth0 或 ens3 的接口,并且有一个 inet 地址,这就是你的公网 IP(如果是内网则是私网 IP)。
2. 配置静态 IP(可选但推荐用于服务器)
虽然 DHCP 很方便,但对于服务器,静态 IP 更可靠。AlmaLinux 使用 NetworkManager 管理网络。我们可以通过 nmcli 命令来配置,这比修改配置文件更直观且不易出错。
假设你的网卡名是 ens33,你想设置静态 IP 192.168.1.100/24,网关 192.168.1.1,DNS 8.8.8.8:
# 首先,获取连接名称
nmcli connection show
# 假设连接名称为 'System ens33',执行以下命令
sudo nmcli con mod "System ens33" ipv4.method manual
sudo nmcli con mod "System ens33" ipv4.addresses 192.168.1.100/24
sudo nmcli con mod "System ens33" ipv4.gateway 192.168.1.1
sudo nmcli con mod "System ens33" ipv4.dns "8.8.8.8,114.114.114.114"
sudo nmcli con mod "System ens33" ipv4.ignore-auto-dns yes
# 重新加载连接
sudo nmcli con up "System ens33"
验证是否生效:
ping -c 4 8.8.8.8
ping -c 4 www.baidu.com
如果能 ping 通,说明网络配置成功。
3. 配置 SSH 远程访问
现在,你可以关闭当前终端,用你的本地电脑通过 SSH 连接服务器了。这是日常操作的主要方式。
ssh root@你的服务器IP
第四步:系统更新与基础优化
拿到一台新服务器,第一件事不是装 Nginx 或 Docker,而是更新系统。
sudo dnf update -y
这个过程可能需要几分钟,取决于你的网速和包的数量。更新后,重启一次以确保内核模块加载最新:
sudo reboot
重启后,再次 SSH 登录。接下来,我们做一些基础的性能和安全优化。
1. 禁用 SELinux(谨慎操作)
SELinux 是 Red Hat 系发行版的安全模块,非常强大但配置复杂。对于初学者或追求快速部署的场景,很多人选择禁用它。但在生产环境中,建议学习如何配置 SELinux 策略而不是直接禁用。 如果你决定禁用(仅限测试或非关键环境):
编辑 /etc/selinux/config:
SELINUX=disabled
然后重启生效。
2. 调整时区
确保服务器时间与北京时间一致(或其他你需要的时区):
timedatectl set-timezone Asia/Shanghai
timedatectl status
3. 配置 EPEL 源
EPEL (Extra Packages for Enterprise Linux) 提供了大量非官方但常用的软件包。
sudo dnf install epel-release -y
sudo dnf clean all
sudo dnf makecache
第五步:安全加固——打造铁桶江山
这一步是本文的核心。云服务器暴露在公网上,就像你家大门敞开着,黑客脚本每分钟都在扫描端口。我们必须把门焊死。
1. 创建普通用户并赋予 sudo 权限
永远不要用 root 账号直接登录服务器进行日常操作。创建一个普通用户,并授予 sudo 权限。
# 创建新用户,例如叫 admin
sudo useradd -m -s /bin/bash admin
# 设置密码
sudo passwd admin
# 将用户加入 wheel 组(AlmaLinux 中 wheel 组默认拥有 sudo 权限)
sudo usermod -aG wheel admin
测试一下:
su - admin
sudo whoami
# 应该输出 root
2. 配置 SSH 密钥认证
密码容易被暴力破解,密钥认证更安全且方便。
在你的本地电脑(Mac/Linux)生成密钥(如果已有可跳过):
ssh-keygen -t ed25519 -C "your_email@example.com"
然后将公钥复制到服务器:
# 在本地电脑执行,替换 admin 为用户名,IP 为服务器 IP
ssh-copy-id admin@你的服务器IP
测试登录:
ssh admin@你的服务器IP
如果能无需密码直接登录,说明密钥认证成功。
3. 修改 SSH 配置,禁用密码登录和 Root 远程登录
编辑 /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
# 禁止 root 用户远程登录
PermitRootLogin no
# 禁用密码认证,强制使用密钥
PasswordAuthentication no
# 更改 SSH 端口(可选,但推荐)
Port 2222
# 限制登录尝试次数
MaxAuthTries 3
# 启用空闲超时断开
ClientAliveInterval 300
ClientAliveCountMax 2
保存后,重启 SSH 服务:
sudo systemctl restart sshd
重要提示:修改端口后,你需要用新端口连接:ssh -p 2222 admin@你的服务器IP。确保你能连上后再关闭旧端口,以免把自己锁在外面。
4. 配置防火墙(firewalld)
AlmaLinux 默认启用 firewalld。我们需要开放必要的端口,拒绝其他所有入站连接。
# 查看当前状态
sudo firewall-cmd --state
# 开放 SSH 新端口(假设是 2222)
sudo firewall-cmd --permanent --add-port=2222/tcp
# 如果后续需要 Web 服务,再开放 80 和 443
# sudo firewall-cmd --permanent --add-service=http
# sudo firewall-cmd --permanent --add-service=https
# 重载防火墙使配置生效
sudo firewall-cmd --reload
# 验证
sudo firewall-cmd --list-all
5. 安装 Fail2ban 防御暴力破解
Fail2ban 会监控日志文件,如果发现某个 IP 多次登录失败,就自动将其加入防火墙黑名单。
sudo dnf install fail2ban -y
配置 Fail2ban 以监控 SSH:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
在 [sshd] 部分,确保如下配置:
[sshd]
enabled = true
port = 2222 # 改成你修改后的 SSH 端口
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600
启动并设置开机自启:
sudo systemctl enable --now fail2ban
现在,如果有人连续 3 次输错密码,他们的 IP 会被封禁 1 小时。
第六步:自动化维护与监控
1. 配置自动安全更新
服务器不能总让人盯着。让系统自动安装安全补丁。
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer
编辑配置文件 /etc/dnf/automatic.conf,确保:
apply_updates = yes
这样,每天凌晨系统会自动下载并安装安全更新。
2. 安装基础监控工具
安装 htop 和 netstat 替代品 ss,以及 lsof,方便排查问题。
sudo dnf install htop net-tools lsof -y
使用 htop 可以直观地看到 CPU、内存使用情况,比 top 更友好。
第七步:常见陷阱与避坑指南
在实际操作中,你可能会遇到一些奇怪的问题,这里提前给你打个预防针。
SSH 连接被拒:
- 检查你是否改动了 SSH 端口,并确保在防火墙中开放了新端口。
- 检查 SELinux 是否阻止了 SSH 监听新端口。如果 SELinux 没禁用,可能需要执行:
sudo semanage port -a -t ssh_port_t -p tcp 2222。
DNF 更新慢:
- AlmaLinux 的默认源在国外,国内访问可能很慢。建议更换为国内镜像源,如阿里云、清华镜像源。
- 备份原 repo 文件,下载新的
.repo文件到/etc/yum.repos.d/,然后运行sudo dnf makecache。
时间不同步:
- 云服务器有时会出现时间漂移,导致证书验证失败、日志混乱。安装
chrony并启动服务:sudo dnf install chrony -y sudo systemctl enable --now chronyd
- 云服务器有时会出现时间漂移,导致证书验证失败、日志混乱。安装
磁盘空间不足:
- 定期清理缓存:
sudo dnf clean all - 检查大文件:
sudo find / -type f -size +100M
- 定期清理缓存:
结语:这只是开始
恭喜你!经过这一系列操作,你已经拥有一台安全、稳定、高效的 AlmaLinux 服务器。它不再是那个裸奔的“小白”,而是一个经过精心武装的“战士”。
但这只是起点。接下来,你可以在这台服务器上部署 Docker、Kubernetes、Nginx、MySQL,或者搭建自己的博客、API 服务。无论你想做什么,记住两点原则:
- 最小权限原则:只开放必要的端口,只用必要的用户。
- 持续监控:定期检查日志,关注安全公告。
Linux 的世界很大,AlmaLinux 只是其中一块坚实的基石。希望这篇指南能帮你少走弯路,享受构建的乐趣。如果在过程中遇到任何具体问题,欢迎随时回来查阅,或者在社区里提问。祝你好运,开发者!
