自学内容网 自学内容网

SELinux

一、简介

SELinux : 安全强化的Linux;在开启后,会对进程本身部署安全上下文;会对文件部署安全上下文;对法务使用端口进行限制;对程序本身的不安全功能做限制

二、工作原理

1、工作方式

通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源,如文件、目录、端口等等

2、安全上下文

security  context  : 主体与目标的安全上下文必须一致才能访问;最终文件的成功访问还是与文件系统的rwx权限设置有关

#文件安全上下文查看

ls  -Z

#进程的安全上下文

ps  auZ  |  grep  vsftpd

[root@hai ~]# cd /var/ftp/
[root@hai ftp]# ls -Z
unconfined_u:object_r:public_content_t:s0 file
           unconfined_u:object_r:mnt_t:s0 file1
    system_u:object_r:public_content_t:s0 pub
[root@hai ftp]#

[root@hai ftp]# ps auZ | grep vsftpd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 4311 0.0  0.0 221680 2304 pts/0 S+ 17:03   0:00 grep --color=auto vsftpd


安全上下文字段:     Identify : role : type

身份标识  : root账号身份、system_u进程、unconfined_u一般用户账号

角色          :   object_r 文件或目录等文件资源、 system_r进程

类型          :   type在文件资源上面称为类型、domain在主体程序中则称域

domain需要与type搭配,则该进程才能顺利读取文件资源

s0、s1     :    代表灵敏度的分级,数值越大,灵敏度越高

三、优化管理

1、工作模式

  • enforcing    :   强制模式,开始限制domain/type   
  • permissing  :   宽容模式,仅警告并不限制
  • disabled      :   关闭,没有运行

2、对于SELinux状态管理

# 查看当前状态

[root@hai ~]# getenforce
Enforcing

# 临时更改工作模式

setenforce  0|1       #  0表示宽容模式  1表示强制模式

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


# 永久更改

grubby  --update-kernel ALL --args  selinux=0    #更改重启才能生效

# 创建识别刷新文件

touch  /.autorelabel

3、管理文件的安全上下文

# 临时更改文件的安全上下文

chcon
-R : 连同该目录下的子目录同时修改
-t : 后面接安全上下文的类型字段
-u : 身份识别
-r : 角色

# 永久修改
semanger fcontext 

-l : 列出所有记录
-a :  添加记录
-m :  修改
-d :  删除
-t :  添加的类型

# 刷新安全上下文

restorecon  -RV   文件目录     # -R 连同子目录一起修改   -V  将进程显示到屏幕上

4、对服务的影响

# 查看sebool值
getsebool -a | grep 服务名称

#修改

setsebool -P    0|1     #  -P 表示永久生效

# 查询ssh被允许使用的端口,并添加更改
[root@hai ~]# semanage  port -l | grep ssh
ssh_port_t                     tcp      22
[root@hai ~]# semanage  port  -a -t ssh_port_t -p tcp 666
[root@hai ~]# semanage  port -l | grep ssh
ssh_port_t                     tcp      666, 22
[root@hai ~]#

5、实例


[root@hai ftp]# getenforce
Enforcing                                # 在强制模式下

[root@hai ftp]# lftp 172.25.254.200      # 上传     
lftp 172.25.254.200:~> ls
-rw-r--r--    1 0        0               0 Nov 19 08:45 file1
drwxr-xr-x    2 0        0               6 Oct 30  2023 pub
lftp 172.25.254.200:/> cd pub/
lftp 172.25.254.200:/pub> ls
lftp 172.25.254.200:/pub> put /etc/inittab       # 上传文件失败
put: /etc/inittab: 访问失败: 553 Could not create file. (inittab)
lftp 172.25.254.200:/pub>
exit

[root@hai ftp]# ls -Z                 # 查看文件安全上下文
system_u:object_r:public_content_t:s0 file1
system_u:object_r:public_content_t:s0 pub
# 永久修改安全上下文
[root@hai ftp]# semanage  fcontext  -a  -t public_content_rw_t  '/var/ftp/pub(/.*)?'
[root@hai ftp]# restorecon -RvvF  /var/ftp/pub/       # 刷新安全上下文
Relabeled /var/ftp/pub from system_u:object_r:public_content_t:s0 to system_u:object_r:public_content_rw_t:s0

[root@hai ftp]# getsebool -a | grep ftp         # 查看ftp服务的sebool值
ftpd_anon_write --> off                         # 关闭

[root@hai ftp]# setsebool  -P  ftpd_anon_write on  # 永久生效修改

[root@hai ftp]# getsebool -a | grep ftp 
ftpd_anon_write --> on                          # 已开启


[root@hai ftp]# chmod 777 /var/ftp/pub          

[root@hai ftp]# lftp 172.25.254.200
lftp 172.25.254.200:~> cd pub/
lftp 172.25.254.200:/pub> put /etc/inittab
490 bytes transferred                            # 上传成功

[root@hai ~]# getenforce           #查看当前SELinux状态
Enforcing
[root@hai ~]# setenforce 0         # 修改为宽容模式
[root@hai ~]# vim /etc/nginx/nginx.conf
[root@hai ~]# systemctl restart  nginx.service       # 可以重启服务
[root@hai ~]# setenforce 1          #强制模式
[root@hai ~]# systemctl restart  nginx.service       #强制模式下重启失败
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

[root@hai ~]# 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@hai ~]# semanage  port -a -t http_port_t -p tcp 8989   #更改被允许使用的端口8989
[root@hai ~]# 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      8989, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
[root@hai ~]# systemctl restart nginx.service          #重启服务


原文地址:https://blog.csdn.net/m0_64469733/article/details/143918893

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!