当前位置: 首页 > news >正文

SELinux上课内容

/etc/security/limits.conf         #定义对用户的各种限制

1
2
3
#<domain>        <type>  <item>  <value>     #具体文件中有定义
user4 hard nofile 10              #限制user4最多打开10个文件
user5 hard as 10240            #限制user5只能使用10M内存





MAC:强制访问控制。添加了对应用程序的控制。

/etc/selinux/config    #配置文件

1
2
3
4
5
6
7
8
9
10
11
12
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values: #3种工作模式
#     enforcing - SELinux security policy is enforced.#强制模式
#     permissive - SELinux prints warnings instead of enforcing.#警告模式
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected, #不限制本地用户和服务,只限制网络用户
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection. #最高的保护级别。
#如果要使用此级别需要安装一个包。selinux-policy-mls。
SELINUXTYPE=targeted

在强制模式下面,selinux策略生效

在警告模式下面,selinux不会禁用策略,但是会记录下警告信息。

从enforcing切换到permissive,相互切换不需要重启,其它都需要重启才行。切换到permissive多用于排错。

1
2
3
4
5
[root@localhost ~] # getenforce       #查看目前处于什么模式下
Enforcing
[root@localhost ~] # setenforce 0     #切换到permissive模式
0:permissive模式
1:enforcing模式



所有的文件和进程都有一个security context,

1
2
3
4
5
6
7
8
9
[root@localhost ~] # ls -lZ              #查看文件的context值
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
system_u:用户
object_r:角色
admin_home_t:类型
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Documents
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Downloads
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 initial-setup-ks.cfg

如何查看程序的context值:

1
2
3
4
[root@localhost ~] # ps -Z
LABEL                              PID TTY          TIME CMD
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2077 pts /0  00:00:00  bash
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 61994 pts /0  00:00:00  ps

手动创建的文件的context值会继承上一级目录

系统中有一个数据库记录了文件的context值,如下命令查看所有目录的context值:

1
2
3
4
[root@localhost ~] # semanage fcontext -l
/var/run/kismet_server \.pid     regular  file        system_u:object_r:kismet_var_run_t:s0 
/var/run/klogd \.pid             regular  file        system_u:object_r:klogd_var_run_t:s0 
/var/run/krb5kdc (/.*)?          all files          system_u:object_r:krb5kdc_var_run_t:s0

如何修改文件的context值:

1
[root@localhost ~] # chcon -t xen_image_t /var/www   #-R代表递归

依据数据库恢复文件的context值:

1
[root@localhost ~] # restorecon -vvFR /var/www/   #-R代表递归,恢复www目录以及目录下的所有

如何把文件的context值写进数据库:

1
[root@localhost ~] # semanage fcontext -a -t xen_image_t '/xen(/.*)?'

表示把xen目录下的所有文件的context值都定义为xen_image_t,加入数据库。




Booleans:限定进程的动作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~] # getsebool -a          #查看bool值
ftp_home_dir --> off
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
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
1
[root@localhost ~] # setsebool ftpd_full_access on

 #修改bool值,立即生效,开机无效。选项-P,下次开机任然有效。




限制端口

查看se允许服务使用的端口

1
2
3
4
5
[root@localhost ~] # semanage port -l   
zarafa_port_t                  tcp      236, 237
zebra_port_t                   tcp      2600-2604, 2606, 2608-2609
zebra_port_t                   udp      2600-2604, 2606, 2608-2609
zented_port_t                  tcp      1229

添加端口到数据库

1
[root@localhost ~] # semanage port -a -t zebra_port_t -p tcp 8899



SELinux排错

troubleshoot:排错图形化工具

selinux日志记录在审计日志里面,查看审计日志

1
[root@localhost ~] # sealert -a /var/log/audit/audit.log

/var/log/messages  中也有selinux日志



本文转自 chomperwu 51CTO博客,原文链接:http://blog.51cto.com/chomper/1694199,如需转载请自行联系原作者

相关文章:

  • 浅谈Android编码规范及命名规范
  • 实现一些常用字符串处理函数
  • [摘录]第11章 造就优势谈判的驱动力
  • java调用斑马GK888t打印机(ZPL指令)
  • 允许chrome 浏览器运行 flash player
  • 注解的使用
  • hadoop各个组件功能
  • 命令行创建虚拟机,无桌面运行virtualbox
  • 一次arp防护配置错误导致的故障
  • 框架替换主页
  • HandlerSocket安装
  • phpstorm10.0安装xdebug插件
  • 网络编程(socket,套接字)
  • selinux
  • Bzoj2756 [SCOI2012]奇怪的游戏
  • (三)从jvm层面了解线程的启动和停止
  • [译] React v16.8: 含有Hooks的版本
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • CSS 三角实现
  • Docker入门(二) - Dockerfile
  • JavaScript异步流程控制的前世今生
  • js ES6 求数组的交集,并集,还有差集
  • Laravel核心解读--Facades
  • MQ框架的比较
  • Next.js之基础概念(二)
  • ubuntu 下nginx安装 并支持https协议
  • 复习Javascript专题(四):js中的深浅拷贝
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 如何正确理解,内页权重高于首页?
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $jQuery 重写Alert样式方法
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (java)关于Thread的挂起和恢复
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (十五)使用Nexus创建Maven私服
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (算法)前K大的和
  • (转)c++ std::pair 与 std::make
  • (转)memcache、redis缓存
  • ******之网络***——物理***
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net 发送邮件
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 中 GetProcess 相关方法的性能
  • .pop ----remove 删除
  • :“Failed to access IIS metabase”解决方法
  • ??在JSP中,java和JavaScript如何交互?
  • @AliasFor注解