安全基线配置

教学目标

  • 掌握安全基线的基本概念和重要性
  • 了解常见的安全基线标准和规范
  • 熟悉 Linux 系统安全基线的核心配置项
  • 学会实施和验证 Linux 系统安全基线
  • 了解安全基线的持续维护和更新方法

主要知识点

1. 安全基线基本概念

  • 安全基线:为确保系统安全性而定义的一组最低安全配置要求
  • 安全基线的作用
    • 确保系统安全性达到基本要求
    • 提供统一的安全配置标准
    • 简化安全管理和审计
    • 满足合规性要求
  • 安全基线的类型
    • 系统级基线:操作系统层面的安全配置
    • 应用级基线:应用程序层面的安全配置
    • 网络级基线:网络设备和服务层面的安全配置

2. 常见安全基线标准

  • CIS 基准

    • Center for Internet Security 发布的安全配置基准
    • 涵盖各种操作系统、应用程序和网络设备
    • 提供详细的安全配置建议
  • NIST 指南

    • National Institute of Standards and Technology 发布的安全指南
    • 包括 NIST SP 800-53、SP 800-171 等
    • 提供全面的安全控制框架
  • PCI DSS

    • Payment Card Industry Data Security Standard
    • 针对处理信用卡数据的系统
    • 要求严格的安全控制措施
  • ISO 27001

    • 信息安全管理体系标准
    • 提供安全管理的框架和要求
    • 包括安全基线的管理要求
  • 行业特定标准

    • 金融行业:银保监会安全要求
    • 医疗行业:HIPAA 合规要求
    • 政府部门:特定的安全标准

3. Linux 系统安全基线核心配置项

  • 账户管理

    • 禁用或删除不必要的账户
    • 限制 root 用户登录
    • 配置 sudo 权限
    • 启用账户过期策略
  • 密码策略

    • 密码复杂度要求
    • 密码长度要求
    • 密码过期时间
    • 密码历史记录
    • 账户锁定策略
  • 文件系统安全

    • 文件权限设置
    • 目录权限设置
    • 特殊文件保护
    • 文件系统挂载选项
    • 敏感文件监控
  • 网络安全

    • 防火墙配置
    • 网络服务管理
    • 网络访问控制
    • 远程访问安全
    • 网络协议安全
  • 系统更新

    • 自动更新配置
    • 安全补丁管理
    • 漏洞扫描和修复
  • 安全审计

    • 系统审计配置
    • 日志管理和监控
    • 安全事件记录
  • 服务和进程

    • 禁用不必要的服务
    • 限制系统进程
    • 服务权限控制
  • 内核安全

    • 内核参数优化
    • 安全模块配置
    • 内核漏洞修复

4. 安全基线实施步骤

  • 准备阶段

    • 确定适用的安全基线标准
    • 评估系统当前状态
    • 制定实施计划
    • 准备必要的工具和资源
  • 实施阶段

    • 执行安全基线配置
    • 记录配置变更
    • 测试配置有效性
  • 验证阶段

    • 执行安全基线验证
    • 检查配置合规性
    • 识别和修复偏差
  • 维护阶段

    • 建立基线维护机制
    • 定期更新安全基线
    • 监控基线合规性

5. 安全基线配置工具

  • 自动化配置工具

    • Ansible:自动化配置管理工具
    • Puppet:配置管理工具
    • Chef:配置管理工具
    • SaltStack:配置管理工具
  • 安全扫描工具

    • OpenSCAP:开源安全合规评估工具
    • Lynis:Linux 安全审计工具
    • CIS-CAT:CIS 配置评估工具
  • 基线验证工具

    • oscap:OpenSCAP 命令行工具
    • auditd:系统审计工具
    • tripwire:文件完整性监控工具

6. 安全基线持续维护

  • 定期评估

    • 定期执行安全基线评估
    • 识别新的安全风险
    • 更新安全基线配置
  • 变更管理

    • 建立配置变更管理流程
    • 记录所有配置变更
    • 评估变更对安全基线的影响
  • 合规监控

    • 持续监控系统合规性
    • 及时发现和修复偏差
    • 生成合规性报告
  • 安全意识

    • 培训系统管理员和用户
    • 提高安全意识
    • 确保安全基线的有效执行

7. 安全基线最佳实践

  • 基于风险:根据系统风险评估结果调整安全基线
  • 符合合规:确保安全基线符合相关法律法规和行业标准
  • 可操作性:安全基线应具体、明确、可操作
  • 定期更新:根据新的威胁和漏洞更新安全基线
  • 持续监控:持续监控系统的安全基线合规性
  • 文档化:详细记录安全基线配置和变更

