简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

Red Hat Enterprise Linux系统安全加固指南 企业级Linux平台安全防护实战技巧与最佳实践分享

3万

主题

349

科技点

3万

积分

大区版主

木柜子打湿

积分
31898

三倍冰淇淋无人之境【一阶】财Doro小樱(小丑装)立华奏以外的星空【二阶】⑨的冰沙

发表于 2025-9-10 22:30:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Red Hat Enterprise Linux (RHEL) 是全球领先的企业级Linux操作系统,广泛应用于关键业务环境中。随着网络威胁的不断增加,保护RHEL系统安全已成为每个系统管理员和安全专家的首要任务。系统安全加固是指通过一系列技术和管理措施,提高系统抵抗攻击的能力,减少安全风险的过程。本文将全面介绍RHEL系统安全加固的实战技巧和最佳实践,帮助系统管理员构建更安全的RHEL环境。

RHEL安全基础

RHEL安全架构

RHEL基于SELinux (Security-Enhanced Linux) 构建了强大的安全架构。SELinux是由美国国家安全局(NSA)开发的强制访问控制(MAC)系统,它提供了比传统Linux权限控制更精细的安全策略。

SELinux通过以下方式增强系统安全:

• 定义安全策略,控制进程对资源的访问
• 实现最小权限原则
• 提供进程隔离
• 减少权限提升攻击的影响

安全模型

RHEL采用多层安全模型,包括:

1. 自主访问控制(DAC):传统的Linux文件权限模型
2. 强制访问控制(MAC):通过SELinux实现
3. 角色基础访问控制(RBAC):通过角色和权限分配管理用户访问

系统访问控制

用户管理

在RHEL系统中,应严格遵循最小权限原则,即用户只被授予完成其工作所需的最低权限。
  1. # 创建具有最小权限的用户
  2. sudo useradd -m -s /bin/bash username
  3. # 设置强密码
  4. sudo passwd username
  5. # 查看用户信息
  6. id username
复制代码

定期审计用户账户,确保没有未授权或多余账户。
  1. # 列出所有用户
  2. cut -d: -f1 /etc/passwd
  3. # 查找UID为0的非root账户
  4. awk -F: '($3 == 0) {print}' /etc/passwd
  5. # 查找没有密码的账户
  6. sudo awk -F: '($2 == "") {print}' /etc/shadow
复制代码

配置账户锁定策略,防止暴力破解攻击。
  1. # 编辑/etc/pam.d/system-auth文件
  2. sudo vi /etc/pam.d/system-auth
  3. # 添加以下行以实现账户锁定
  4. auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail
复制代码

认证机制

SSH是远程管理RHEL系统的主要方式,应加强其安全性。
  1. # 编辑SSH配置文件
  2. sudo vi /etc/ssh/sshd_config
  3. # 修改以下配置项
  4. Port 2222  # 更改默认端口
  5. PermitRootLogin no  # 禁止root登录
  6. PasswordAuthentication no  # 禁用密码认证,使用密钥认证
  7. PermitEmptyPasswords no  # 禁止空密码
  8. MaxAuthTries 3  # 最大认证尝试次数
  9. AllowUsers user1 user2  # 允许特定用户登录
  10. # 重启SSH服务
  11. sudo systemctl restart sshd
复制代码

为关键系统配置双因素认证,提高安全性。
  1. # 安装Google Authenticator
  2. sudo yum install google-authenticator
  3. # 为用户配置双因素认证
  4. google-authenticator
  5. # 编辑/etc/pam.d/sshd文件,添加以下行
  6. auth required pam_google_authenticator.so
复制代码

权限控制

合理配置sudo权限,避免权限滥用。
  1. # 编辑sudoers文件
  2. sudo visudo
  3. # 为特定用户分配特定命令的sudo权限
  4. username ALL=(ALL) /usr/bin/systemctl restart httpd, /usr/bin/systemctl restart nginx
  5. # 使用sudo时记录日志
  6. Defaults logfile=/var/log/sudo.log
复制代码

严格控制关键文件和目录的权限。
  1. # 设置关键目录权限
  2. sudo chmod 700 /etc /boot /usr/bin /usr/sbin /bin /sbin
  3. # 设置关键配置文件权限
  4. sudo chmod 600 /etc/passwd /etc/shadow /etc/group /etc/gshadow
  5. # 查找全局可写文件
  6. sudo find / -type f -perm -o+w -exec ls -l {} \;
  7. # 查找没有所有者的文件
  8. sudo find / -nouser -o -nogroup
复制代码

网络安全配置

防火墙设置

RHEL 7及以后版本使用firewalld作为默认防火墙管理工具。
  1. # 启动并启用firewalld
  2. sudo systemctl start firewalld
  3. sudo systemctl enable firewalld
  4. # 查看默认区域
  5. sudo firewall-cmd --get-default-zone
  6. # 查看活动区域
  7. sudo firewall-cmd --get-active-zones
  8. # 开放特定端口
  9. sudo firewall-cmd --permanent --add-port=80/tcp
  10. sudo firewall-cmd --permanent --add-port=443/tcp
  11. # 开放服务
  12. sudo firewall-cmd --permanent --add-service=http
  13. sudo firewall-cmd --permanent --add-service=https
  14. # 重新加载防火墙配置
  15. sudo firewall-cmd --reload
  16. # 查看防火墙规则
  17. sudo firewall-cmd --list-all
