安全部署防御维度都有哪些
CentOS 系统安全配置的主要意图是构建一个防御性架构,通过多层次防护措施降低系统被攻击的风险,确保数据和服务的安全性、完整性和可用性。具体意图可分为以下核心方面:
1. 最小化攻击面• 意图:减少系统暴露的潜在漏洞• 实现方式:• 关闭非必要服务(如 avahi-daemon、cups)• 卸载无用软件包• 限制网络开放端口(通过防火墙规则)• 禁用不必要的协议(如 ICMP 响应)2. 身份认证加固• 意图:防止未授权访问• 实现方式:• 强制复杂密码策略(长度、字符类型)• 禁用 root 远程登录• 启用 SSH 密钥认证• 配置账户锁定机制(如 fail2ban)3. 权限控制• 意图:遵循最小权限原则• 实现方式:• 严格设置文件/目录权限(如 /etc/passwd 只读)• 清理 SUID/SGID 危险文件• 通过 SELinux 实施强制访问控制(MAC)• 配置合理的 umask 默认值4. 入侵检测与防御• 意图:实时监控和阻断恶意行为• 实现方式:• 启用审计服务(auditd)记录关键操作• 部署 fail2ban 防暴力破解• 定期扫描 rootkit(rkhunter、chkrootkit)• 内核级防护(如 ASLR 内存随机化)5. 数据保护• 意图:防止敏感信息泄露或篡改• 实现方式:• 监控系统关键文件(如 /etc/shadow 的修改)• 加密通信(SSH 强加密算法)• 日志集中存储(防删除篡改)6. 合规性要求• 意图:满足安全标准(如等保、ISO27001)• 实现方式:• 密码复杂度符合政策要求• 留存审计日志(满足事后追溯)• 定期漏洞扫描(如 lynis 自动化检查)7. 持续性安全维护• 意图:建立长期安全运维机制• 实现方式:• 自动安全更新(yum-cron)• 定期安全检查任务(通过 cron 调度)• 内核参数优化(如防 SYN 洪水攻击)关键安全理念体现• 纵深防御:不依赖单一防护层(网络+主机+应用)• 默认拒绝:白名单机制(如防火墙只放行必要端口)• 零信任:即使内部访问也需验证(如 SSH 密钥)ℹ️ 注意:安全配置需平衡安全性与可用性。过度限制可能导致服务异常,建议在生产环境部署前进行充分测试。
具体配置如下一、系统更新与补丁管理1. 定期更新系统代码语言:javascript复制sudo yum update -y
sudo yum upgrade -y2. 启用自动安全更新代码语言:javascript复制sudo yum install yum-cron -y
sudo systemctl enable yum-cron
sudo systemctl start yum-cron配置 /etc/yum/yum-cron.conf 设置自动更新策略
二、账户与认证安全1. 密码策略配置代码语言:javascript复制sudo vi /etc/login.defs修改以下参数:
代码语言:javascript复制PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_MIN_LEN 12
PASS_WARN_AGE 142. 安装并配置 pam_pwquality代码语言:javascript复制sudo yum install libpwquality -y
sudo vi /etc/security/pwquality.conf添加/修改:
代码语言:javascript复制minlen = 12
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -13. 限制root远程登录代码语言:javascript复制sudo vi /etc/ssh/sshd_config修改:
代码语言:javascript复制PermitRootLogin no三、SSH安全加固1. 修改SSH默认端口代码语言:javascript复制sudo vi /etc/ssh/sshd_config修改:
代码语言:javascript复制Port 2222 # 改为非标准端口2. 启用密钥认证,禁用密码认证代码语言:javascript复制PubkeyAuthentication yes
PasswordAuthentication no3. 限制SSH访问IP代码语言:javascript复制AllowUsers user@192.168.1.*4. 配置SSH超时代码语言:javascript复制ClientAliveInterval 300
ClientAliveCountMax 05. 重启SSH服务代码语言:javascript复制sudo systemctl restart sshd四、防火墙配置1. 启用firewalld代码语言:javascript复制sudo systemctl enable firewalld
sudo systemctl start firewalld2. 基本规则配置代码语言:javascript复制sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-port=2222/tcp # 如果修改了SSH端口
sudo firewall-cmd --reload3. 限制ICMP代码语言:javascript复制sudo firewall-cmd --permanent --add-icmp-block=echo-reply
sudo firewall-cmd --permanent --add-icmp-block=echo-request五、SELinux配置1. 检查SELinux状态代码语言:javascript复制sestatus2. 配置为强制模式代码语言:javascript复制sudo vi /etc/selinux/config确保:
代码语言:javascript复制SELINUX=enforcing六、文件系统安全1. 关键目录权限设置代码语言:javascript复制sudo chmod 700 /boot /usr/src /lib/modules /etc/sysconfig/network-scripts
sudo chmod 750 /var/log2. 设置umask代码语言:javascript复制sudo vi /etc/profile添加:
代码语言:javascript复制umask 0273. 禁用不必要的SUID/SGID代码语言:javascript复制find / -perm /4000 -type f -exec ls -la {} \; 2>/dev/null
find / -perm /2000 -type f -exec ls -la {} \; 2>/dev/null七、服务与进程安全1. 禁用不必要的服务代码语言:javascript复制sudo systemctl disable avahi-daemon cups bluetooth
sudo systemctl stop avahi-daemon cups bluetooth2. 检查监听端口代码语言:javascript复制sudo netstat -tulnp
sudo ss -tulnp八、日志与监控1. 启用审计服务代码语言:javascript复制sudo yum install audit -y
sudo systemctl enable auditd
sudo systemctl start auditd2. 配置审计规则代码语言:javascript复制sudo vi /etc/audit/audit.rules添加:
代码语言:javascript复制-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity3. 安装并配置fail2ban代码语言:javascript复制sudo yum install epel-release -y
sudo yum install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban九、内核参数加固1. 修改sysctl配置代码语言:javascript复制sudo vi /etc/sysctl.conf添加:
代码语言:javascript复制net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
net.ipv4.tcp_syncookies=1
kernel.exec-shield=1
kernel.randomize_va_space=22. 应用配置代码语言:javascript复制sudo sysctl -p十、定期安全检查1. 安装安全检查工具代码语言:javascript复制sudo yum install rkhunter chkrootkit lynis -y2. 定期扫描代码语言:javascript复制sudo rkhunter --check
sudo chkrootkit
sudo lynis audit system3. 设置cron任务定期检查代码语言:javascript复制sudo crontab -e添加:
代码语言:javascript复制0 3 * * * /usr/bin/rkhunter --check --cronjob 通过以上全面的安全配置,可以显著提高CentOS系统的安全性。根据实际环境需求,可能需要调整某些配置项。建议在实施前在测试环境验证,并确保有完整的备份和回滚方案。