selinux 了解2

凡是对内核级, 如selinux的修改, 不只是对软件, 程序的修改, 那么修改之后都要重新启动.

针对windows下的截图, 像linux下的screenshot截图那样设置快捷键 shift+super+A 设置无效! 好像不能识别super, 所以就设置成shift+alt+a了.

=========================================================

可以记忆一下 某某影音 的快捷键设置 : 因为估计它也是借鉴 ffmpeg, mplayer 而来的, 可能对后面有帮助:

1.关于设置的快捷键: f3: 播放列表, f4: 播放设置, 如设置图像,声音,声道等等. f5: 就是程序本身的设置
2. 关于播放速度: ctrl+up/down调整速度; R复原播放速度.
3. 关于声音大小: up/down, M静音.
4. 快进: left/right=5秒, ctrl+left/right=30s, alt+left/right=300s=5min.
5. 重复播放: ctrl+1: 设置A点 ctrl+2: 设置B点, ctrl+3: 取消重复;
6. 截图: alt+s:
7. 屏幕大小: enter全屏, shift+enter迷你模式. T(top)在最上面.
8. 文件: ctrl+o打开文件, ctrl+f=打开文件夹; ctrl+u: 打开url, ctrl+s: 关闭当前播放的视频但是不退出程序.

(windows和linux的系统, 都会考虑对方系统使用人员的一些习惯, 做一些通用的 共通的, 非反人类的设置, 如:alt+esc, super+up/down等等)

=========================================================
selinux是通过 "策略" 来 "控制, 就是 限制" 哪些进程(域) 可以/不可以访问哪些文件(安全上下文)

通常使用的是selinux的预置策略. 除非是 我们自己开发的程序, 你才需要自己写selinux策略.

selinux策略类型通常是 target. 意思是: 只有target指定的 进程域 "才" 受selinux的控制/限制, 其他非target的进程不受selinux的限制, 就好象这个selinux不存在一样.

======================================================
/boot/grub2/grub.cfg中的 $prefix 就是指文件的目录路径 /boot/grub2???
if [ -s $prefix/grubenv ]; then
load_env
fi

而实际决定grub的条目和默认启动项的还是在/etc中:
/etc/grub.d : 下面是一些可执行的 文本文件, 如 00_header;

设置默认的超时时间和 启动条目: /etc/default/grub 文件: GRUB_TIMEOUT=5;.... GRUB_DEFAULT=saved;

===========================================
selinux 的target策略 "只限制网络应用程序,如: dhcpd, named, httpd, mysqld,...."

setenforce 只能设置0和1, 0=permissive, 1=enforce

为什么selinux会影响我们对文件的操作呢? 是因为, 我们在进行某些操作的时候, 可能会改变某些文件的context 安全上下文, 所以, 在后面进行操作的时候, 就发生了限制问题.

要对文件的context进行操作, 主要有两个方法:

  1. restorecon: restore - context, 恢复文件的context为原来默认的: restorecon -R -v /var/www
  2. chcon: change - context, 改变context,通常是根据某个默认文件为参考: chcon --reference=/etc/named.conf.origin /etc/named.conf

================================================
对vmware workstation的界面熟练掌握:

  1. 版本是10.0, 能够完美 无故障的 使用;
  2. 可以对单个虚拟机进行配置, and you are also able to configure the application totally: the shortcut keyboard is ctrl+p.
  3. 有几个部分区域的按钮: 一个是电源按钮/ shots区域, 快照备份, 快照管理, 快照恢复/ 视图区: 左边的库"侧边栏", 底部的"缩略栏", 全局视图/ 控制台视图(即可以查看,操作控制台, 但同时vm并没有关闭).
  4. 其中, 全屏视图: ctrl+alt+enter. 采取"exclusive"独占模式.

一般不要点 "三个键重叠在一起"的那个按钮, 那是发送 "ctrl+alt+del"

====================================================

实际上, 对selinux的理解可以总结为以下几点:

  1. 基于文件/目录的所有者, 读写权限的acl是dac, 是基本的linux安全设置;
  2. 而selinux是在dac基础上的 进一步的 安全防御措施. 如果在不是特别敏感和重要的 服务器上可以 关闭;

3. 如果开启seliux, 实际上是对linux的安全 再加上了 一把 强有力的 大锁: 可以把它理解为: "selinux主要就是针对 进程, 如httpd, named等网络服务程序, 对文件的访问, 主要就是这个作用, 因为 系统的危险 主要 就是来自 网络的 访问!"