复制代码

配置更复杂的防火墙规则,提高网络安全性。
  1. # 限制IP访问
  2. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
  3. # 阻止特定IP
  4. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.10" reject'
  5. # 端口转发
  6. sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
  7. # 限制连接速率
  8. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="22" accept limit value="5/m"'
复制代码

网络服务安全

减少系统攻击面,禁用不必要的服务。
  1. # 查看运行中的服务
  2. sudo systemctl list-units --type=service --state=running
  3. # 禁用不必要的服务
  4. sudo systemctl stop telnet.socket
  5. sudo systemctl disable telnet.socket
  6. sudo systemctl stop rsh.socket
  7. sudo systemctl disable rsh.socket
  8. # 查看并禁用不使用的xinetd服务
  9. sudo chkconfig --list
  10. sudo chkconfig telnet off
  11. sudo chkconfig rsh off
复制代码

对必要的服务进行安全配置。
  1. # 配置Apache安全
  2. sudo vi /etc/httpd/conf/httpd.conf
  3. # 添加以下配置
  4. ServerTokens Prod
  5. ServerSignature Off
  6. TraceEnable Off
  7. Options -Indexes
  8. # 配置Nginx安全
  9. sudo vi /etc/nginx/nginx.conf
  10. # 添加以下配置
  11. server_tokens off;
  12. add_header X-Frame-Options "SAMEORIGIN";
  13. add_header X-Content-Type-Options "nosniff";
  14. add_header X-XSS-Protection "1; mode=block";
复制代码

远程访问安全

使用VPN进行安全的远程访问。
  1. # 安装OpenVPN
  2. sudo yum install openvpn easy-rsa
  3. # 配置证书颁发机构
  4. sudo mkdir /etc/openvpn/easy-rsa
  5. sudo cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/
  6. cd /etc/openvpn/easy-rsa
  7. ./easyrsa init-pki
  8. ./easyrsa build-ca
  9. ./easyrsa build-server-full server nopass
  10. ./easyrsa gen-dh
  11. openvpn --genkey --secret ta.key
  12. # 配置OpenVPN服务器
  13. sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/server/
  14. sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server/
  15. # 编辑服务器配置
  16. sudo vi /etc/openvpn/server/server.conf
  17. # 启动OpenVPN服务
  18. sudo systemctl start openvpn-server@server
  19. sudo systemctl enable openvpn-server@server
复制代码

使用SSH隧道安全地访问远程服务。
  1. # 本地端口转发
  2. ssh -L 8080:localhost:80 user@remotehost
  3. # 远程端口转发
  4. ssh -R 8080:localhost:80 user@remotehost
  5. # 动态端口转发(SOCKS代理)
  6. ssh -D 1080 user@remotehost
复制代码

文件系统安全

加密技术

使用LUKS(Linux Unified Key Setup)加密磁盘。
  1. # 安装cryptsetup
  2. sudo yum install cryptsetup
  3. # 加密分区
  4. sudo cryptsetup luksFormat /dev/sdb1
  5. sudo cryptsetup luksOpen /dev/sdb1 encrypted_disk
  6. # 格式化加密分区
  7. sudo mkfs.ext4 /dev/mapper/encrypted_disk
  8. # 挂载加密分区
  9. sudo mkdir /mnt/encrypted
  10. sudo mount /dev/mapper/encrypted_disk /mnt/encrypted
  11. # 卸载并关闭加密分区
  12. sudo umount /mnt/encrypted
  13. sudo cryptsetup luksClose encrypted_disk
复制代码

使用GPG加密敏感文件。
  1. # 安装GPG
  2. sudo yum install gnupg
  3. # 生成密钥对
  4. gpg --gen-key
  5. # 加密文件
  6. gpg -c sensitive_file.txt
  7. # 解密文件
  8. gpg -d sensitive_file.txt.gpg > sensitive_file.txt
复制代码

权限设置

正确设置SUID、SGID和Sticky Bit等特殊权限。
  1. # 查找具有SUID权限的文件
  2. sudo find / -perm -4000 -exec ls -l {} \;
  3. # 查找具有SGID权限的文件
  4. sudo find / -perm -2000 -exec ls -l {} \;
  5. # 移除不必要的SUID/SGID权限
  6. sudo chmod u-s /usr/bin/ping
  7. sudo chmod g-s /usr/bin/wall
复制代码

使用访问控制列表(ACL)实现更精细的权限控制。
  1. # 安装ACL工具
  2. sudo yum install acl
  3. # 查看文件ACL
  4. getfacl filename
  5. # 设置文件ACL
  6. setfacl -m u:user:rwx filename
  7. setfacl -m g:group:rx filename
  8. # 设置默认ACL
  9. setfacl -d -m u:user:rwx directory
  10. setfacl -d -m g:group:rx directory
  11. # 删除ACL
  12. setfacl -x u:user filename
  13. setfacl -b filename  # 删除所有ACL
复制代码

敏感数据保护

