17.Linux :selinux

发布于:2025-08-11 ⋅ 阅读:(17) ⋅ 点赞:(0)

Linux : selinux

DAC vs MAC 对比
模型 控制方式 决策依据 安全强度
DAC 自主访问控制 文件所有者的权限设置
MAC 强制访问控制 系统级安全策略 极高

SELinux的核心原理是基于 强制访问控制(MAC) 模型,通过为系统资源打上安全标签并制定精细策略,实现远超传统 Linux 权限控制的保护机制

安全策略

策略类型 适用场景 特点
targeted 默认策略(推荐) 仅保护关键服务(如 httpd)
mls 军事/政府级安全 极端严格,配置复杂
minimum 最小化保护(容器环境) 仅基础进程保护

模式

模式 状态 推荐场景 切换命令
Enforcing 强制模式 生产环境(默认) setenforce 1
Permissive 宽容模式 故障排查(仅记录不拦截) setenforce 0
Disabled 禁用模式 彻底禁用(需重启生效) 修改 /etc/selinux/config

getenforce 查看selinux当前状态
setenforce 更改selinux当前状态(暂时更改)

在这里插入图片描述

查看

[root@xieyuhui ~]# getenforce 
Enforcing

更改

[root@xieyuhui ~]# setenforce 0
[root@xieyuhui ~]# getenforce 
Permissive

setenforce 0表示更改为permissive,1表示为更改enforcing,永久更改需要进入配置文件/etc/sysconfig/selinux,修改下次开机的selinux状态

上下文

查看文件的context值:
ll -Z /abc/aa

查看目录的context值:
[root@xieyuhui ~]# ll -ldZ /kili
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /kili

安全上下文三部分组成:用户u、角色r和类型识别符t
chcon -t tmp_t redhat 更改redhat的context值为tmp_t

# 1. 临时修改文件上下文
[root@xieyuhui ~]# chcon -t tmp_t /kili
[root@xieyuhui ~]# ll -ldZ /kili
drwxr-xr-x. root root unconfined_u:object_r:tmp_t:s0   /kili

# 2. 永久修改目录上下文(含子文件)
semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"(目录及子目录)
restorecon -Rv /www

# 3. 重置错误上下文
touch /.autorelabel  # 重启后重打标签
布尔值策略管理
# 查看所有布尔值开关
getsebool -a

[root@xieyuhui ~]# getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
auditadm_exec_content --> on
authlogin_nsswitch_use_ldap --> off
authlogin_radius --> off
authlogin_yubikey --> off
awstats_purge_apache_log_files --> off

# 查询特定服务开关
getsebool -a | grep ftp

[root@xieyuhui ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off

# 临时启用
[root@xieyuhui ~]# setsebool cron_can_relabel on

# 永久启用
[root@xieyuhui ~]# setsebool cron_can_relabel on -P
端口标记管理
# 添加 HTTP 端口标记
semanage port -a -t http_port_t -p tcp 8080

[root@xieyuhui ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

# 查询端口标签
[root@xieyuhui ~]# semanage port -l | grep 8080
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010

# 删除旧端口标记
semanage port -d -t http_port_t -p tcp 80

# 查看所有端口标记
semanage port -l
            tcp      8080, 8118, 8123, 10001-10010

# 删除旧端口标记
semanage port -d -t http_port_t -p tcp 80

# 查看所有端口标记
semanage port -l

网站公告

今日签到

点亮在社区的每一天
去签到