首先了解一下selinux,selinux是强制安全服务。

Linux 2.6.X都带有这个系统

DAC 自主的安全控制 -rw-r—r—rout rout f1 文件的所有者可以自主的控制自己的权限

Facl 文件访问控制

Mac:强制的安全控制 安全上下文

 

开启selinux安全控制服务

[root@localhost ~]# setup

selinux与NIS的应用_第1张图片

selinux与NIS的应用_第2张图片

选择第一个enforcing ,开启selinux,需要重启系统才能生效! init 6

重启系统时,系统会生成selinux需要的模块。

selinux与NIS的应用_第3张图片

我们安装一个apache服务,来测试使用selinux

[root@localhost ~]# rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm

[root@localhost ~]# cd /var/www/html/ //进入默认站点做一个简单的网页测试。

[root@localhost html]# echo " hello! " >index.html

需要启动httpd服务

[root@localhost html]# service httpd start

客户机访问apache站点:

selinux与NIS的应用_第4张图片

现在我们修改站点主目录,来看看selinux会怎样维护安全

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

clip_image010

[root@localhost ~]# mkdir /web

[root@localhost ~]# echo " hello !" >/web/index.html

重启系统,就会报错。原因来自selinux的阻止。

clip_image012

使用getenforce命令查看selinux的安全级别,

同时使用setenforce设置级别:0为警告,1为开启

selinux与NIS的应用_第5张图片

在次重启apache服务成功了

clip_image016

我们在次把selinux设为开启状态,寻找解决方案

[root@localhost ~]# setenforce 1

重启apache服务,再次报错了,解决方案:

查看日志:[root@localhost ~]# tail -f /var/log/messages

clip_image018

根据提示,我们连接到是 “安全上下文” 就是类出错了

查看一些apache能够正常启动时的 进程和index.heml的类

[root@localhost ~]# ps auxZ |grep httpd //查看进程的类是httpd

clip_image020

[root@localhost ~]# ll -Z /var/www/html/index.html //查看index.html的类是httpd

clip_image022

再查看apache不能正常启动时的 进程和index.html的类

[root@localhost ~]# ll -Z /web/index.html

//类域进程不一致,所以进程无法控制文件,需要修改新站点的类,就可以了。

clip_image024

使用chcon这个命令来修改 /web目录的类 与apache的类一致

[root@localhost ~]# chcon -R -t httpd_sys_content_t /web

clip_image026

在次重启apache服务成功了

clip_image028

客户端测试正常

selinux与NIS的应用_第6张图片

这次我们增加apache的监控端口为800,看看如何设置selinux

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

clip_image032

重启apache服务,失败了

clip_image034

查找原因:

1、查看日志

[root@localhost ~]# tail -f /var/log/messages

clip_image036

Aug 30 04:17:17 localhost setroubleshoot: SELinux is preventing httpd (httpd_t) "name_bind" to (hi_reserved_port_t). For complete SELinux messages. run sealert -l 9368e26c-cfe1-4817-9b9e-bbd33ab8120a

大致的意思是 name_bind 就是监听的端口出事了

2、Linux在桌面环境下Selinux有提示,点击那个星星,查看提示

selinux与NIS的应用_第7张图片

selinux与NIS的应用_第8张图片

两种方法看到的错误一样的,这是根据日志的提示,

run sealert -l 9368e26c-cfe1-4817-9b9e-bbd33ab8120a //在命令行中运行

[root@localhost ~]# sealert -l 9368e26c-cfe1-4817-9b9e-bbd33ab8120a

提示信息如下:800端口,selinux不能认可,

selinux与NIS的应用_第9张图片

查看selinux对于httpd服务支持的端口

[root@localhost ~]# semanage port -l |grep http

clip_image044

使用semanage命令增加给selinux增加一个端口800

[root@localhost ~]# semanage port -a -t http_port_t -p tcp 800

此时重启apache服务成功了

clip_image046

测试也通过了。

selinux与NIS的应用_第10张图片

有很多服务在使用时总是会出现很多状况,我们可以通过调节selinux的控制开关,来通过selinux来使用。

Selinux策略的开关,查看对各项服务的详细设置,限制是off 关闭限制是on

1、命令行getsebool –a //我们查看关于ftp的开关,

selinux与NIS的应用_第11张图片

2 、图形界面clip_image052

selinux与NIS的应用_第12张图片

总之各有各的优点!