保护临时文件中的敏感数据。
  1. # 使用tmpfs挂载/tmp
  2. sudo vi /etc/fstab
  3. # 添加以下行
  4. tmpfs /tmp tmpfs defaults,noexec,nosuid,size=1G 0 0
  5. # 重新挂载/tmp
  6. sudo mount -o remount /tmp
  7. # 设置/tmp权限
  8. sudo chmod 1777 /tmp
复制代码

启用内存保护机制,防止缓冲区溢出攻击。
  1. # 编辑/etc/sysctl.conf文件
  2. sudo vi /etc/sysctl.conf
  3. # 添加以下配置
  4. kernel.randomize_va_space = 2
  5. kernel.exec-shield = 1
  6. # 应用配置
  7. sudo sysctl -p
复制代码

安全审计与监控

日志管理

配置集中式日志管理,便于安全事件分析。
  1. # 安装Rsyslog
  2. sudo yum install rsyslog
  3. # 配置Rsyslog服务器
  4. sudo vi /etc/rsyslog.conf
  5. # 取消以下行的注释
  6. $ModLoad imtcp
  7. $InputTCPServerRun 514
  8. # 配置客户端发送日志到服务器
  9. sudo vi /etc/rsyslog.d/remote.conf
  10. # 添加以下行
  11. *.* @logserver.example.com:514
  12. # 重启Rsyslog服务
  13. sudo systemctl restart rsyslog
复制代码

使用ELK(Elasticsearch, Logstash, Kibana)栈进行日志分析。
  1. # 安装Elasticsearch
  2. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  3. sudo vi /etc/yum.repos.d/elasticsearch.repo
  4. # 添加以下内容
  5. [elasticsearch]
  6. name=Elasticsearch repository for 7.x packages
  7. baseurl=https://artifacts.elastic.co/packages/7.x/yum
  8. gpgcheck=1
  9. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
  10. enabled=0
  11. autorefresh=1
  12. type=rpm-md
  13. sudo yum install --enablerepo=elasticsearch elasticsearch
  14. sudo systemctl start elasticsearch
  15. sudo systemctl enable elasticsearch
  16. # 安装Logstash
  17. sudo yum install --enablerepo=elasticsearch logstash
  18. sudo vi /etc/logstash/conf.d/01-syslog.conf
  19. # 添加以下配置
  20. input {
  21.   syslog {
  22.     port => 514
  23.   }
  24. }
  25. output {
  26.   elasticsearch {
  27.     hosts => ["localhost:9200"]
  28.   }
  29. }
  30. sudo systemctl start logstash
  31. sudo systemctl enable logstash
  32. # 安装Kibana
  33. sudo yum install --enablerepo=elasticsearch kibana
  34. sudo vi /etc/kibana/kibana.yml
  35. # 修改以下配置
  36. server.host: "0.0.0.0"
  37. elasticsearch.hosts: ["http://localhost:9200"]
  38. sudo systemctl start kibana
  39. sudo systemctl enable kibana
复制代码

入侵检测

使用AIDE(Advanced Intrusion Detection Environment)检测文件系统变化。
  1. # 安装AIDE
  2. sudo yum install aide
  3. # 初始化AIDE数据库
  4. sudo aide --init
  5. # 移动数据库到正确位置
  6. sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  7. # 运行AIDE检查
  8. sudo aide --check
  9. # 创建定期检查任务
  10. sudo crontab -e
  11. # 添加以下行
  12. 0 3 * * * /usr/sbin/aide --check | mail -s "AIDE Report" admin@example.com
复制代码

使用OSSEC进行主机入侵检测。
  1. # 安装OSSEC
  2. sudo yum install ossec-hids
  3. # 配置OSSEC
  4. sudo vi /var/ossec/etc/ossec.conf
  5. # 配置邮件通知
  6. <global>
  7.   <email_notification>yes</email_notification>
  8.   <email_to>admin@example.com</email_to>
  9.   <smtp_server>smtp.example.com</smtp_server>
  10.   <email_from>ossec@example.com</email_from>
  11. </global>
  12. # 启动OSSEC
  13. sudo /var/ossec/bin/ossec-control start
复制代码

安全扫描

使用OpenVAS进行漏洞扫描。
  1. # 安装OpenVAS
  2. sudo yum install openvas
  3. # 初始化OpenVAS
  4. sudo openvas-setup
  5. # 访问Web界面
  6. https://localhost:9392
  7. # 创建扫描任务
  8. # 1. 登录Web界面
  9. # 2. 创建新目标
  10. # 3. 创建新任务
  11. # 4. 启动任务
复制代码

使用Lynis进行系统安全审计。
  1. # 安装Lynis
  2. sudo yum install lynis
  3. # 运行Lynis审计
  4. sudo lynis audit system
  5. # 查看报告
  6. cat /var/log/lynis-report.dat
复制代码

漏洞管理与补丁更新

漏洞扫描

使用YUM检查安全更新。
  1. # 检查安全更新
  2. sudo yum updateinfo list security
  3. # 安装安全更新
  4. sudo yum update --security
  5. # 查看特定软件包的安全信息
  6. sudo yum updateinfo list security pkgname
复制代码

