小白畅通Linux之旅-----Linux安全管理
文章目录
- 一、SELinux安全上下文
- 1、SELinux简介
- (1)概念
- (2)核心思想
- (3)工作模式
- 2、基础操作命令
- (1)查看SELinux状态
- (2)切换工作模式
- 3、安全上下文(Security Context)
- (1)查看上下文
- (2)修改上下文
- 二、Linux防火墙-Firewalld
- 1、概述
- 2、Linux防火墙
- (1)防火墙结构
- (2)firewalld防火墙
- (3)firewall-cmd命令用法
一、SELinux安全上下文
1、SELinux简介
(1)概念
SELinux(Security-Enhanced Linux)是Linux内核的**强制访问控制(MAC)**安全子系统,提供更细粒度的权限控制,防止进程或用户越权操作。
(2)核心思想
- 最小权限原则:进程/用户只能访问其明确需要的资源。
- 基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security Context)。
(3)工作模式
模式 | 描述 |
---|---|
Enforcing | 强制执行策略,拒绝非法操作并记录日志。 |
Permissive | 仅记录违规操作,不阻止(用于调试)。 |
Disabled | 完全关闭SELinux(需重启生效)。 |
2、基础操作命令
(1)查看SELinux状态
[root@localhost ~]# getenforce
Enforcing
(2)切换工作模式
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# setenforce 1
[root@localhost ~]# getenforce
Enforcing
注意:setenforce仅临时生效,永久修改需编辑 /etc/selinux/config 文件。
3、安全上下文(Security Context)
(1)查看上下文
ls -Z 查看文件/目录的上下文
[root@localhost ~]# ls -Z
unconfined_u:object_r:admin_home_t:s0 公共 unconfined_u:object_r:admin_home_t:s0 下载
unconfined_u:object_r:admin_home_t:s0 模板 unconfined_u:object_r:admin_home_t:s0 音乐
unconfined_u:object_r:admin_home_t:s0 视频 unconfined_u:object_r:admin_home_t:s0 桌面
unconfined_u:object_r:admin_home_t:s0 图片 system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
unconfined_u:object_r:admin_home_t:s0 文档
ps -Z -C nginx 查看进程的上下文
[root@localhost ~]# ps -Z -C nginx
LABEL PID TTY TIME CMD
system_u:system_r:httpd_t:s0 97984 ? 00:00:00 nginx
system_u:system_r:httpd_t:s0 97985 ? 00:00:00 nginx
system_u:system_r:httpd_t:s0 97986 ? 00:00:00 nginx
system_u:system_r:httpd_t:s0 97987 ? 00:00:00 nginx
system_u:system_r:httpd_t:s0 97988 ? 00:00:00 nginx
(2)修改上下文
chcon命令
-t 设置安全上下文的类型部分
-u 设置安全上下文的用户部分
-r 设置安全上下文的角色部分
–reference 使用指定文件的安全上下文
-R 递归处理文件和目录
-h 显示帮助信息
二、Linux防火墙-Firewalld
1、概述
按表现形式划分:
软件防火墙: 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下: windows defender
硬件防火墙: 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等
按技术划分:
包过滤防火墙: 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位
七层防火墙:除了上述检查外,还会检查数据内容
防火墙的作用:
阻止来自网络外部的攻击、进行流量控制
2、Linux防火墙
(1)防火墙结构
用户态:
iptables: 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对于初学者或者网络技术不达标的人员不友好
**firewalld:**使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接底层的四表五链,对于初学者比较友好
ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。
内核态:
四表: 从内核->用户的顺序: raw -> mangle -> nat -> filter
五链: input、output、forward、prerouting、postrouting
(2)firewalld防火墙
区域分类: block、dmz、drop、external、home、internal、public、trusted、work
区域功能:
public:公共区域,默认区域
public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
home: 家庭区域
[root@localhost ~]# firewall-cmd --zone=home --list-all
hometarget: defaulticmp-block-inversion: nointerfaces: sources: services: cockpit dhcpv6-client mdns samba-client sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
work: 工作区域
[root@localhost ~]# firewall-cmd --zone=work --list-all
worktarget: defaulticmp-block-inversion: nointerfaces: sources: services: cockpit dhcpv6-client sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
block: 堵塞区域
[root@localhost ~]# firewall-cmd --zone=block --list-all
blocktarget: %%REJECT%%icmp-block-inversion: nointerfaces: sources: services: ports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
drop: 丢弃区域
root@localhost ~]# firewall-cmd --zone=drop --list-all
droptarget: DROPicmp-block-inversion: nointerfaces: sources: services: ports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
trusted:完全信任区域
[root@localhost ~]# firewall-cmd --zone=trusted --list-all
trustedtarget: ACCEPTicmp-block-inversion: nointerfaces: sources: services: ports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
internal:内部区域
[root@localhost ~]# firewall-cmd --zone=internal --list-all
internaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: cockpit dhcpv6-client mdns samba-client sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
external:外部区域
[root@localhost ~]# firewall-cmd --zone=external --list-all
externaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: forward: yesmasquerade: yesforward-ports: source-ports: icmp-blocks: rich rules:
dmz: 非军事化管理区域
root@localhost ~]# firewall-cmd --zone=dmz --list-all
dmztarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
(3)firewall-cmd命令用法
--list-*
--get-*
--set-*
--add-*
--remove-*
--change-*
--zone=