配置Linux服务器需完成系统安装、安全加固(防火墙、SSH密钥认证、用户权限)、软件包更新、必要服务(如Web、数据库)安装与优化,以及设置监控和备份策略,确保稳定安全运行。
配置一台 Linux 服务器是将其投入生产环境的关键步骤,正确的配置不仅能确保服务器安全、稳定、高效地运行,还能为后续的应用部署和管理打下坚实基础,本指南将详细讲解 Linux 服务器初始配置的核心步骤和最佳实践。
重要前提:安全与备份
- 最小权限原则: 始终使用具有完成当前任务所需最低权限的用户账户进行操作,避免长期使用
root
用户。 - 备份: 在开始任何重大配置更改之前,务必创建完整的系统快照或备份! 虚拟化环境可以利用快照,物理服务器则需使用可靠的备份工具(如
rsync
,BorgBackup
等)备份关键数据和配置文件,这是灾难恢复的生命线。 - 物理安全/访问控制: 确保服务器放置在安全的环境中,只有授权人员才能物理接触或通过网络访问。
核心配置步骤
-
系统更新与升级:
- 连接到服务器后(通常通过 SSH),第一件事就是更新软件包列表并升级所有已安装的软件包到最新稳定版本,这修复了已知的安全漏洞和错误。
- 命令示例 (基于 Debian/Ubuntu):
sudo apt update && sudo apt upgrade -y sudo apt dist-upgrade -y # 处理涉及依赖变更的升级 sudo apt autoremove --purge -y # 移除不再需要的旧包和配置文件
- 命令示例 (基于 CentOS/RHEL/Rocky/AlmaLinux):
sudo yum check-update # 检查更新 sudo yum update -y # 执行更新 # 或者使用 dnf (较新版本) sudo dnf check-update sudo dnf upgrade -y sudo dnf autoremove -y
- 重启 (如果需要): 如果内核或关键服务被更新,系统会提示重启。
sudo reboot
-
用户与权限管理:
- 创建新管理员用户: 避免直接使用
root
,创建一个具有sudo
权限的普通用户。sudo adduser yourusername # 创建用户,设置密码 sudo usermod -aG sudo yourusername # Debian/Ubuntu: 加入 sudo 组 # 或者 (CentOS/RHEL/Rocky/AlmaLinux) sudo usermod -aG wheel yourusername # 加入 wheel 组 (通常有 sudo 权限)
- 使用
su - yourusername
切换到新用户,测试sudo
权限(sudo ls /root
)。
- 使用
- 禁用 Root SSH 登录: 这是关键的安全加固步骤,编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
找到
PermitRootLogin
行,将其改为:PermitRootLogin no
保存退出后,务必重启 SSH 服务:
sudo systemctl restart sshd
(或sshd
)。在关闭当前 root SSH 会话之前,务必确保新用户能成功通过 SSH 登录并拥有 sudo 权限! - 管理用户和组: 根据需要创建其他普通用户(无
sudo
权限),使用adduser
或useradd
,使用groups
命令查看用户所属组,使用usermod -aG groupname username
将用户添加到附加组。
- 创建新管理员用户: 避免直接使用
-
配置防火墙:
- Linux 发行版通常自带防火墙(
ufw
或firewalld
)。必须启用并严格配置防火墙,只允许必要的入站流量。 - 使用
ufw
(Debian/Ubuntu):sudo ufw allow OpenSSH # 允许 SSH 连接 (端口 22 或自定义端口) sudo ufw allow 80/tcp # 允许 HTTP (Web 服务器) sudo ufw allow 443/tcp # 允许 HTTPS # 根据你的服务需求添加其他规则 sudo ufw enable # 启用防火墙 sudo ufw status verbose # 查看状态和规则
- 使用
firewalld
(CentOS/RHEL/Rocky/AlmaLinux):sudo firewall-cmd --permanent --add-service=ssh # 允许 SSH sudo firewall-cmd --permanent --add-service=http # 允许 HTTP sudo firewall-cmd --permanent --add-service=https # 允许 HTTPS # 或者直接添加端口: sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload # 重新加载配置使生效 sudo firewall-cmd --list-all # 查看所有规则
- Linux 发行版通常自带防火墙(
-
配置 SSH 安全 (强化):
- 修改默认端口 (可选但推荐): 编辑
/etc/ssh/sshd_config
,修改Port
行(Port 2222
)。记得在防火墙中允许新端口! 重启sshd
。 - 使用 SSH 密钥认证: 比密码更安全,在本地机器生成密钥对 (
ssh-keygen
),将公钥 (id_rsa.pub
) 内容复制到服务器的~/.ssh/authorized_keys
文件中(权限应为600
),在/etc/ssh/sshd_config
中设置:PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用密钥认证
重启
sshd
。确保你的私钥安全且能正常登录后再禁用密码! - 其他安全选项 (可选): 限制登录用户 (
AllowUsers yourusername
)、设置登录尝试限制 (MaxAuthTries
)、使用 Fail2ban 等。
- 修改默认端口 (可选但推荐): 编辑
-
配置时区与时间同步:
- 设置时区:
sudo timedatectl list-timezones # 列出可用时区 sudo timedatectl set-timezone Asia/Shanghai # 例如设置为上海时间
- 启用并配置 NTP (网络时间协议): 确保服务器时间准确,对日志、证书验证等至关重要,通常使用
systemd-timesyncd
或chrony
/ntpd
。systemd-timesyncd
(通常已启用): 检查状态:timedatectl status
,确保NTP service: active
。chrony
(推荐): 安装(如果需要):sudo apt install chrony
或sudo yum install chrony
,配置文件通常在/etc/chrony/chrony.conf
或/etc/chrony.conf
,启动并启用服务:sudo systemctl enable --now chronyd
,检查同步状态:chronyc sources
或chronyc tracking
。
- 设置时区:
-
安装与配置必备软件:
- 根据服务器用途安装所需软件:
- Web 服务器:
sudo apt install nginx
或sudo apt install apache2
或sudo yum install nginx
/sudo yum install httpd
- 数据库:
sudo apt install mysql-server
或sudo apt install postgresql
或sudo yum install mariadb-server
/sudo yum install postgresql-server
。安装后务必运行安全配置脚本(如mysql_secure_installation
)! - 编程语言环境: Python (
python3
,pip
), Node.js (nodejs
,npm
), PHP (php-fpm
), Java (openjdk-11-jdk
/java-11-openjdk-devel
) 等。 - 监控工具:
htop
,iftop
,nmon
,netdata
等,用于实时查看系统状态。 - 文本编辑器:
nano
(易用),vim
(强大),emacs
(强大)。
- Web 服务器:
- 配置软件: 安装后,仔细阅读并修改相关配置文件(通常在
/etc/
目录下),根据你的需求和安全策略进行调整(如 Nginx/Apache 的虚拟主机配置、数据库的监听地址和用户权限等)。
- 根据服务器用途安装所需软件:
-
磁盘管理与挂载 (如果需要):
- 使用
lsblk
,fdisk -l
,parted -l
查看磁盘和分区。 - 格式化新磁盘/分区:
sudo mkfs -t ext4 /dev/sdX1
(将ext4
替换为所需文件系统,如xfs
,btrfs
)。 - 创建挂载点:
sudo mkdir /mnt/data
。 - 临时挂载:
sudo mount /dev/sdX1 /mnt/data
。 - 永久挂载 (编辑
/etc/fstab
): 添加一行,/dev/sdX1 /mnt/data ext4 defaults,nofail 0 2
nofail
选项很重要,防止因磁盘问题导致系统无法启动。
- 测试
fstab
配置:sudo mount -a
,无错误则成功。 - 使用
df -h
查看挂载情况。
- 使用
-
安全加固 (持续进行):
- 定期更新: 设置自动安全更新(
unattended-upgrades
on Debian/Ubuntu,yum-cron
/dnf-automatic
on RHEL系)或建立手动更新流程。 - 最小化安装: 只安装绝对必要的软件包和服务,移除不需要的软件 (
sudo apt purge package-name
/sudo yum remove package-name
)。 - 禁用不必要的服务: 使用
systemctl list-unit-files --type=service
查看服务状态,禁用并停止不需要的服务:sudo systemctl disable --now servicename.service
。 - 文件权限: 使用
chmod
和chown
确保关键文件和目录(如 Web 根目录、配置文件)拥有正确的所有者和权限(通常遵循最小权限原则)。 - SELinux/AppArmor: 如果熟悉,启用并配置这些强制访问控制 (MAC) 系统,提供额外的安全层,理解其工作原理和故障排除方法很重要。
- 入侵检测/预防: 考虑安装工具如
rkhunter
,chkrootkit
,lynis
进行安全审计,或使用更高级的 HIDS/NIDS。 - 日志监控: 集中管理日志(使用
rsyslog
/syslog-ng
转发到中央服务器)或使用日志分析工具(如logwatch
,fail2ban
, ELK Stack, Graylog)监控异常活动。
- 定期更新: 设置自动安全更新(
-
维护与监控:
- 日志: 定期检查系统日志 (
/var/log/syslog
,/var/log/messages
,/var/log/auth.log
,/var/log/secure
, 以及服务特定的日志如/var/log/nginx/error.log
)。 - 资源监控: 使用
top
,htop
,free -h
,df -h
,iostat
,vmstat
,netstat
/ss
等命令监控 CPU、内存、磁盘 I/O、网络流量,考虑部署 Prometheus + Grafana 或 Zabbix 等专业监控方案。 - 备份策略: 制定并严格执行备份计划,定期测试备份的恢复能力,遵循 3-2-1 原则(3份备份,2种不同介质,1份异地备份)。
- 文档: 记录所有配置更改、安装的软件、使用的端口、自定义脚本等,这对故障排除和未来维护至关重要。
- 日志: 定期检查系统日志 (
配置 Linux 服务器是一个涉及安全、性能、稳定性和可维护性的综合过程,本指南涵盖了最关键的初始配置步骤。
- 安全是首要任务: 从最小权限、防火墙、SSH 加固开始,并持续进行安全更新和审计。
- 备份是生命线: 没有可靠的备份,任何配置都可能瞬间失去意义。
- 理解你的配置: 不要盲目复制粘贴命令,理解每个步骤的目的和潜在影响。
- 持续维护: 服务器配置不是一次性的工作,定期更新、监控日志、审查安全设置是确保服务器长期健康运行的关键。
遵循这些步骤和最佳实践,你将能够配置出一台安全、可靠、高效的 Linux 服务器,为你的应用和服务提供坚实的基础。
引用说明:
- 本文档中提到的命令和配置文件路径基于主流 Linux 发行版(如 Debian, Ubuntu, CentOS, RHEL, Rocky Linux, AlmaLinux)的常见实践。
- 安全建议参考了互联网安全中心 (CIS) 基准、各 Linux 发行版官方安全指南以及行业普遍认可的最佳实践。
- 具体软件的安装和配置请务必参考其官方文档:
- Nginx: https://nginx.org/en/docs/
- Apache HTTP Server: https://httpd.apache.org/docs/
- MySQL: https://dev.mysql.com/doc/
- MariaDB: https://mariadb.com/kb/en/documentation/
- PostgreSQL: https://www.postgresql.org/docs/
ufw
: https://help.ubuntu.com/community/UFWfirewalld
: https://firewalld.org/documentation/chrony
: https://chrony.tuxfamily.org/documentation.html- OpenSSH: https://www.openssh.com/manual.html
- SELinux: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/ (搜索 SELinux Guide)
- AppArmor: https://wiki.ubuntu.com/AppArmor
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8189.html