8. 安全基线配置注意事项

  • 业务影响:评估安全基线对业务的影响
  • 兼容性:确保安全基线与系统和应用程序兼容
  • 性能影响:评估安全基线对系统性能的影响
  • 可维护性:确保安全基线配置易于维护和管理
  • 紧急响应:建立安全基线偏差的紧急响应机制

实用案例分析

案例 1:基于 CIS 基准的 Linux 安全基线配置

场景:按照 CIS 基准为 CentOS/RHEL 系统配置安全基线

分析步骤

# 1. 下载和安装 CIS 基准
# 访问 CIS 官网下载适用于 CentOS/RHEL 的 CIS 基准文档
# 安装 OpenSCAP 工具
apt install openscap-scanner scap-security-guide

# 2. 执行安全扫描
# 扫描系统当前状态
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis --report scan-report.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml

# 3. 实施安全基线配置
# 账户管理
# 禁用不必要的账户
for user in adm lp sync shutdown halt mail news uucp operator games gopher ftp;
do
  if id -u $user >/dev/null 2>&1; then
    userdel $user
  fi
done

# 限制 root 登录
vim /etc/ssh/sshd_config
# 修改以下配置
PermitRootLogin no

# 配置 sudo 权限
visudo
# 添加以下配置
%wheel ALL=(ALL) ALL
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults logfile="/var/log/sudo.log"
Defaults log_input,log_output

# 密码策略
# 配置密码复杂度
vim /etc/security/pwquality.conf
# 添加以下配置
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
difok = 3

# 配置密码过期
vim /etc/login.defs
# 修改以下配置
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7

# 配置账户锁定
vim /etc/pam.d/system-auth
# 添加以下配置
auth        required      pam_faillock.so preauth silent audit deny=5 unlock_time=900
auth        [success=1 default=bad]     pam_unix.so
auth        [default=die]               pam_faillock.so authfail audit deny=5 unlock_time=900
auth        sufficient                  pam_faillock.so authsucc audit deny=5 unlock_time=900

# 文件系统安全
# 配置文件系统挂载选项
vim /etc/fstab
# 修改以下配置
/dev/sda1 / ext4 defaults,nosuid,nodev,noexec 0 0
/dev/sda2 /boot ext4 defaults,nosuid,nodev,noexec 0 0
/dev/sda3 /tmp ext4 defaults,nosuid,nodev,noexec 0 0
/dev/sda4 /var ext4 defaults,nosuid,nodev 0 0
/dev/sda5 /home ext4 defaults,nosuid,nodev 0 0

# 设置敏感文件权限
chmod 600 /etc/passwd
chmod 600 /etc/shadow
chmod 600 /etc/gshadow
chmod 600 /etc/sudoers
chmod 644 /etc/group

# 网络安全
# 配置防火墙
firewall-cmd --default-zone=drop
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

# 禁用不必要的网络服务
systemctl disable avahi-daemon
systemctl disable cups
systemctl disable rpcbind
systemctl disable nfs-server
systemctl disable bluetooth

# 系统更新
# 配置自动更新
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

# 安全审计
# 配置系统审计
vim /etc/audit/auditd.conf
# 修改以下配置
max_log_file = 8
max_log_file_action = rotate
num_logs = 5

# 添加审计规则
vim /etc/audit/rules.d/audit.rules
# 添加以下规则
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /var/log/auth.log -p wa -k auth_log

# 重启审计服务
systemctl restart auditd

# 服务和进程
# 禁用不必要的服务
systemctl disable postfix
systemctl disable chronyd
systemctl disable NetworkManager

# 内核安全
# 配置内核参数
vim /etc/sysctl.conf
# 添加以下配置
# 网络安全
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

# 文件系统安全
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

# 内存安全
kernel.randomize_va_space = 2
kernel.exec-shield = 1

# 应用配置
# 重新加载内核参数
sysctl -p

# 4. 验证安全基线配置
# 再次执行安全扫描
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis --report final-report.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml

# 检查配置合规性
# 分析扫描报告
# 修复发现的问题

安全基线实施总结

  • 准备阶段:下载 CIS 基准文档,安装 OpenSCAP 工具
  • 实施阶段:执行账户管理、密码策略、文件系统安全、网络安全等配置
  • 验证阶段:执行安全扫描,检查配置合规性
  • 维护阶段:建立持续监控和更新机制

案例 2:基于 Lynis 的 Linux 安全基线配置

场景:使用 Lynis 工具为 Ubuntu 系统配置安全基线

分析步骤

# 1. 安装 Lynis
# 从官方仓库安装
apt update
apt install lynis

# 或从源码安装
git clone https://github.com/CISOfy/lynis.git
cd lynis

# 2. 执行安全扫描
# 扫描系统当前状态
lynis audit system