使用OpenSCAP进行安全合规性扫描。
  1. # 安装OpenSCAP
  2. sudo yum install openscap-scanner scap-security-guide
  3. # 运行安全扫描
  4. sudo oscap xccdf eval --profile stig-rhel7-server-upstream --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
  5. # 生成报告
  6. sudo oscap xccdf generate report arf.xml > report.html
复制代码

补丁管理

配置自动安全更新。
  1. # 安装yum-cron
  2. sudo yum install yum-cron
  3. # 配置yum-cron
  4. sudo vi /etc/yum/yum-cron.conf
  5. # 修改以下配置
  6. update_cmd = security
  7. apply_updates = yes
  8. emit_via = email
  9. email_to = admin@example.com
  10. email_from = yum-cron@example.com
  11. # 启动yum-cron
  12. sudo systemctl start yum-cron
  13. sudo systemctl enable yum-cron
复制代码

建立补丁测试流程,避免补丁导致系统不稳定。
  1. # 创建补丁测试脚本
  2. sudo vi /usr/local/bin/patch-testing.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. # 创建测试环境快照
  6. echo "Creating snapshot of test environment..."
  7. # 这里添加创建快照的命令
  8. # 安装补丁
  9. echo "Installing patches..."
  10. yum update --security -y
  11. # 运行测试
  12. echo "Running tests..."
  13. # 这里添加测试命令
  14. # 检查测试结果
  15. if [ $? -eq 0 ]; then
  16.     echo "Tests passed. Patches can be deployed to production."
  17.     # 发送成功通知
  18.     echo "Patch testing completed successfully." | mail -s "Patch Testing Success" admin@example.com
  19. else
  20.     echo "Tests failed. Patches should not be deployed to production."
  21.     # 发送失败通知
  22.     echo "Patch testing failed. Please investigate." | mail -s "Patch Testing Failure" admin@example.com
  23.     # 回滚补丁
  24.     echo "Rolling back patches..."
  25.     # 这里添加回滚命令
  26. fi
  27. # 使脚本可执行
  28. sudo chmod +x /usr/local/bin/patch-testing.sh
  29. # 添加到cron
  30. sudo crontab -e
  31. # 添加以下行
  32. 0 2 * * 0 /usr/local/bin/patch-testing.sh
复制代码

安全合规性

安全标准

应用CIS(Center for Internet Security)基准加固RHEL系统。
  1. # 下载CIS基准脚本
  2. wget https://github.com/CISofy/CIS-Benchmark-Red-Hat-Enterprise-Linux/archive/master.zip
  3. unzip master.zip
  4. # 运行CIS基准检查
  5. cd CIS-Benchmark-Red-Hat-Enterprise-Linux-master
  6. ./run-level1.sh
  7. # 查看报告
  8. cat cis-report.txt
复制代码

实现DISA STIG(Security Technical Implementation Guide)合规性。
  1. # 安装SCAP安全指南
  2. sudo yum install scap-security-guide
  3. # 运行STIG扫描
  4. sudo oscap xccdf eval --profile stig-rhel7-server-upstream --results-arf stig-arf.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
  5. # 生成STIG报告
  6. sudo oscap xccdf generate report stig-arf.xml > stig-report.html
复制代码

合规性检查

使用自动化工具进行合规性检查。
  1. # 安装Ansible
  2. sudo yum install ansible
  3. # 创建Ansible playbook
  4. sudo vi /etc/ansible/compliance.yml
  5. # 添加以下内容
  6. ---
  7. - name: RHEL Compliance Check
  8.   hosts: all
  9.   become: yes
  10.   tasks:
  11.     - name: Check password aging
  12.       command: grep PASS_MAX_DAYS /etc/login.defs
  13.       register: pass_max_days
  14.       failed_when: pass_max_days.stdout.find('PASS_MAX_DAYS\t90') == -1
  15.    
  16.     - name: Check SELinux status
  17.       command: getenforce
  18.       register: selinux_status
  19.       failed_when: selinux_status.stdout != 'Enforcing'
  20.    
  21.     - name: Check firewall status
  22.       command: systemctl is-active firewalld
  23.       register: firewall_status
  24.       failed_when: firewall_status.stdout != 'active'
  25. # 运行合规检查
  26. ansible-playbook /etc/ansible/compliance.yml
复制代码

生成合规性报告,便于审计和管理。
  1. # 创建合规性报告脚本
  2. sudo vi /usr/local/bin/compliance-report.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. # 创建报告目录
  6. mkdir -p /var/www/html/compliance-reports
  7. REPORT_DIR="/var/www/html/compliance-reports"
  8. DATE=$(date +%Y%m%d)
  9. # 运行OpenSCAP扫描
  10. oscap xccdf eval --profile stig-rhel7-server-upstream --results-arf $REPORT_DIR/stig-$DATE.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
  11. # 生成HTML报告
  12. oscap xccdf generate report $REPORT_DIR/stig-$DATE.xml > $REPORT_DIR/stig-$DATE.html
  13. # 运行Lynis扫描
  14. lynis audit system --report-file $REPORT_DIR/lynis-$DATE.dat
  15. # 生成Lynis HTML报告
  16. # 这里添加将Lynis报告转换为HTML的命令
  17. # 发送报告通知
  18. echo "Compliance reports generated for $DATE. Available at http://$(hostname)/compliance-reports/" | mail -s "Compliance Report" admin@example.com
  19. # 使脚本可执行
  20. sudo chmod +x /usr/local/bin/compliance-report.sh
  21. # 添加到cron
  22. sudo crontab -e
  23. # 添加以下行
  24. 0 6 1 * * /usr/local/bin/compliance-report.sh
