Linux系统安全管理

目录

一、SELinux安全上下文

[1、SELinux 简介](#1、SELinux 简介)

1.1、概述

1.2、核心思想

1.3、工作模式

2、基础操作命令

[3、安全上下文(Security Context)](#3、安全上下文(Security Context))

3.1、查看上下文

[3.2、 修改上下文](#3.2、 修改上下文)

chcon命令

[semanage 命令](#semanage 命令)

4、SELinux布尔值(Booleans)

5、日志分析与故障排除

[1. 查看SELinux日志](#1. 查看SELinux日志)

[2. 生成解决方案建议](#2. 生成解决方案建议)

6、常见问题与解决方案

场景1:Web服务器无法访问文件

场景2:服务无法绑定非标准端口

7、注意事项

二、Linux防火墙-Firewalld

1、概述

防火墙的作用:

[2、 Linux防火墙](#2、 Linux防火墙)

防火墙结构

区域分类


一、SELinux安全上下文

1、SELinux 简介

1.1、概述

SELinux(Security-Enhanced Linux)是Linux内核的强制访问控制(MAC)安全子系统,提供更细粒度的权限控制,防止进程或用户越权操作。

1.2、核心思想

最小权限原则 进程/用户只能访问其明确需要的资源。
基于标签的访问控制 所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。

1.3、工作模式

模式 描述
Enforcing 强制执行策略,拒绝非法操作并记录日志。
Permissive 仅记录违规操作,不阻止(用于调试)。
Disabled 完全关闭SELinux(需重启生效)。

2、基础操作命令

查看SELinux状态
getenforce 查看当前模式
sestatus 详细状态(模式/策略类型)
切换工作模式 仅临时生效,永久修改需编辑 /etc/selinux/config 文件。
setenforce 0 切换到Permissive模式
setenforce 1 切换到Enforcing模式

3、安全上下文(Security Context)

3.1、查看上下文

查看上下文
ls -Z /var/www/html 查看文件/目录的上下文
ps -Z -C httpd 查看进程的上下文

3.2、 修改上下文

chcon命令
选项 说明 示例消息
-t, --type TYPE 设置安全上下文的类型部分 已将 file.txt 的类型更改为 httpd_sys_content_t
-u, --user USER 设置安全上下文的用户部分 已将 file.txt 的用户更改为 system_u
-r, --role ROLE 设置安全上下文的角色部分 已将 file.txt 的角色更改为 object_r
--reference=FILE 使用指定文件的安全上下文 已从 ref_file 复制上下文到 target_file
-R, --recursive 递归处理文件和目录 已递归更改 dir/ 及其内容的上下文
-h, --help 显示帮助信息 显示帮助菜单
-v, --verbose 显示操作详情 正在更改 file.txt 的安全上下文
--version 显示版本信息 chcon (GNU coreutils) 8.32
  1. 设置文件类型 将 /var/www/html/index.html 的上下文类型设为 httpd_sys_content_t:

    复制代码
    sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  2. 设置用户部分 将 /etc/nginx/nginx.conf 的用户部分设为 system_u:

    复制代码
    sudo chcon -u system_u /etc/nginx/nginx.conf
  3. 设置角色部分 将 /home/user/file.txt 的角色部分设为 object_r:

    复制代码
    sudo chcon -r object_r /home/user/file.txt
  4. 参照文件上下文 将 file2 的上下文设置为与 file1 一致:

    复制代码
    sudo chcon --reference=file1 file2
  5. 递归操作目录 递归修改 /var/www/html/ 目录下所有文件的上下文类型:

    复制代码
    sudo chcon -R -t httpd_sys_content_t /var/www/html/
  6. 显示帮助信息

    复制代码
    chcon --help
  7. 显示版本信息

    复制代码
    chcon --version
  8. 详细模式操作 启用详细输出,修改 ~/.ssh/config 的上下文类型:

    复制代码
    sudo chcon -v -t ssh_home_t ~/.ssh/config

说明:

  • 实际执行时,若未添加 -v 参数,chcon 默认不输出成功信息,仅在出错时显示错误。

  • 使用 -v 参数可查看操作详情(如上述表格中的"示例消息")。

复制代码
chcon -t httpd_sys_content_t /var/www/html/index.html # 临时修改文件类型
restorecon -v /var/www/html/index.html # 恢复默认上下文
semanage 命令
子命令/选项 用途说明 常用选项 示例消息/操作
semanage login 管理SELinux用户与Linux账户的映射关系 -a (添加)、-d (删除)、-m (修改) 将用户 user1 映射到 SELinux 用户 staff_u
semanage user 管理SELinux用户及其角色和权限 -a、-d、-R (角色)、-L (限制) 创建新SELinux用户 web_user 并分配角色 httpd_role
semanage port 管理网络端口与SELinux类型的绑定关系 -a、-d、-t (类型)、-p (协议) 将TCP端口 8080 绑定到 http_port_t 类型
semanage interface 管理网络接口与SELinux类型的绑定关系 -a、-d、-t 将接口 eth1 绑定到 netif_t 类型
semanage module 管理SELinux策略模块(启用/禁用) -a、-d、-e (启用)、-D (禁用) 启用策略模块 my_custom_module
semanage fcontext 管理文件/目录的默认SELinux上下文规则 -a、-d、-t、-s (范围) 添加规则:/webapps(/.*)? 的上下文类型为 httpd_sys_content_t
semanage boolean 管理SELinux布尔值(开关策略功能) -1 (查看)、--on、--off 启用布尔值 httpd_can_network_connect
semanage dontaudit 管理dontaudit规则(是否记录特定访问拒绝事件) --on、--off 关闭对 sshd 的 dontaudit 规则
-h / --help 显示帮助信息 - 显示子命令的帮助菜单
-v / --verbose 显示详细操作信息 - 显示添加端口 8080 的详细过程
-n / --noheading 输出时隐藏列标题 - 仅显示端口列表数据,无标题行

选项使用案例

1.管理端口绑定

将TCP端口 8080 标记为HTTP服务端口:

复制代码
sudo semanage port -a -t http_port_t -p tcp 8080

说明:允许Apache等HTTP服务使用8080端口。

2.管理文件上下文规则

为自定义Web目录 /opt/webapps 设置默认上下文:

复制代码
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?"
sudo restorecon -Rv /opt/webapps

说明:添加规则后需运行 restorecon 立即生效。

3.管理SELinux用户映射

将Linux用户 dev_user 映射到SELinux用户 user_u:

复制代码
sudo semanage login -a -s user_u dev_user

说明:限制用户 dev_user 的SELinux权限。

4.启用布尔值

允许HTTP服务访问网络:

复制代码
sudo semanage boolean --on httpd_can_network_connect

说明:无需重启服务,立即生效。

5.管理策略模块

禁用自定义策略模块 mymodule:

复制代码
sudo semanage module -D mymodule

说明:禁用后相关规则不再生效

6.查看当前端口绑定

列出所有HTTP相关端口:

复制代码
semanage port -l \| grep http_port_t

输出示例

复制代码
http_port_t tcp 80, 443, 8080

7.删除文件上下文规则

移除对 /tmp/custom_dir 的上下文规则:

复制代码
sudo semanage fcontext -d "/tmp/custom_dir(/.*)?"

注意事项

(1)权限要求:大多数操作需 sudo 或 root 权限。

(2)持久化存储:semanage 修改的规则会保存到策略库(默认路径 /etc/selinux/targeted),重启后仍有效。

(3)结合工具使用:修改文件上下文后,需运行 restorecon 或重启服务使更改生效。

4、SELinux布尔值(Booleans)

SELinux策略通过布尔值动态调整权限控制(例如允许Apache访问用户家目录)。

复制代码
getsebool -a | grep httpd# 查看所有与Apache相关的布尔值
setsebool -P httpd_enable_homedirs=on # 启用布尔值(-P永久生效)

5、日志分析与故障排除

1. 查看SELinux日志
复制代码
tail -f /var/log/audit/audit.log # 直接查看原始日志
ausearch -m AVC -ts recent# 使用工具过滤日志
2. 生成解决方案建议
复制代码
grep "avc: denied" /var/log/audit/audit.log \| audit2allow -M mypolicy
semodule -i mypolicy.pp# 编译并加载自定义策略

6、常见问题与解决方案

场景1:Web服务器无法访问文件
  • 现象:Apache返回403错误,但文件权限正常。

  • 解决

    1. 检查文件上下文:ls -Z /var/www/html

    2. 修复上下文:restorecon -Rv /var/www/html

场景2:服务无法绑定非标准端口
  • 现象:Nginx无法监听8080端口。

  • 解决

    复制代码
    semanage port -a -t http_port_t -p tcp 8080# 添加端口到SELinux策略

7、注意事项

注意事项
不要随意禁用SELinux 优先使用Permissive模式调试。
谨慎使用chcon 错误修改上下文可能导致系统不稳定。
备份策略 修改策略前备份 /etc/selinux 目录。

二、Linux防火墙-Firewalld

1、概述

按表现形式划分
软件防火墙 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下: windows defender
硬件防火墙 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等
按技术划分
包过滤防火墙 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位
七层防火墙 除了上述检查外,还会检查数据内容

防火墙的作用:

阻止来自网络外部的攻击、进行流量控制

2、 Linux防火墙

防火墙结构

用户态
iptables 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对于初学者或者网络技术不达标的人员不友好
firewalld 使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接底层的四表五链,对于初学者比较友好
ufw 使用ufw命令对防火墙进行管理,命令简单易懂。
内核态
四表 从内核->用户的顺序: raw -> mangle -> nat -> filter
五链 input、output、forward、prerouting、postrouting

区域分类

九大区域 功能
public 公共区域,默认区域
home 家庭区域
work 工作区域
trusted 完全信任区域
internal 内部区域
external 外部区域
dmz 非军事化管理区域
drop 丢弃区域
block 阻塞区域
相关推荐
Mrdaliang1 小时前
Linux系统性能优化
linux·运维·性能优化
向明天乄2 小时前
在 Vue 3 项目中集成高德地图(附 Key 与安全密钥申请全流程)
前端·vue.js·安全
Jackilina_Stone4 小时前
【网工】华为配置专题进阶篇①
网络·华为·网工
lally.4 小时前
计算机网络
网络·计算机网络
四四夕夕5 小时前
【保姆级图文】1panel 面板部署雷池社区版:从环境搭建到安全验证全流程实录
数据库·安全
运维成长记5 小时前
15-加密和安全及时间同步服务
安全
qwerdfwc_5 小时前
SSL安全证书:数字时代的网络安全基石
安全·web安全·ssl
linux行者5 小时前
linux基础重定向及组合重定向
linux·运维
kikumaru7146 小时前
Mac 安装 finalshell
linux·网络·macos