# 3. 根据扫描结果实施安全基线配置
# 账户管理
# 禁用不必要的账户
for user in adm lp sync shutdown halt mail news uucp operator games gopher ftp;
do
  if id -u $user >/dev/null 2>&1; then
    userdel $user
  fi
done

# 限制 root 登录
vim /etc/ssh/sshd_config
# 修改以下配置
PermitRootLogin no

# 密码策略
# 配置密码复杂度
vim /etc/pam.d/common-password
# 添加以下配置
password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

# 配置密码过期
vim /etc/login.defs
# 修改以下配置
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7

# 文件系统安全
# 配置文件系统挂载选项
vim /etc/fstab
# 修改以下配置
UUID=xxx / ext4 defaults,nosuid,nodev,noexec 0 1
UUID=xxx /boot ext4 defaults,nosuid,nodev,noexec 0 2
UUID=xxx /tmp ext4 defaults,nosuid,nodev,noexec 0 2
UUID=xxx /var ext4 defaults,nosuid,nodev 0 2
UUID=xxx /home ext4 defaults,nosuid,nodev 0 2

# 重新挂载文件系统
mount -o remount /
mount -o remount /boot
mount -o remount /tmp
mount -o remount /var
mount -o remount /home

# 网络安全
# 配置防火墙
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow http
ufw allow https
ufw enable

# 禁用不必要的网络服务
systemctl disable avahi-daemon
systemctl disable cups
systemctl disable rpcbind
systemctl disable nfs-server
systemctl disable bluetooth

# 系统更新
# 配置自动更新
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

# 安全审计
# 配置系统审计
vim /etc/audit/auditd.conf
# 修改以下配置
max_log_file = 8
max_log_file_action = rotate
num_logs = 5

# 添加审计规则
vim /etc/audit/rules.d/audit.rules
# 添加以下规则
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /var/log/auth.log -p wa -k auth_log

# 重启审计服务
systemctl restart auditd

# 服务和进程
# 禁用不必要的服务
systemctl disable postfix
systemctl disable chronyd
systemctl disable NetworkManager

# 内核安全
# 配置内核参数
vim /etc/sysctl.conf
# 添加以下配置
# 网络安全
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

# 文件系统安全
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

# 内存安全
kernel.randomize_va_space = 2
kernel.exec-shield = 1

# 应用配置
# 重新加载内核参数
sysctl -p

# 4. 验证安全基线配置
# 再次执行安全扫描
lynis audit system

# 检查配置合规性
# 分析扫描结果
# 修复发现的问题

# 5. 建立持续监控机制
# 创建定期扫描计划
crontab -e
# 添加以下任务
0 2 * * * /usr/bin/lynis audit system --report-file /var/log/lynis-report.txt

# 配置邮件通知
# 确保系统可以发送邮件
apt install mailutils
# 修改 cron 任务添加邮件通知
0 2 * * * /usr/bin/lynis audit system --report-file /var/log/lynis-report.txt | mail -s "Lynis Security Audit Report" admin@example.com

安全基线实施总结

  • 准备阶段:安装 Lynis 工具
  • 实施阶段:根据 Lynis 扫描结果执行安全配置
  • 验证阶段:再次执行安全扫描,检查配置合规性
  • 维护阶段:建立定期扫描和邮件通知机制

案例 3:企业级 Linux 安全基线管理

场景:为企业 Linux 服务器群制定和实施安全基线管理策略

分析步骤

# 1. 建立安全基线管理框架
# 成立安全基线管理团队
# 确定适用的安全基线标准
# 制定安全基线管理流程

# 2. 自动化安全基线配置
# 使用 Ansible 自动化配置管理
# 创建 Ansible 配置文件

# 创建 Ansible 目录结构
mkdir -p ansible/roles/common/tasks
mkdir -p ansible/roles/common/files
mkdir -p ansible/roles/common/templates

# 创建主配置文件
vim ansible/playbook.yml
# 添加以下内容
---
- hosts: all
  become: yes
  roles:
    - common

# 创建角色配置
vim ansible/roles/common/tasks/main.yml
# 添加以下内容
---
- name: Update package cache
  apt:
    update_cache: yes

- name: Install necessary packages
  apt:
    name:
      - ufw
      - auditd
      - unattended-upgrades
      - lynis
    state: present

- name: Configure firewall
  ufw:
    default: deny
    direction: incoming

- name: Allow SSH
  ufw:
    rule: allow
    port: 22
    proto: tcp

- name: Allow HTTP
  ufw:
    rule: allow
    port: 80
    proto: tcp

- name: Allow HTTPS
  ufw:
    rule: allow
    port: 443
    proto: tcp

- name: Enable firewall
  ufw:
    state: enabled

- name: Configure password policy
  template:
    src: templates/common-password.j2
    dest: /etc/pam.d/common-password
    mode: '0644'