复制代码

实战案例

案例一:Web服务器安全加固

某企业需要对其RHEL 7上的Web服务器进行安全加固,以保护客户数据和防止Web攻击。

1. 系统基础加固
  1. # 更新系统
  2. sudo yum update -y
  3. # 配置防火墙
  4. sudo firewall-cmd --permanent --add-service=http
  5. sudo firewall-cmd --permanent --add-service=https
  6. sudo firewall-cmd --permanent --remove-service=ssh
  7. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  8. sudo firewall-cmd --reload
  9. # 禁用不必要的服务
  10. sudo systemctl stop avahi-daemon
  11. sudo systemctl disable avahi-daemon
  12. sudo systemctl stop cups
  13. sudo systemctl disable cups
复制代码

1. Web服务器安全配置
  1. # 安装Apache和ModSecurity
  2. sudo yum install httpd mod_security mod_security_crs
  3. # 配置Apache
  4. sudo vi /etc/httpd/conf/httpd.conf
  5. # 修改以下配置
  6. ServerTokens Prod
  7. ServerSignature Off
  8. TraceEnable Off
  9. Options -Indexes
  10. <Directory />
  11.     AllowOverride None
  12.     Require all denied
  13. </Directory>
  14. # 配置ModSecurity
  15. sudo vi /etc/httpd/conf.d/mod_security.conf
  16. # 确保以下配置启用
  17. SecRuleEngine On
  18. SecRequestBodyAccess On
  19. SecResponseBodyAccess On
  20. # 启动Apache
  21. sudo systemctl start httpd
  22. sudo systemctl enable httpd
复制代码

1. SSL/TLS配置
  1. # 安装mod_ssl
  2. sudo yum install mod_ssl
  3. # 生成SSL证书
  4. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.crt
  5. # 配置SSL
  6. sudo vi /etc/httpd/conf.d/ssl.conf
  7. # 修改以下配置
  8. SSLCipherSuite HIGH:!aNULL:!MD5
  9. SSLProtocol all -SSLv2 -SSLv3
  10. SSLHonorCipherOrder on
  11. SSLCompression off
  12. # 重启Apache
  13. sudo systemctl restart httpd
复制代码

1. 文件系统安全
  1. # 设置Web目录权限
  2. sudo chown -R apache:apache /var/www/html
  3. sudo chmod -R 750 /var/www/html
  4. # 配置SELinux
  5. sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
  6. sudo restorecon -Rv /var/www/html
复制代码

1. 安全监控
  1. # 安装并配置AIDE
  2. sudo yum install aide
  3. sudo aide --init
  4. sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  5. # 配置每日AIDE检查
  6. sudo crontab -e
  7. # 添加以下行
  8. 0 3 * * * /usr/sbin/aide --check | mail -s "AIDE Report" admin@example.com
  9. # 安装并配置OSSEC
  10. sudo yum install ossec-hids
  11. sudo vi /var/ossec/etc/ossec.conf
  12. # 配置邮件通知和Web服务器监控
  13. sudo /var/ossec/bin/ossec-control start
复制代码

通过以上加固措施,Web服务器的安全性得到显著提升:

• 系统攻击面减少,只开放必要的服务和端口
• Web应用得到ModSecurity保护,能够防御常见Web攻击
• SSL/TLS配置强化,保护数据传输安全
• 文件系统权限严格控制,防止未授权访问
• 安全监控机制建立,能够及时发现异常活动

案例二:数据库服务器安全加固

某金融机构需要对其RHEL 8上的MySQL数据库服务器进行安全加固,以保护敏感客户数据。

1. 系统基础加固
  1. # 更新系统
  2. sudo yum update -y
  3. # 配置内核参数
  4. sudo vi /etc/sysctl.conf
  5. # 添加以下配置
  6. kernel.randomize_va_space = 2
  7. net.ipv4.ip_forward = 0
  8. net.ipv4.conf.all.send_redirects = 0
  9. net.ipv4.conf.default.send_redirects = 0
  10. net.ipv4.conf.all.accept_source_route = 0
  11. net.ipv4.conf.default.accept_source_route = 0
  12. net.ipv4.conf.all.accept_redirects = 0
  13. net.ipv4.conf.default.accept_redirects = 0
  14. net.ipv4.conf.all.secure_redirects = 0
  15. net.ipv4.conf.default.secure_redirects = 0
  16. net.ipv4.conf.all.log_martians = 1
  17. net.ipv4.conf.default.log_martians = 1
  18. net.ipv4.icmp_echo_ignore_broadcasts = 1
  19. net.ipv4.icmp_ignore_bogus_error_responses = 1
  20. net.ipv4.conf.all.rp_filter = 1
  21. net.ipv4.conf.default.rp_filter = 1
  22. net.ipv4.tcp_syncookies = 1
  23. # 应用配置
  24. sudo sysctl -p
  25. # 配置防火墙
  26. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
  27. sudo firewall-cmd --reload