举例:
对httpd服务, 默认的访问/var/www/html.

对一些 系统默认的 目录, 如: /etc. /usr/, /var/www/html等, 系统都有默认的selinux上下文设置. 如:对/var/www/html中的文件, 系统默认的context是: system_u: object_r: httpd_sys_content_t....., 也就是说, 只有httpd才能访问这些文件??? 或者说, httpd要能够访问/var/www/html中的文件, 这个文件一定的安全上下文 一定要是: system_u: object_r: httpd_sys_content_t..., 如果不是就不能访问. 这个 就是selinux对httpd 对文件的 访问限制.

管理员在做一些mv, cp(主要就是这两个吗?) 文件操作的时候, 将其他一些文件, 移动到 html文件夹中来, 并不会改变文件原来的 type类型.
当文件的类型, 不是 /var/www/html/的context时, 就会被selinux限制!!!

  1. 要将在/root目录下创建的文件, (其context type是: .....:admin_home_t)移动到 /var/www/html/时, 由于selinux context type类型限制, 所以httpd就不能访问移动过来的 index.html

  2. 要修改, 要 troubleshoot 这个selinux的问题, 只要 restore或change context就好了:
    [root@localhost ~] # restorecon -R /var/www/html ;;;恢复/...html中的所有文件的context为系统原来默认的type...
    或 chcon --reference=/var/www/html /var/www/html/index.html

============================================================
虚拟机的独占exclusive模式/

  1. 与全屏模式比较, 全屏模式时, 鼠标移到顶端会显示工具栏和边缘条, 而exclusive模式则不会;
  2. 什么时候使用独占模式? 当某些浏览器的顶端是标签页, 鼠标切换标签页会和工具栏和边缘条相混淆时, 可以采用独占模式.
  3. 无法为独占模式设置 快捷键, 因为系统的提供的 快捷键, "热键"修改, 只是针对ctrl+alt等几个???

单独对虚拟机(官方的语言/称谓叫 客户机 )...的设置,是ctrl+d, 对整个程序的设置是ctrl+p;

  1. unity: 统一, 完整, 一体化: Europe economic unity. vmware中的unity, 是指将 虚拟机 的 "桌面" 搬到 物理机/主机 上来. 也就是说, 即使没有全屏或独占(所谓独占, 是指 该vmware只 显示在当前监视器上, 是针对有多个监视器的 情况), 虚拟机中的窗口和桌面, 也不仅仅局限在vmware的窗口中, 而是全部显示到真机的 桌面上.

unity就是将真机和虚拟机 "统一"了起来, 目的是, 避免 在 真机和虚拟机之间 频繁地 移动 鼠标

但是unity 只能针对 图形界面, 对于centos字符界面是不行的, 报错: "不能修改客户机的os的分辨率".

========================================================
网站的标题title, 其实还是比较重要的, 它可以在firefox, chrome等浏览器在多个标签页的显示中, 看出/知道是 当前是在浏览哪个页面, title也可以做到 像普通的程序一样, 显示文档/文件的 标题的作用. 要习惯于看 网页的title.

在linux中 要排错的话, 遵循的几个步骤: iptables防火墙 -> server配置(如httpd服务器本身的配置, named的配置等) -> file/directory的权限 -> selinux

防火墙只能控制 数据流的方向, 不能区别账户信息, 控制tcp/.ip流...

如果因为selinux 阻止了 网络应用程序 "domain" 对文件 "type"的访问, 如何解决?

  1. 如果是mv / cp等操作, 使得 移动或复制的 文件 跟目标目录的 context属性不一致, 则可以采用 restorecon, chcon的方法进行 恢复

  2. 那, 如果不是因为mv, cp等的操作, 根本就没有这样的操作呢? 如ftpd服务, 普通用户, 不能访问自己的 家目录呢?
    你不能关闭 selinux, 这个是很好的 加固 安全的 手段和工具. linux比windows 安全的表现 就是这样的, windows通常只有/主要有 防火墙??? 但是linux有 多重 (4重)保护!!!
    你不能因为你不习惯, 不熟悉 selinux, 就把它关闭了, 那个是 捡了芝麻 丢了西瓜,

    这个时候, 因为是 selinux阻止了 网络进程domain对 文件type的访问, 而selinux 的targeted策略的实现, 是 通过 许多 bool值来实现 的: 在服务安装/配置的时候, 就会自动将要配置的 网络程序 默认的 规则 items (rules, sebools) 写入到 targeted策略中, 所以, 对 selinux的 调整 , 实际上 是可以精细的 通过 控制 某些相应的 sebool 的值 来控制:

[root@localhost] # getsebool -a | grep "http' 或者 'home'

那么, 从上面的selinux可以看出, httpd是不能访问用户的 家目录的, 而samba也不能创建家目录, 遇到这样的问题, 就是由selinux引起的...

selinux的思想, 更先进, 不是对用户来设置权限, 而是另外一种思路, 是通过 控制 进程/程序, 对资源 /文件等的 访问限制 来实现的, 而不管你运行 这个进程的用户是谁, (即使是root), 也只能访问特定的资源...

selinux的思路是, 是对进程进行限制, 是一种 mac: mandatory强制访问, 是对进程 而是不是对人 /用户进行限制, 因为 真正的/最终的对电脑上的任何东西产生影响的是 "动作" 是"进程" , 就如同人的犯罪一样, 是以人的行为, 而不是以人的思想来判断有罪的. 所以, 只要对进程进行了限制, 即使你有再大的权限, "说的比皇帝都大", 但是你没有具体 的 "执行" "实际行使的做事" 权力, 那仍然是空的, 仍然不会产生破坏的.

==========================================================
管理 selinux的命令有几个:
getenforce, setenforce. restorecon, chcon;
seinfo -r/-u/-b/-t/-A, sesearch, semanage....

但是这些不是单独 的程序包, 要使用这些 程序包, 需要安装 : setools-console程序包:

yum install setools-console...........

安装了 setools-console后, 可以使用seinfo 查看整个的selinux的 架构:

参考文章:http://blog.chinaunix.net/uid-28216282-id-3377263.html

对于 "文件或进程", 如果对方返回的 context信息: 的 system_u, 或者 system_r, 就说明查看的是 进程!! 而不是文件!!

=====================================================

centos7的新特性 new features

ifconfig命令在net-tools软件包里

nslookup,dig在bind-utils中
2,centos使用了systemd来代替sysvinit

systemd使用方法:

systemd的服务管理程序

systemctl是最主要的工具。它融合 service 和chkconfig的功能于一体。你可以使用它永久性或只在当前会话中启用/禁用服务。

凡是关于systemctl的东西, 关于sys v init启动功能的东西, 都是放在** /usr/lib/systemd/system/ **下面的, 包括runlevel等等...

systemd使用了target这个 目标, 这个"广泛使用的概念" , 来代替在sysvinit中使用的 运行级别 runlevel, 安全selinux等等.

在/etc/systemd/system下的target其实是 /usr/lib/systemd/system下各种target的符号链接

