服务器角色配置本质是按需启用并加固linux子系统:明确web/api、数据库、容器或日志等服务目标后,分别调优内核机制、权限模型(apparmor/selinux)、systemd服务单元、网络策略与auditd审计能力,并确保强制访问控制显式激活。
服务器角色与功能的配置,本质是按需启用和加固 linux 子系统,而非“开启所有功能”。核心在于明确服务目标(如 web 服务器、数据库网关、容器运行时),再逐层配置对应子系统:内核机制、权限模型、服务单元、网络策略与审计能力。
明确角色后选择关键子系统
不同角色依赖不同底层支撑:
- Web/API 服务:需启用 网络子系统(VFS + socket 层)、HTTP 相关内核参数(如 net.ipv4.tcp_tw_reuse),配合 AppArmor 或 SELinux 限制 Nginx/Apache 进程路径与能力
- 数据库服务器(如 PostgreSQL):重点配置 内存管理(vm.swappiness)、I/O 调度器(deadline 或 mq-deadline),并用 systemd 的 MemoryLimit/CPUQuota 约束实例资源
- 容器宿主机:必须启用 cgroups v2、namespaces、overlayfs 文件系统,同时加载 AppArmor(Ubuntu/Debian)或 SELinux(RHEL/CentOS) 为容器运行时(如 containerd)提供 MAC 防护
- 日志/审计服务器:启用 auditd 子系统,配置 kernel.audit=1,并通过 rsyslog 或 journald 转发规则集中处理事件
权限与安全子系统必须显式激活
很多发行版默认不启用强制访问控制,需手动确认并加载:
- AppArmor:检查
cat /sys/module/apparmor/parameters/enabled是否为 Y;运行sudo systemctl status apparmor确保服务活跃;用aa-status查看已加载 profile - SELinux:查看
/etc/selinux/config中 SELINUX=enforcing,执行sestatus确认当前模式;targeted 策略已覆盖绝大多数服务,无需手动写策略即可生效 - sudo 权限:将用户加入 sudo 组(
usermod -aG sudo username),或编辑/etc/sudoers添加细粒度命令白名单,避免直接赋予 ALL 权限
服务生命周期由 systemd 精确管控
角色功能最终落地为 systemd service 单元,配置要点包括:
- 服务文件放在
/etc/systemd/system/下,以.service结尾 - 在
[Service]段中设置资源边界:MemoryMax=2G、CPUQuota=75%、RestrictAddressFamilies=AF_UNIX AF_INET - 启用最小能力集:
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SYS_CHROOT,禁用危险能力:NoNewPrivileges=true - 启动前校验环境:
ExecStartPre=/usr/bin/test -f /etc/myapp/config.yaml
网络与文件系统子系统需按角色调优
基础功能之外,针对性优化可提升稳定性与安全性:
- NFS 服务器角色:启用
rpcbind和nfs-server,在/etc/exports中限定客户端 IP 与只读/同步选项,关闭insecure标志 - TFTP 服务(如 PXE 启动):限制根目录为
/var/tftpboot,用systemd socket activation按需启动,避免常驻进程 - VFS 层:对高 I/O 服务,挂载 ext4 时添加
noatime,data=ordered;使用 XFS 则启用inode64,allocsize=64k











