1. CentOS7服务器安全防护的必要性
在当今互联网环境中,服务器安全防护早已不是可有可无的选项。我管理过上百台CentOS7服务器,亲眼见证过未做安全防护的服务器从被入侵到完全失控只需要37分钟。不同于Windows系统,Linux服务器往往被误认为"足够安全",但现实是:默认安装的CentOS7就像没上锁的保险箱,任何人都可以轻易打开。
服务器安全防护的核心目标是建立纵深防御体系。这就像中世纪城堡的防御工事——外围有护城河(防火墙),城墙上有哨兵(入侵检测),内城有卫兵(权限控制)。CentOS7作为企业级Linux发行版,提供了完整的工具链来实现这些防护,但需要管理员主动配置。
重要提示:安全防护不是一次性工作,而是持续的过程。我建议至少每月进行一次全面安全检查,每周检查关键日志。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础系统加固
2.1 最小化安装与更新策略
我强烈建议采用最小化安装CentOS7。默认安装会包含大量不必要的服务(如蓝牙、打印机支持),每个多余的服务都是潜在的攻击面。安装完成后立即执行:
bash复制yum update -y && yum upgrade -y
但要注意:在生产环境中直接更新所有包可能导致兼容性问题。我的经验是建立分级更新策略:
- 安全更新:24小时内应用
- 重要更新:测试后7天内应用
- 常规更新:下一个维护窗口应用
2.2 用户与权限管理
创建专用管理员账户并禁用root远程登录:
bash复制useradd admin
passwd admin
usermod -aG wheel admin
# 禁止root SSH登录
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
我习惯使用以下权限控制组合:
- sudo仅限必要命令
- 关键目录设置不可变属性:
chattr +i /etc/passwd /etc/shadow - 定期检查SUID/SGID文件:
find / -perm /6000 -type f -exec ls -ld {} \;
2.3 SSH安全强化
SSH是服务器最重要的入口,也是最常被攻击的目标。这是我的生产环境SSH配置模板(/etc/ssh/sshd_config):
bash复制Port 58222 # 改为非标准端口
Protocol 2
PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 60
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers admin
PasswordAuthentication no # 强制使用密钥认证
配置完成后务必测试新端口连接再退出当前会话!我遇到过多个管理员修改后立即被锁在服务器外的案例。
3. 网络层防护
3.1 防火墙配置
CentOS7默认的firewalld比iptables更易管理。这是我的基线配置:
bash复制systemctl enable firewalld
systemctl start firewalld
# 基础规则
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --remove-service=dhcpv6-client
firewall-cmd --permanent --zone=public --set-target=DROP
# 限制SSH访问IP(根据实际情况修改)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
firewall-cmd --reload
对于Web服务器,还需要精确控制开放端口:
bash复制firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=8080/tcp
3.2 网络攻击防护
对抗暴力破解和DDoS的基础措施:
- 安装fail2ban:
bash复制yum install epel-release -y
yum install fail2ban -y
systemctl enable fail2ban
- 配置/etc/fail2ban/jail.local:
ini复制[sshd]
enabled = true
maxretry = 3
bantime = 1h
findtime = 300
- 启用SYN Cookie防护:
bash复制echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
sysctl -p
4. 服务安全配置
4.1 不必要服务清理
运行systemctl list-unit-files | grep enabled检查已启用服务。常见需要禁用的服务包括:
- cups
- avahi-daemon
- bluetooth
- rpcbind
禁用命令:systemctl disable <service>
4.2 Web服务器安全
如果是Apache,必须修改的配置(/etc/httpd/conf/httpd.conf):
apache复制ServerTokens Prod
ServerSignature Off
TraceEnable Off
Header always append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Nginx的等效配置(/etc/nginx/nginx.conf):
nginx复制server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
4.3 数据库安全
MySQL/MariaDB基础安全设置:
sql复制DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost');
DROP DATABASE test;
FLUSH PRIVILEGES;
5. 高级防护措施
5.1 文件完整性监控
安装aide进行文件完整性检查:
bash复制yum install aide -y
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
设置每日自动检查:
bash复制echo "0 3 * * * /usr/sbin/aide --check" >> /etc/crontab
5.2 入侵检测系统
使用OSSEC进行实时监控:
bash复制yum install -y wget
wget https://github.com/ossec/ossec-hids/archive/3.6.0.tar.gz
tar -xvzf 3.6.0.tar.gz
cd ossec-hids-3.6.0
./install.sh
5.3 SELinux策略
虽然SELinux学习曲线陡峭,但值得投入时间。基础命令:
bash复制# 查看状态
sestatus
# 修改模式
setenforce 1 # 强制模式
setenforce 0 # 宽容模式
# 永久生效
sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
6. 日志与监控
6.1 集中日志管理
配置rsyslog发送日志到中央服务器(/etc/rsyslog.conf):
bash复制*.* @192.168.1.100:514
6.2 关键日志监控
设置实时监控SSH登录尝试:
bash复制tail -f /var/log/secure | grep "Failed password"
6.3 自定义日志规则
在/etc/rsyslog.d/下创建安全规则:
bash复制# 记录sudo使用
:programname, isequal, "sudo" /var/log/sudo.log
# 记录用户登录
:msg, contains, "session opened" /var/log/userlogin.log
7. 应急响应准备
7.1 备份策略
我的备份方案组合:
- 每日增量备份:
tar -g /backup/snapshot -czf /backup/daily_$(date +%Y%m%d).tar.gz /etc /var/www - 每周全量备份到远程服务器
- 关键数据库实时复制
7.2 入侵检查清单
发现异常时立即检查:
bash复制# 检查异常进程
ps auxf
# 检查网络连接
netstat -antup
# 检查最近修改的文件
find / -mtime -1 -type f -exec ls -l {} \;
# 检查计划任务
crontab -l
ls /etc/cron.*
7.3 恢复流程
准备好系统恢复镜像,包含:
- 基础系统包
- 安全配置模板
- 必要的应用软件
- 备份恢复脚本
最后提醒:没有100%安全的系统。这套配置可以阻挡90%的自动化攻击,但面对针对性攻击时,还需要结合网络架构安全、应用安全等多层防护。我建议至少每季度进行一次渗透测试,持续完善防护体系。