- name: Configure login.defs
  template:
    src: templates/login.defs.j2
    dest: /etc/login.defs
    mode: '0644'

- name: Configure sshd
  template:
    src: templates/sshd_config.j2
    dest: /etc/ssh/sshd_config
    mode: '0600'
  notify: restart sshd

- name: Configure sysctl
  template:
    src: templates/sysctl.conf.j2
    dest: /etc/sysctl.conf
    mode: '0644'
  notify: reload sysctl

- name: Enable auditd
  service:
    name: auditd
    enabled: yes
    state: started

- name: Configure audit rules
  template:
    src: templates/audit.rules.j2
    dest: /etc/audit/rules.d/audit.rules
    mode: '0644'
  notify: restart auditd

- name: Enable unattended upgrades
  template:
    src: templates/50unattended-upgrades.j2
    dest: /etc/apt/apt.conf.d/50unattended-upgrades
    mode: '0644'

- name: Enable automatic updates
  template:
    src: templates/20auto-upgrades.j2
    dest: /etc/apt/apt.conf.d/20auto-upgrades
    mode: '0644'

# 创建模板文件
# 示例:sshd_config.j2
vim ansible/roles/common/templates/sshd_config.j2
# 添加以下内容
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10
PubkeyAuthentication yes
AuthorizedKeysFile     %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

# 3. 执行自动化配置
# 配置 Ansible 主机清单
vim ansible/inventory.ini
# 添加以下内容
[servers]
server1 ansible_host=192.168.1.10
server2 ansible_host=192.168.1.11
server3 ansible_host=192.168.1.12

# 执行 Ansible 配置
cd ansible
ansible-playbook -i inventory.ini playbook.yml

# 4. 集中化安全基线监控
# 部署 ELK Stack 进行日志集中管理
# 安装 Elasticsearch, Logstash, Kibana

# 配置 Logstash 收集 Lynis 报告
vim /etc/logstash/conf.d/lynis.conf
# 添加以下内容
input {
  file {
    path => "/var/log/lynis-report.txt"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  # 解析 Lynis 报告
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "lynis-%{+YYYY.MM.dd}"
  }
}

# 配置 Kibana 仪表板
# 创建安全基线监控仪表板

# 5. 定期安全基线评估
# 执行季度安全基线评估
# 生成安全基线合规报告
# 分析和解决合规问题

# 6. 安全基线持续改进
# 定期审查安全基线标准
# 根据新的威胁和漏洞更新安全基线
# 优化安全基线配置流程

安全基线管理总结

  • 框架建立:成立管理团队,确定标准,制定流程
  • 自动化配置:使用 Ansible 自动化安全基线配置
  • 集中监控:部署 ELK Stack 进行日志集中管理
  • 定期评估:执行季度安全基线评估,生成合规报告
  • 持续改进:定期审查和更新安全基线标准

课后练习

  1. 安全基线配置练习

    • 选择一个 Linux 系统(如 CentOS、Ubuntu)
    • 下载并安装 OpenSCAP 或 Lynis 工具
    • 执行安全扫描,识别安全问题
    • 根据扫描结果实施安全基线配置
    • 再次执行扫描,验证配置效果
  2. 安全基线标准研究

    • 研究 CIS、NIST、PCI DSS 等安全基线标准
    • 比较不同标准的异同点
    • 分析适合特定场景的安全基线标准
  3. 自动化安全基线配置

    • 使用 Ansible 或其他配置管理工具
    • 创建自动化安全基线配置脚本
    • 在多个系统上测试配置效果
  4. 安全基线监控练习

    • 配置系统审计和日志监控
    • 建立定期安全扫描机制
    • 配置安全事件通知
  5. 企业级安全基线管理

    • 设计企业级安全基线管理框架
    • 制定安全基线管理流程
    • 编写安全基线管理文档
  6. 安全基线合规性检查

    • 执行安全基线合规性检查
    • 生成合规性报告
    • 分析和解决合规问题

总结

本章节详细介绍了 Linux 系统安全基线的配置方法,包括:

  • 安全基线的基本概念和重要性
  • 常见的安全基线标准和规范
  • Linux 系统安全基线的核心配置项
  • 安全基线的实施步骤和验证方法
  • 安全基线的持续维护和更新方法
  • 实际安全基线配置案例的分析和解决

通过学习本章节,您应该能够全面了解安全基线的配置方法,掌握 Linux 系统安全基线的核心配置项,提高安全基线实施和管理的能力。在实际应用中,建议根据系统的具体情况和安全需求,选择适合的安全基线标准,制定合理的实施计划,并建立持续监控和更新机制,确保系统安全性达到预期目标。

扩展阅读

« 上一篇 安全策略制定 下一篇 » 账户安全加固