在/etc/selinux/targeted/policy/policy.29, 和 /usr/lib/systemd/system/*.target中的policy 中的数字, 有的是policy.21, policy.28/29 这个表示的是 selinux 中的 policy的版本号. 不是selinux的版本号

systemd 是用来管理 服务+系统(包括设备device, 装载点mount, 套接字sockets,....) +状态... 这些都叫单元文件unit-file, (其实是这些功能的配置文件),

参考文章很好: https://blog.linuxeye.com/400.html

systemd有两种单元文件, 一种是 用户安装包时, 添加的单元文件, 另一种是系统管理员 /系统安装的

[[[[

systemd单元文件的语法来源于 XDG桌面入口配置文件.desktop文件,最初的源头则是Microsoft Windows的.ini文件。单元文件可以从两个地方加载,优先级从低到高分别是:

/usr/lib/systemd/system/: 软件包安装的单元
/etc/systemd/system/: 系统管理员安装的单元

注意: 当systemd运行在用户模式下时,使用的加载路径是完全不同的。
]]]

.../systemd/system/ 下的target等文件和对应的.target.wants的关系?

通常, .targeted.wants是一个目录, 里面记录的是前面 的这个 相应的 target 所需要的 依赖文件, 顾名思义, wants, 表示的 是 被需要的文件集合..

可以打开其中的文件,看里面的文件的内容, 就知道 里面的 [Unit] 中的 Wants=... 表示被需要, 不一定必须的, 如果是Requires 则表示是必须的, After则表示启动的先后顺序...


========================================================
关于selinux的命令很多, 如查看selinux的状态, 使用: sestatus
: selinux的状态 !== selinux的模式:
selinux status: enalbed;
selinux mode: 可以是permissive.

设置/获取selinux的命令是用的 enforce, 不加ing, 而真正的模式, 则是 Enforcing , 要加ing, 而且要首字母大写, 如:Permissive

vim: warning: output is not to a terminal. 输出没有到终端, 因为vi/vim并没有输出内容到终端, 所以你后面用管道命令的话, 就会报错..., 如: vim /var/log/audit/audit.log | tail

ctrl+c和Ctrl+z的区别

ctrl+c是中断 "前台程序组"中的所有程序, 发送的是 SIGSTP信号??
ctrl+z是暂停 "挂起" suspend ..., 发送的是 SINGINT 信号..
重点是: ctrl_c并不一定能够终止程序, 所以有时候按ctrl+c并没有反应, 要按 ctrl+z才能退出前台被 卡住 的程序
当ctrl+z 挂起前台程序后, 可以按 fg/bg 前台/后台 命令 来切换...

===================================================

可以把selinux理解为城管, 城管记录的店铺的位置就相当于资源的 标签type context. 进程主体domain, 要访问资源, 除了要满足工商局的dac要求, 还要满足城管的上下文要求, selinux的context记录:

那么 ,城管所记录的几号店 ---就相当于店铺的 门牌号 --- 就相当于程序/资源的context上下文 type类型. 如果你更换了门牌号, 就相当于更改了 资源的上下文信息, 这时城管就会阻止你营业, 同样的, selinux就会阻止程序/服务的运行....(比如, 你修改了httpd的documentRoot的地址....)


修改文件的context?

有两种方法:
1. 是, 可以直接用-t来指定context类型, (目录要注意用-R):
    chcon -R -t httpd_sys_content_t /www
2. 是, 如果记不住,或不知道, context类型, 就用参考来做:
    chcon -R --reference=/var/www/html /www


创建本地的光盘yum仓库非常简单:

    /etc/yum.repos.d/cdrom.repo:
        [cdrom]
            name=cdrom local repository
            baseurl=file:///mnt
            enabled=1
            gpgcheck=0

===================================================

下面命令用于列出正在运行的服务或其他unit: systemctl , 或者:systemctl --list-units

===================================================
要使用setroubleshoot, 就要启用两个服务, 一个是setroubleshoot服务, 另一个是xinetd服务.

"玉米或dnf"的list, 显示所有可以安装的包, 和已经安装的包;
list package-name, 显示 已经安装的包
list中, 支持通配符* ?, 但是要球名字要完整:

===================================================
关于 selinux的排错, 有一个比较好的参考: http://bbs.chinaunix.net/thread-1925078-1-1.html
AVC: access vector cache. vector: 矢量/向量/容器/载体. 这里可以理解为 访问的所有东西, 访问的队列 等等.
type=AVC ... 表示当前这条selinux信息是由于访问 引起的 ???
挂于selinux排错, 有两个工具: 一个是setroubleshoot, 另一个是audit本身.

aduit提供了两个命令: audit2allow, audit2why. 他的日至在: /var/log/audit/audit.log. 注意没有auditd没有d, 后面的日志是audit的源, 可以认为audit就是为selinux记录日志的

通过查看和设置selinux的bool值: getsebool -a |grep '....', setsebool -P(永久生效) ftp_home_dir 1. (将ftp_home_dir这个bool值设为on)

===================================================================
查看audit.log中的内容, 一个条目表示一条audit错误信息:

missing or disabled te(type enforcement) allow rules?
**TE: 也叫做 类型强制, Type Enforcement. 是selinux的核心. **关于TE 的文章参考:http://blog.csdn.net/loongembedded/article/details/50845557

fedora23和 centos7 的selinux的policy 配置文件location is: /etc/selinux/targeted/policy/policy.29, 可惜是不可读的, 这个里面就是selinux的具体规则. 里面写的可能就是: allow, deny...等等内容:

audit2allow < /var/log/audit/audit.log创建 TE 允许规则:

如果是某一次, 启动时, 需要关闭selinux, 那么在 启动内核时, 按'e", 在内核的最后面, 加上: selinux=0 即可..

posted @ 2016-08-30 09:17  noitanym  阅读(897)  评论(0编辑  收藏  举报