Linux的selinux

selinux内核级加强型火墙  

文件影响:CONTEXT 安全上下文  必须匹配才能访问
服务影响:getsebool功能开关

先将/etc/sysconfig/relinux文件下的disable改为enforcing,然后reboot重启

Linux的selinux_第1张图片
selinux设置后必须重启系统


setenforce 0  == 将/etc/sysconfig/relinux文件下的enforcing改为permissive,且不需要重启         警告


setenforce 1  == 将/etc/sysconfig/relinux文件下的permissive改为enforcing,且不需要重启         强制

Linux的selinux_第2张图片

如果移动文件到/var/ftp/,那么lftp登陆后查看文件就会出现警告,警告在/var/log/messages中。如果是强制状态,那么既会有警告也会看不到移动的文件,如果是警告状态,则只有警告,依然可以看见被移动的文件。

测试:
先在mnt下创建文件westosfile2,然后mv /mnt/westosfile2 /var/ftp
然后lftp 172.25.75.230  --> ls 如果是强制状态就看不见westosfile2,有警告,cat  /var/log/messages
如果是警告状态就可以看见westosfile2,有警告,cat  /var/log/messages

Linux的selinux_第3张图片

 Linux的selinux_第4张图片

文件影响:

在enforcing下,如果上下文不匹配,那么lftp登陆就不会看见移动的文件

更改用户家目录 anon_root=/home/ftphome  (在/etc/vsftpd/vsftpd.conf下更改)

Linux的selinux_第5张图片
临时更改文件上下文:chcon -t public_content_t /ftphome/ -R      -R表示递归更改上下文

查看文件上下文:ls -Zd /ftphome

Linux的selinux_第6张图片

由上图可以看到,/ftphome的上下文由default_t改为了public_content_t

但是如果selinux文件下,从enforce到disable再到enforce,刚才已经更改的文件的上下文就会复原

由enforcing改为disabled:

Linux的selinux_第7张图片

由disabled改为enforcing:

Linux的selinux_第8张图片

/ftphome的上下文复原了:


永久更改文件上下文:
1.semanage fcontext -a -t public_content_t '/ftphome(/.*)?'  (/.*)?表示ftphome目录下的所有内容
2.读取: restorecon -RvvF /ftphome/
3.semanage fcontext -l | grep /var/ftp  查看列表

Linux的selinux_第9张图片

服务影响:

匿名用户enforce下,上传文件:
不要忘记更改家目录,配置文件使匿名用户可以上传(进入/etc/vsftp/vsftp.conf,将anon_upload_enable=YES前面的#去掉  )。
1.setsebool -P ftpd_anon_write on   开启上传服务,-P表示永久生效
2.getsebool -a | grep ftp  查看服务开启列表
3.chcon -t public_content_rw_t /var/ftp/pub/  使文件可读可写
4.ls -Zd /var/ftp/pub    查看上下文
测试:  首先,先进入ftp的配置文件配置匿名用户可以上传,否则即使开启了改对了文件的上下文,也无法上传文件,会出现550报错(550:服务本身功能未开启)。

Linux的selinux_第10张图片

开启上传服务,getseboll -a是查看所有服务开启列表,在这里仅看ftp的所有服务列表,因为我们只需要查看它是否已经开启了允许上传文件的服务。

Linux的selinux_第11张图片

查看pub目录的上下文,发现此目录没有打开读写功能。

打开pub读写功能,如果不打开读写,那么就无法在selinux为enforcing时上传文件

更改配置文件后一定记得要重启服务

Linux的selinux_第12张图片

setroubleshoot-server软件

当ftp服务器出现报错后,会在/var/log/audit/audit.log日志里生成报错原因,但没有解决办法
如果安装了setroubleshoot-server.x86_64软件,就会把/var/log/audit/audit.log日志读取,生成解决办法,这个解决办法的文件就是/var/log/messages
测试:1.在mnt下创建一个文件然后移动到ftp     

                    touch/mnt/file
                    mv /mnt/file /var/ftp

             2.为了方便查看效果,我们不妨先清空以上两个日志里的内容
                    >/var/log/audit/audit.log
                    >/var/log/messages

             3.lftp..........
                    lftp 172.25.254.116
                    ls 就会出来报错,此时查看日志

              4.查看日志
                    cat /var/log/audit/audit.log  报错原因
                    cat /var/log/messages    解决办法

Linux的selinux_第13张图片


如果卸载setroubleshoot-server.x86_64软件,就不会生成解决办法,只生成原因。

测试:1.卸载软件
                  yum remove setroubleshoot-server.x86_64

Linux的selinux_第14张图片

Linux的selinux_第15张图片

             2.为了方便查看效果,我们再次清空以上两个日志里的内容
                    >/var/log/audit/audit.log
                    >/var/log/messages

              3.lftp登陆,然后查看解决方案的日志
                   lftp .....  -->   ls    就会出来报错,此时查看日志
                   cat /var/log/audit/audit.log  报错原因
                   cat /var/log/messages    此日志没有关于报错的内容

Linux的selinux_第16张图片

你可能感兴趣的:(Linux的selinux)