系统安全这件事,本质上是一场持续的攻防博弈。许多常见漏洞之所以能够得逞,往往不是因为攻击者手段多么高超,而是管理员忽略了最基础的防护措施。下面这些硬性准则,堪称 CentOS 安全运维的核心基本功,每条都经过实际环境检验,严格执行至少能抵御 80% 的常见攻击。
保持系统与软件更新——定期使用 yum 或 dnf 将系统及所有软件包更新至最新版本,别让已知漏洞长期暴露。建议直接启用自动更新,例如配置 yum-cron 服务,让系统自动安装安全补丁,避免因遗忘手动更新而被 exploit 趁虚而入。
强化账户与权限管理——核心原则就是“最小权限”:每个用户只赋予够用的权限,日常操作避免直接使用 root 账户,需要提权时通过 sudo 完成。务必禁用 root 远程登录;普通用户先通过 SSH 登入再切换 root,安全系数更高。密码强度必须达标——大小写字母、数字、特殊字符混合,长度不少于 8 位,最好定期更换,避免一个密码走天下。
配置防火墙限制网络访问——CentOS 7 及以上推荐使用 firewalld,或继续用 iptables 同样可行。只开放必要端口(如 SSH 的 22、HTTP 的 80、HTTPS 的 443),其余一律关闭。同时管控入站和出站流量,让外部攻击者连扫描服务的机会都没有。
启用 SELinux 增强强制访问控制——运行 getenforce 确认 SELinux 处于 enforcing 模式。虽然它有时会带来一些配置上的麻烦,但确实能有效阻止恶意进程越权操作。若业务需要调整策略,请使用 semanage 进行配置,在安全性与可用性之间找到平衡。
安全配置 SSH 服务——修改 /etc/ssh/sshd_config,将 PermitRootLogin 设为 no,并更换默认的 22 端口(例如改为 2222),暴力破解难度瞬间翻倍。更彻底的做法是采用 SSH 密钥认证替代密码认证——使用 ssh-keygen 生成密钥对,将公钥放入 ~/.ssh/authorized_keys,远程登录基本无忧。此外,限制登录尝试次数,例如设置 MaxAuthTries 3,连续输错三次即自动断开。
定期进行安全审计与监控——务必开启 auditd 服务,记录谁登录、哪些文件被修改、哪些命令被执行。通过 ausearch 或 aureport 分析日志,异常行为(如有人偷偷使用 root 登录)能迅速被发现。漏洞扫描工具也不可或缺——OpenVAS、Nessus 等定期扫描,弱密码、未打补丁的软件无处遁形。系统日志(/var/log/messages、/var/log/secure)需要持续监控,同时配置 logrotate 做好轮转,防止日志撑爆磁盘或被篡改。
禁用不必要的服务与组件——使用 systemctl 将不需要的 FTP、Telnet、CUPS 打印服务等统统关闭。安装 CentOS 时选择“最小化安装”(Minimal Install),只安装 @core 组核心包,不装任何用不到的软件和库,攻击面自然大幅缩减。
数据备份与恢复准备——重要数据(配置文件、数据库、用户文件)必须定期备份,使用 rsync、tar 或专业工具(如 Veeam)均可,关键是要存储在安全的位置——异地服务器、云存储都是不错选择。别忘了测试恢复流程,当遭遇 exploit 攻击导致数据丢失时,能快速拉起系统才是真本事。
使用安全工具增强防护——部署入侵检测系统(IDS,如 Snort)和入侵防御系统(IPS,如 Suricata),实时监控网络流量与系统行为,一旦发现端口扫描、恶意代码执行等可疑动作立即报警甚至主动阻断。防病毒软件(如 ClamAV)也不可忽视,定期扫描系统,将病毒、木马、勒索软件扼杀在萌芽状态。
加强安全意识与培训——所有管理员和普通用户都应能识别钓鱼邮件、恶意链接、社会工程攻击的常见手法。制定并严格执行安全策略(密码策略、访问控制、设备使用规范),避免人为因素成为系统中最薄弱的环节。
