一,回顾slinux
1.什么是是slinux?
内核级加强型防火墙
2.getenforce 查看色selinux状态(三种)
enforcing #过滤并阻止
permissive #记录并放行
disabled #禁用
3.临时切换状态:
setforce 0|1
4.永久切换状态:
1. [root@localhost ~]# vi /etc/sysconfig/selinux 2. SELINUX=disabled
二,什么是Context值
1.Context值分为两种:
系统默认的Context值
服务的context值
2.Context值的作用:
主要是防止有未知文件进入目录文件之中(如将木马拷贝到目录文件下)
3.context值的相关命令:
chcon -t context值 文件或目录 #更改context值 restorecon -R 文件或目录 #恢复原有的context值 semanage fconftext -a -t context值 文件或目录 #永久更改context值 选项: -t:设置context值 -R:递归 -a:添加
1.配置context值,查看root目录的文件Context值
注:在设置context值时,将selinux打开。
[root@localhost ~]# ll -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-------. root root system_u:object_r:admin_home_t:s0 original-ks.cfg
2.context值的作用
首先以FTP的方式来进行测试,安装ftp服务后,在/var/frp/pub目录下,创建两个文件,然后查看context值
[root@localhost pub]# ll -Z -rw-r--r--. root root system_u:object_r:public_content_t:s0 1.txt -rw-r--r--. root root system_u:object_r:public_content_t:s0 2.txt
接下来通过远程用户以FTP服务器登录到主机,查看这两个共享文件
[root@localhost ~]# lftp 192.168.2.1 lftp 192.168.2.1:~> ls drwxr-xr-x 2 0 0 32 Oct 27 05:44 pub lftp 192.168.2.1:/> cd pub lftp 192.168.2.1:/pub> ls -rw-r--r-- 1 0 0 0 Oct 27 05:44 1.txt -rw-r--r-- 1 0 0 0 Oct 27 05:44 2.txt
然后修改1.txt文件的context值为tmp_t
[root@localhost pub]# chcon -t tmp_t 1.txt
然后在客户端进行查看文件列表
[root@localhost ~]# lftp 192.168.2.1 lftp 192.168.2.1:~> ls drwxr-xr-x 2 0 0 32 Oct 27 05:44 pub lftp 192.168.2.1:/> cd pub lftp 192.168.2.1:/pub> ls -rw-r--r-- 1 0 0 0 Oct 27 05:44 2.txt
由此可用看出当context的值做出了不同的改变,会影响服务的访问或读取
[root@localhost pub]# ll -Z -rw-r--r--. root root system_u:object_r:tmp_t:s0 1.txt -rw-r--r--. root root system_u:object_r:public_content_t:s0 2.txt
3.使用http服务查看context值的作用
安装httpd服务,编辑index.html网站文件
[root@localhost ~]# cd /var/www/html/ [root@localhost html]# ls [root@localhost html]# echo "hello" > index.html [root@localhost html]# ll -Z -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
更改context值
[root@localhost html]# chcon -t tmp_t index.html [root@localhost html]# ll -Z -rw-r--r--. root root unconfined_u:object_r:tmp_t:s0 index. html
再次访问就会出现问题
4.context值的特点:
1.当下创建文件时,继承上一级的目录的context值
2.context值分为两种(默认context值,服务context值):
默认context是系统自身的默认值
服务context值是在安装服务器时,所带的context值,不会受上一级的目录的影响
3.当更改了不同的context值,会影响服务的访问和读取
服务和默认context的区别
也就是说,除了由于服务的原因,比如/var下面,由于安装了ftp服务后,会在/var下面创建ftp这个目录文件,可是查看context值却发现并没有继承/var的context值,却可以在/var下面看到,这个现象可不是为了推翻context值的作用,而是为了说明继承分为两种,一种是以系统默认的context值为基,在此下面创建的目录或文件就继承了其context值,而有一种情况是不受其约束的,那就是安装服务的时侯所自动产生的目录或文件,它们拥有着属于自己的context值,可以当作例外来看,那么一切就可以解释的通了。
三,bool开关安全机制
Bool开关的作用:
Bool主要是争对在selinux处于enforcing(强制状态)时,拥有访问端口的口令也是无法登陆的情况时起作用的
bool常用命令:
1. getsebool –a #查看所有的bool开关 2. setsebool -P 服务=[1|0] #修改bool值 3. (1 :开 0:关 或者on /off) 4.
1.bool安全机制的原理
注:前提将selinux服务设置为enforcing模式
如果selinux设置为enforcing模式,用户将可以使用ftp服务,但是无法获取目录下的所有文件,需要单独放开权限。
[root@localhost html]# 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
使用setseboot来进行开发tftp_home_dir权限
[root@localhost ~]# setsebool -P tftp_home_dir=on [root@localhost ~]# getsebool -a | grep ftp | grep ftp_home tftp_home_dir --> on
FTP服务用户将可以正常访问自己的宿主目录