安全基线配置
教学目标
- 掌握安全基线的基本概念和重要性
- 了解常见的安全基线标准和规范
- 熟悉 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 进行日志集中管理
- 定期评估:执行季度安全基线评估,生成合规报告
- 持续改进:定期审查和更新安全基线标准
课后练习
安全基线配置练习:
- 选择一个 Linux 系统(如 CentOS、Ubuntu)
- 下载并安装 OpenSCAP 或 Lynis 工具
- 执行安全扫描,识别安全问题
- 根据扫描结果实施安全基线配置
- 再次执行扫描,验证配置效果
安全基线标准研究:
- 研究 CIS、NIST、PCI DSS 等安全基线标准
- 比较不同标准的异同点
- 分析适合特定场景的安全基线标准
自动化安全基线配置:
- 使用 Ansible 或其他配置管理工具
- 创建自动化安全基线配置脚本
- 在多个系统上测试配置效果
安全基线监控练习:
- 配置系统审计和日志监控
- 建立定期安全扫描机制
- 配置安全事件通知
企业级安全基线管理:
- 设计企业级安全基线管理框架
- 制定安全基线管理流程
- 编写安全基线管理文档
安全基线合规性检查:
- 执行安全基线合规性检查
- 生成合规性报告
- 分析和解决合规问题
总结
本章节详细介绍了 Linux 系统安全基线的配置方法,包括:
- 安全基线的基本概念和重要性
- 常见的安全基线标准和规范
- Linux 系统安全基线的核心配置项
- 安全基线的实施步骤和验证方法
- 安全基线的持续维护和更新方法
- 实际安全基线配置案例的分析和解决
通过学习本章节,您应该能够全面了解安全基线的配置方法,掌握 Linux 系统安全基线的核心配置项,提高安全基线实施和管理的能力。在实际应用中,建议根据系统的具体情况和安全需求,选择适合的安全基线标准,制定合理的实施计划,并建立持续监控和更新机制,确保系统安全性达到预期目标。