复制代码

1. MySQL安全配置
  1. # 安装MySQL
  2. sudo yum install mysql-server
  3. # 启动MySQL
  4. sudo systemctl start mysqld
  5. sudo systemctl enable mysqld
  6. # 运行安全安装脚本
  7. sudo mysql_secure_installation
  8. # 配置MySQL
  9. sudo vi /etc/my.cnf
  10. # 添加以下配置
  11. [mysqld]
  12. bind-address = 192.168.1.10
  13. skip-external-locking
  14. skip-name-resolve
  15. local-infile = 0
  16. symbolic-links = 0
  17. max_connect_errors = 10000
  18. connect_timeout = 30
  19. wait_timeout = 300
  20. interactive_timeout = 300
  21. # 重启MySQL
  22. sudo systemctl restart mysqld
复制代码

1. 数据库加密
  1. # 配置MySQL数据目录加密
  2. # 停止MySQL
  3. sudo systemctl stop mysqld
  4. # 备份数据目录
  5. sudo cp -r /var/lib/mysql /var/lib/mysql.bak
  6. # 创建加密卷
  7. sudo cryptsetup luksFormat /dev/sdb1
  8. sudo cryptsetup luksOpen /dev/sdb1 mysql_encrypted
  9. sudo mkfs.ext4 /dev/mapper/mysql_encrypted
  10. sudo mount /dev/mapper/mysql_encrypted /mnt
  11. # 复制数据到加密卷
  12. sudo cp -r /var/lib/mysql.bak/* /mnt/
  13. # 更新/etc/fstab
  14. echo "/dev/mapper/mysql_encrypted /var/lib/mysql ext4 defaults 0 0" | sudo tee -a /etc/fstab
  15. # 卸载并重新挂载
  16. sudo umount /mnt
  17. sudo mount /var/lib/mysql
  18. # 启动MySQL
  19. sudo systemctl start mysqld
复制代码

1. 数据库访问控制
  1. # 创建数据库用户并限制权限
  2. mysql -u root -p
  3. CREATE DATABASE customer_data;
  4. CREATE USER 'db_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword!';
  5. GRANT SELECT, INSERT, UPDATE, DELETE ON customer_data.* TO 'db_user'@'192.168.1.%';
  6. FLUSH PRIVILEGES;
  7. EXIT;
  8. # 配置MySQL审计插件
  9. mysql -u root -p
  10. INSTALL PLUGIN audit_log SONAME 'audit_log.so';
  11. SET GLOBAL audit_log_format = 'JSON';
  12. SET GLOBAL audit_log_policy = 'ALL';
  13. SET GLOBAL audit_log_file = '/var/log/mysql/audit.log';
  14. EXIT;
  15. # 创建审计日志目录
  16. sudo mkdir /var/log/mysql
  17. sudo chown mysql:mysql /var/log/mysql
复制代码

1. 备份与恢复安全
  1. # 创建备份脚本
  2. sudo vi /usr/local/bin/mysql_backup.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. BACKUP_DIR="/backup/mysql"
  6. DATE=$(date +%Y%m%d_%H%M%S)
  7. DB_USER="backup_user"
  8. DB_PASS="BackupPassword!"
  9. # 创建备份目录
  10. mkdir -p $BACKUP_DIR
  11. # 备份数据库
  12. mysqldump --user=$DB_USER --password=$DB_PASS --single-transaction --flush-logs --master-data=2 --all-databases | gzip > $BACKUP_DIR/mysql_backup_$DATE.sql.gz
  13. # 删除30天前的备份
  14. find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -delete
  15. # 加密备份文件
  16. gpg -c --passphrase "EncryptionPassword" $BACKUP_DIR/mysql_backup_$DATE.sql.gz
  17. rm $BACKUP_DIR/mysql_backup_$DATE.sql.gz
  18. # 使脚本可执行
  19. sudo chmod +x /usr/local/bin/mysql_backup.sh
  20. # 添加到cron
  21. sudo crontab -e
  22. # 添加以下行
  23. 0 2 * * * /usr/local/bin/mysql_backup.sh
复制代码

通过以上加固措施,数据库服务器的安全性得到显著提升:

• 系统层面安全配置强化,减少系统级漏洞风险
• MySQL服务安全配置优化,限制访问并增强安全性
• 数据库文件加密存储,防止物理访问导致的数据泄露
• 数据库访问权限严格控制,遵循最小权限原则
• 数据库审计功能启用,记录所有数据库操作
• 安全备份机制建立,确保数据安全和可恢复性

最佳实践总结

1. 系统基础安全

• 最小安装原则:只安装必要的软件包,减少系统攻击面。
“`bash最小化安装RHEL在安装过程中选择”Minimal Install”选项

最小安装原则:只安装必要的软件包,减少系统攻击面。
“`bash

# 或者使用kickstart文件进行自动化最小安装
  # 在kickstart文件中添加
  %packages
  –nobase
  –minimal
  %end
  1. - **及时更新系统**:定期应用安全补丁,修复已知漏洞。
  2.   ```bash
  3.   # 设置自动安全更新
  4.   sudo yum install yum-cron
  5.   sudo vi /etc/yum/yum-cron.conf
  6.   # 修改配置
  7.   update_cmd = security
  8.   apply_updates = yes
  9.   sudo systemctl start yum-cron
  10.   sudo systemctl enable yum-cron
复制代码

• 启用SELinux:保持SELinux处于Enforcing模式,提供强制访问控制。
“`bash检查SELinux状态getenforce

启用SELinux:保持SELinux处于Enforcing模式,提供强制访问控制。
“`bash

getenforce

# 设置SELinux为Enforcing模式
  sudo setenforce 1
  sudo vi /etc/selinux/config
  # 修改配置
  SELINUX=enforcing
  1. ### 2. 访问控制
  2. - **强密码策略**:实施复杂的密码策略,定期更换密码。
  3.   ```bash
  4.   # 设置密码策略
  5.   sudo vi /etc/security/pwquality.conf
  6.   # 修改配置
  7.   minlen = 12
  8.   minclass = 3
  9.   maxrepeat = 3
  10.   dcredit = -1
  11.   ucredit = -1
  12.   lcredit = -1
  13.   ocredit = -1
  14.   
  15.   # 设置密码过期策略
  16.   sudo vi /etc/login.defs
  17.   # 修改配置
  18.   PASS_MAX_DAYS 90
  19.   PASS_MIN_DAYS 7
  20.   PASS_WARN_AGE 14
复制代码

• 限制root访问:禁用直接root登录,使用sudo进行权限管理。
“`bash禁止root SSH登录sudo vi /etc/ssh/sshd_config修改配置PermitRootLogin no
sudo systemctl restart sshd

限制root访问:禁用直接root登录,使用sudo进行权限管理。
“`bash

sudo vi /etc/ssh/sshd_config

PermitRootLogin no
sudo systemctl restart sshd

# 配置sudo
  sudo visudo
  # 添加用户sudo权限
  username ALL=(ALL) /usr/bin/systemctl, /usr/sbin/useradd, /usr/sbin/userdel
  1. - **多因素认证**:为关键系统实施多因素认证。
  2.   ```bash
  3.   # 安装Google Authenticator
  4.   sudo yum install google-authenticator
  5.   
  6.   # 配置PAM
  7.   sudo vi /etc/pam.d/sshd
  8.   # 添加以下行
  9.   auth required pam_google_authenticator.so
复制代码

3. 网络安全

• 防火墙配置:严格配置防火墙,只开放必要端口。# 配置firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
• 网络服务安全:禁用不必要的服务,保护必要服务。
“`bash查看运行中的服务sudo systemctl list-units –type=service –state=running

防火墙配置:严格配置防火墙,只开放必要端口。
  1. # 配置firewalld
  2. sudo firewall-cmd --permanent --add-service=http
  3. sudo firewall-cmd --permanent --add-service=https
  4. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  5. sudo firewall-cmd --reload
复制代码

网络服务安全:禁用不必要的服务,保护必要服务。
“`bash

sudo systemctl list-units –type=service –state=running

# 禁用不必要的服务
  sudo systemctl stop telnet.socket
  sudo systemctl disable telnet.socket
  sudo systemctl stop rsh.socket
  sudo systemctl disable rsh.socket
  1. - **安全远程访问**:使用SSH安全配置,考虑VPN或跳板机。
  2.   ```bash
  3.   # SSH安全配置
  4.   sudo vi /etc/ssh/sshd_config
  5.   # 修改配置
  6.   Port 2222
  7.   PermitRootLogin no
  8.   PasswordAuthentication no
  9.   PermitEmptyPasswords no
  10.   MaxAuthTries 3
  11.   AllowUsers user1 user2
  12.   sudo systemctl restart sshd
复制代码

4. 数据保护

• 数据加密:对敏感数据实施加密保护。
“`bash使用LUKS加密分区sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup luksOpen /dev/sdb1 encrypted_data
sudo mkfs.ext4 /dev/mapper/encrypted_data
sudo mount /dev/mapper/encrypted_data /data

数据加密:对敏感数据实施加密保护。
“`bash

sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup luksOpen /dev/sdb1 encrypted_data
sudo mkfs.ext4 /dev/mapper/encrypted_data
sudo mount /dev/mapper/encrypted_data /data

# 使用GPG加密文件
  gpg -c sensitive_file.txt
  1. - **文件系统权限**:严格控制文件和目录权限。
  2.   ```bash
  3.   # 设置关键目录权限
  4.   sudo chmod 700 /etc /boot /usr/bin /usr/sbin /bin /sbin
  5.   
  6.   # 查找并修复权限不当的文件
  7.   sudo find / -type f -perm -o+w -exec chmod o-w {} \;
复制代码

  1. 备份安全:实施安全备份策略,确保数据可恢复性。
  2. “`bash创建备份脚本sudo vi /usr/local/bin/secure_backup.sh添加以下内容#!/bin/bash
  3. BACKUP_DIR=”/backup”
  4. DATE=\((date +%Y%m%d)
  5. tar -czf - /important/data | gpg -c --passphrase "SecurePassword" -o \)BACKUPDIR/backup$DATE.tar.gpg
复制代码

备份安全:实施安全备份策略,确保数据可恢复性。
“`bash

sudo vi /usr/local/bin/secure_backup.sh

#!/bin/bash
BACKUP_DIR=”/backup”
DATE=\((date +%Y%m%d)
tar -czf - /important/data | gpg -c --passphrase "SecurePassword" -o \)BACKUPDIR/backup$DATE.tar.gpg

# 使脚本可执行并添加到cron
  sudo chmod +x /usr/local/bin/secure_backup.sh
  sudo crontab -e
  # 添加以下行
  0 2 * * * /usr/local/bin/secure_backup.sh
  1. ### 5. 监控与审计
  2. - **集中日志管理**:建立集中式日志管理系统。
  3.   ```bash
  4.   # 配置Rsyslog客户端
  5.   sudo vi /etc/rsyslog.d/remote.conf
  6.   # 添加以下行
  7.   *.* @logserver.example.com:514
  8.   sudo systemctl restart rsyslog
复制代码

• 入侵检测:部署入侵检测系统,监控异常活动。
“`bash安装AIDEsudo yum install aide
sudo aide –init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

入侵检测:部署入侵检测系统,监控异常活动。
“`bash

sudo yum install aide
sudo aide –init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

# 配置每日检查
  sudo crontab -e
  # 添加以下行
  0 3 * * * /usr/sbin/aide –check | mail -s “AIDE Report” admin@example.com
  1. - **定期安全审计**:定期进行安全审计和漏洞扫描。
  2.   ```bash
  3.   # 创建安全审计脚本
  4.   sudo vi /usr/local/bin/security_audit.sh
  5.   # 添加以下内容
  6.   #!/bin/bash
  7.   
  8.   # 运行Lynis审计
  9.   lynis audit system --report-file /var/log/lynis-$(date +%Y%m%d).dat
  10.   
  11.   # 运行OpenSCAP扫描
  12.   oscap xccdf eval --profile stig-rhel7-server-upstream --results-arf /var/log/scap-$(date +%Y%m%d).xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
  13.   
  14.   # 生成报告
  15.   oscap xccdf generate report /var/log/scap-$(date +%Y%m%d).xml > /var/www/html/scap-$(date +%Y%m%d).html
  16.   
  17.   # 发送通知
  18.   echo "Security audit completed. Reports available at http://$(hostname)/scap-$(date +%Y%m%d).html" | mail -s "Security Audit Report" admin@example.com
  19.   
  20.   # 使脚本可执行并添加到cron
  21.   sudo chmod +x /usr/local/bin/security_audit.sh
  22.   sudo crontab -e
  23.   # 添加以下行
  24.   0 6 1 * * /usr/local/bin/security_audit.sh
复制代码

6. 事件响应

• 建立事件响应计划:制定详细的安全事件响应流程。
“`bash创建事件响应文档模板sudo vi /usr/local/doc/incident-response-plan.md添加以下内容事件响应计划

建立事件响应计划:制定详细的安全事件响应流程。
“`bash

sudo vi /usr/local/doc/incident-response-plan.md

## 1. 事件识别

• 监控系统告警
• 分析异常活动
• 确认安全事件

## 2. 初始响应

• 记录事件详情
• 评估影响范围
• 通知相关人员

## 3. 遏制策略

• 隔离受影响系统
• 阻止恶意活动
• 保护证据

## 4. 根除恢复

• 消除威胁根源
• 恢复系统正常
• 验证恢复结果

## 5. 事后总结

• 分析事件原因
• 更新安全策略
• 改进防护措施
“`
• 定期演练:定期进行安全事件响应演练。
“`bash创建演练脚本sudo vi /usr/local/bin/incident-response-drill.sh添加以下内容#!/bin/bash

分析事件原因

更新安全策略

改进防护措施
“`

定期演练:定期进行安全事件响应演练。
“`bash

sudo vi /usr/local/bin/incident-response-drill.sh

#!/bin/bash

# 模拟安全事件
  echo “Simulating security incident…”

# 创建测试文件
  echo “This is a test file for incident response drill.” > /tmp/test_file.txt

# 检测异常文件
  if [ -f /tmp/test_file.txt ]; then
  1. echo "Incident detected: Unauthorized file found at /tmp/test_file.txt"
  2. # 记录事件
  3. echo "$(date): Incident detected - Unauthorized file found at /tmp/test_file.txt" >> /var/log/incident-response.log
  4. # 遏制措施
  5. rm /tmp/test_file.txt
  6. echo "Containment: Unauthorized file removed."
  7. # 通知
  8. echo "Incident response drill completed. Check /var/log/incident-response.log for details." | mail -s "Incident Response Drill" admin@example.com
复制代码

fi

# 使脚本可执行并添加到cron
  sudo chmod +x /usr/local/bin/incident-response-drill.sh
  sudo crontab -e
  # 添加以下行
  0 4 1 * * /usr/local/bin/incident-response-drill.sh
  “`

通过遵循以上最佳实践,企业可以显著提高RHEL系统的安全性,有效防范各类安全威胁,保护关键业务数据和系统资源。安全加固是一个持续的过程,需要定期评估、更新和改进安全策略,以应对不断变化的安全威胁。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.