
- 安全: 防止未授权访问、数据泄露和服务中断。
- 稳定: 确保服务器持续、可靠地运行。
- 性能: 优化资源使用,高效响应请求。
- 可维护性: 配置清晰、文档齐全,易于管理和故障排除。
操作系统基础配置
- 系统更新:
- 首次配置:
sudo apt update && sudo apt upgrade -y(Debian/Ubuntu) 或sudo yum update -y(CentOS/RHEL)。这是最重要的第一步! - 自动化更新: 配置自动安全更新(如
unattended-upgradeson Ubuntu/Debian,yum-cronon CentOS/RHEL),定期手动更新非安全包。
- 首次配置:
- 主机名与时区:
hostnamectl set-hostname your-server-name(现代系统)timedatectl set-timezone Your/Timezone(e.g.,Asia/Shanghai)
- 用户管理:
- 禁用 Root 登录 (SSH): 强烈推荐! 修改
/etc/ssh/sshd_config:PermitRootLogin no,重启 SSH 服务。 - 创建管理用户:
sudo adduser yourusername,sudo usermod -aG sudo yourusername(Ubuntu/Debian) 或sudo usermod -aG wheel yourusername(CentOS/RHEL)。 - 使用 SSH 密钥认证: 禁用密码登录,仅允许更安全的密钥登录,修改
/etc/ssh/sshd_config:PasswordAuthentication no,将公钥 (id_rsa.pub) 放入用户~/.ssh/authorized_keys。 - 最小权限原则: 为服务和应用程序创建专用用户,只赋予必要的权限。
- 禁用 Root 登录 (SSH): 强烈推荐! 修改
- 防火墙配置:
- 启用并配置:
ufw(Ubuntu/Debian) 或firewalld(CentOS/RHEL/Fedora) /iptables(更底层)。 - 默认策略: 拒绝所有入站 (INPUT),允许所有出站 (OUTPUT)。
- 开放必要端口: 仅开放运行服务所需的端口(如 SSH:22, HTTP:80, HTTPS:443, 数据库端口等)。
sudo ufw allow 22/tcp,sudo ufw allow 80/tcp,sudo ufw allow 443/tcp,sudo ufw enable。
- 启用并配置:
- SELinux/AppArmor (安全增强):
- 理解并配置: 这些是强制访问控制框架,提供额外的安全层,初始配置可能较复杂,但强烈建议在理解后启用并设置为
enforcing模式,如果应用兼容性问题,可暂时设为permissive模式(记录但不阻止违规)来调试,但最终目标应是enforcing。
- 理解并配置: 这些是强制访问控制框架,提供额外的安全层,初始配置可能较复杂,但强烈建议在理解后启用并设置为
网络配置
- 静态 IP 地址 (推荐): 配置
/etc/netplan/*.yaml(Ubuntu 18.04+),/etc/network/interfaces(Debian/旧Ubuntu),/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS/RHEL 7),nmcli或nmtui(NetworkManager)。 - DNS 设置: 在
/etc/resolv.conf或网络配置文件中指定可靠的 DNS 服务器(如公司内部 DNS、8.8.8.8, 1.1.1.1)。 - 主机名解析: 配置
/etc/hosts文件,包含服务器自身的主机名和 IP 映射(0.1.1 your-server-name),以及需要直接访问的其他关键内部服务器。 - 网络诊断工具: 熟悉
ip,ifconfig(旧),ping,traceroute/tracepath,netstat,ss,dig,nslookup。
服务安装与配置
- 软件源: 配置官方源和必要的第三方源 (如 EPEL for CentOS/RHEL),确保源可信。
- 包管理: 熟练使用
apt/apt-get/dpkg(Debian/Ubuntu) 或yum/dnf/rpm(CentOS/RHEL/Fedora)。 - 安装必要服务: 根据服务器角色安装:
- Web 服务器: Nginx, Apache HTTPD
- 数据库服务器: MySQL, PostgreSQL, MariaDB, Redis
- 应用服务器: PHP-FPM, Tomcat, Node.js, Python WSGI 服务器 (Gunicorn, uWSGI)
- 邮件服务器: Postfix, Dovecot (配置复杂,需谨慎)
- 文件共享: Samba (SMB/CIFS), NFS
- 监控代理: Prometheus Node Exporter, Zabbix Agent, Datadog Agent
- 备份工具: rsync, BorgBackup, Rclone
- 服务配置最佳实践:
- 配置文件管理: 将配置文件放在
/etc/下对应目录,使用版本控制 (如 Git) 管理重要配置变更。 - 最小化暴露: 服务应只监听必要的 IP 地址(如
0.0.1或特定内网 IP,而非0.0.0),除非明确需要外部访问。 - 专用用户: 为每个服务创建运行用户。
- 日志配置: 确保服务日志记录到适当位置(
/var/log/),配置日志轮转 (logrotate) 防止磁盘占满。 - 资源限制: 根据需求调整内存、连接数等限制(在服务配置文件中设置)。
- 测试配置: 许多服务提供测试配置文件的命令(如
nginx -t,apachectl configtest)。
- 配置文件管理: 将配置文件放在
- 服务管理:
- systemd (现代标准):
systemctl start|stop|restart|reload|status|enable|disable servicename.service - 查看日志:
journalctl -u servicename.service -f(实时追踪) /journalctl -u servicename.service --since "yyyy-mm-dd" --until "yyyy-mm-dd" - 了解
reload(平滑重载配置,不中断连接) 和restart(完全重启服务) 的区别。
- systemd (现代标准):
安全加固 (持续进行)
- SSH 加固 (再次强调):
- 禁用 Root 登录
- 禁用密码认证 (仅密钥)
- 更改默认端口 (22 -> 其他端口,如 2222) –
Port 2222in/etc/ssh/sshd_config(记得防火墙开新端口!) - 使用强密码学算法 (
KexAlgorithms,Ciphers,MACs配置) - 限制允许登录的用户 (
AllowUsers yourusername) - 使用 Fail2ban 或 DenyHosts 自动封禁暴力破解 IP。
- 文件系统权限:
- 最小权限原则:
chown,chmod,关键目录权限 (如/etc/,/var/,/home/) 应严格。 - 查找全局可写文件:
find / -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print(目录),find / -xdev -type f -perm -o=w -print(文件)。 - 查找 SUID/SGID 文件:
find / -xdev ( -perm -4000 -o -perm -2000 ) -type f -print,审查并移除不必要的。
- 最小权限原则:
- 入侵检测与审计:
- AIDE 或 Tripwire: 文件完整性检查,监控关键文件是否被篡改。
- auditd: Linux 审计框架,记录系统调用和文件访问(需精细配置)。
- 定期漏洞扫描: 使用
lynis(本地扫描) 或 Nessus, OpenVAS 等工具进行扫描。 - 禁用不必要服务:
systemctl list-unit-files --type=service --state=enabled查看并禁用 (disable) 所有非必需服务。netstat -tulpn或ss -tulpn查看监听端口,对应关闭服务。
监控与日志管理
- 系统监控:
- 基础命令:
top,htop,free -h,df -h,iostat,vmstat,iftop,nload。 - 监控代理: 安装 Prometheus Node Exporter, Zabbix Agent 等,将指标发送到中央监控系统 (如 Prometheus + Grafana, Zabbix, Nagios)。
- 关键指标: CPU 使用率、内存使用率 (包括 Swap)、磁盘 I/O、磁盘空间、网络流量、关键进程状态、负载平均值。
- 基础命令:
- 服务监控: 监控 Web 服务器响应码 (如 5xx 错误)、数据库连接数和慢查询、应用特定健康检查端点。
- 日志集中管理:
- 本地日志: 使用
tail -f,grep,less查看/var/log/下的日志 (syslog,auth.log,messages,nginx/access.log,mysql/error.log等)。 - 集中化: 强烈推荐! 使用 rsyslog 或 syslog-ng 将日志转发到中央日志服务器 (如 ELK Stack – Elasticsearch, Logstash, Kibana; Graylog; Loki + Grafana)。
- 日志轮转: 确保
logrotate配置合理,防止日志文件过大导致磁盘满。
- 本地日志: 使用
备份与恢复
- 备份策略 (3-2-1 原则):
- 至少 3 份副本: 原始数据 + 至少两个备份。
- 至少 2 种不同介质: 如本地磁盘 + 网络存储/NAS + 云存储 (AWS S3, Backblaze B2, Wasabi)。
- 至少 1 份异地备份: 防止本地灾难(火灾、水灾、盗窃)。
-
- 关键数据: 应用数据、数据库、用户文件、配置文件 (
/etc/)、网站内容。 - 系统状态 (可选但推荐): 考虑使用
rsnapshot,BorgBackup,restic,Duplicity等支持增量、去重、加密的工具。 - 数据库备份: 必须使用数据库原生工具 (
mysqldump,pg_dump,mongodump) 或文件级备份前确保数据库处于一致状态(如锁表或使用 LVM 快照),定期测试恢复!
- 关键数据: 应用数据、数据库、用户文件、配置文件 (
- 自动化备份: 使用
cron或systemd timers定时执行备份脚本。 - 验证备份: 定期!定期!定期! 进行恢复测试,确保备份有效可用。
文档与变更管理
- 详细文档:
- 服务器用途、IP、主机名、凭据(安全存储!)。
- 安装的服务及其版本、关键配置文件路径。
- 网络配置、防火墙规则。
- 备份策略、恢复步骤。
- 故障排查指南。
- 变更管理:
- 任何修改前备份! 特别是配置文件和关键数据。
- 在非高峰时段进行变更。
- 使用版本控制 (Git) 管理配置文件。
- 记录所有变更(时间、操作人、变更内容、原因)。
- 测试变更效果。
性能调优 (根据需求)
- 识别瓶颈: 使用监控工具 (
top,vmstat,iostat,perf,sar) 找出 CPU、内存、磁盘 I/O、网络中的瓶颈。 - 内核参数: 调整
/etc/sysctl.conf中的参数 (如网络参数net.core.somaxconn,net.ipv4.tcp_tw_reuse; 虚拟内存参数vm.swappiness)。谨慎修改! - 服务特定调优: 调整 Web 服务器 (worker processes/threads, buffers)、数据库 (缓存大小
innodb_buffer_pool_size, 连接数max_connections)、应用服务器参数。 - 文件系统选择: 根据负载选择 XFS, ext4, Btrfs, ZFS 等。
- I/O 调度器: 调整磁盘 I/O 调度器 (cfq, deadline, noop, kyber – 取决于磁盘类型和负载)。
小编总结与关键点
- 安全是首要任务: 更新、防火墙、禁用 Root、密钥登录、最小权限、监控日志。
- 自动化是关键: 更新、备份、监控、配置管理(如 Ansible, Puppet, Chef)。
- 监控是眼睛: 没有监控等于盲人摸象,无法预防和快速定位问题。
- 备份是生命线: 没有经过验证的备份等于没有备份!严格遵守 3-2-1 原则并定期测试恢复。
- 文档是财富: 清晰的文档节省故障排查时间,方便交接。
- 变更要谨慎: 有记录、有备份、有测试。
- 从最小化开始: 只安装和运行必需的服务和软件。
- 持续学习: 服务器技术不断发展,安全威胁层出不穷,保持学习至关重要。
从哪里开始?
- 明确角色: 这台服务器是用来做什么的?(Web, DB, App, File, etc.)
- 安装最小系统: 只选必要的包组。
- 立即更新:
sudo apt update && sudo apt upgrade -y/sudo yum update -y - 加固 SSH: 创建用户、配置密钥、禁用 Root 和密码登录。
- 配置防火墙: 启用、默认拒绝入站、开放必要端口。
- 安装和配置核心服务: 按角色安装 Web/DB/App 软件并做基本安全配置。
- 配置监控: 至少设置基础的系统监控和日志查看。
- 实施备份: 立即制定并开始执行备份策略。
- 编写文档: 记录以上所有步骤和配置。
工具推荐:

- 配置管理/自动化: Ansible (简单易学), SaltStack, Puppet, Chef
- 监控: Prometheus + Grafana, Zabbix, Nagios, Datadog, New Relic
- 日志管理: ELK Stack (Elasticsearch, Logstash, Kibana), Graylog, Loki + Grafana
- 备份: rsync, BorgBackup, restic, Duplicity, Rclone (配合云存储), Veeam (商业), 数据库原生工具
- 安全扫描: lynis (本地), OpenVAS, Nessus (商业), nmap (端口扫描)
- 终端复用: tmux, screen (防止 SSH 断开导致任务中断)
重要警告: 在进行任何关键配置修改(尤其是防火墙、SSH、网络)之前,务必确保你有另一种访问服务器的方式(如控制台/KVM/IPMI),否则一个错误的配置可能导致你永久失去访问权限!
这份指南提供了一个全面的框架,具体的配置细节(如 Nginx 虚拟主机配置、MySQL 优化参数、特定服务的 SELinux 策略)需要根据您使用的具体软件、发行版和业务需求进行深入研究,希望这个指南能为您提供一个良好的起点! 您对哪个具体部分更感兴趣?

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/293905.html

