Linux下的selinux安全上下文、TCP/IP协议

1、简介

selinux是美国国家安全局和SCC开发的linux的一个强制控制的安全模块。传统linux中的文件,由用户、组、权限控制访问,而在selinux中的对象,由存在inde表的扩展属性域的安全元素所控制其访问。其主要作用就是最大限度地减小系统中服务进程可访问的资源。

vim /etc/sysconfig/selinux #改变selinux的工作模式

reboot #重启,改变任何一种selinux模式都需要重启

需要注意的时:当系统关闭了selinux一段时间后,在打开时重启会比较慢,这是因为系统需要为磁盘中文件创建安全上下文。

getenforce #查看selinux的模式
selinux的级别:
enforcing #警告模式,有警告,可以查看(setenforce 0)

permissive #强制模式,有警告,直接拒绝(setenforce 1)

警告可以在/var/log/audit/audit.log查看

2、理解安全上下文的作用
(1)touch /mnt/test
(2)mv /mnt/test /var/ftp/ #复制是新建的过程,移动是重命名的过程,文件系统权限和属性不会改变
(3)lftp 172.25.254.225
(4)cd /var/ftp/
(5)ls -Z
(6)semanage fcontext -l |grep /var/ftp #内核记录过的安全上下文
(7)chcon -t public_content_t test #修改test的安全上下文,临时的
(8)lftp 172.25.254.225

3、修改安全上下文

###临时修改###

(1)mkdir /westos
(2)touch /westos/westosfile
(3)ls -Zd /westos #查看/westos的安全上下文
(4)ls -Zd /var/ftp #查看/var/ftp的安全上下文
(5)semanage fcontext -l | grep /var/ftp #内核记录过的/var/ftp安全上下文

(6)semanage fcontext -l | grep /westos #内核记录过的/westos安全上下文,显示没有


(7)chcon -t public_content_t /westos -R #临时修改/westos的安全上下文public_content_t


(8)vim /etc/sysconfig/selinux

disabled


(9)reboot
(10)vim /etc/sysconfig/selinux
Enforcing
(11)reboot #两次修改selinux值,重启
(11)ls -Zd /westos #查看/westos安全上下文,恢复为default_t

###永久修改###

(1)vim /etc/vsftpd/vsftpd.conf

anon_root=/westos


(2)systemctl restart vsftpd #修改匿名用户家目录
(3)semanage fcontext -a -t public_content_t '/westos(/.*)?'
#永久修改/westos的安全上下文,-a 表示添加,-t 表示类型
'/westos(/.*)?'任意匹配,匹配/westos下的任意字符,同/westos/*/*/*...

(4)semanage fcontext -l | grep /westos #内核记录过的/westos安全上下文
(5)restorecon -FvvR /westos/ #F刷新,vv显示列表
(6)vim /etc/sysconfig/selinux
disabled

(7)reboot


(8)vim /etc/sysconfig/selinux
Enforcing
(9)reboot #两次修改selinux值,重启

(10)ls -Zd  /westos

(11)lftp测试


当seliunx出错时,执行touch /.autorelabel,在根底下建立.autorelabel文件,然后重启系统,selinux恢复

4、sebool值

开启selinux后,系统进程会默认加载sebool值,访问权限可以通过布尔值触发,相当于一个开关的作用。
(1)getenforce
Enforcing
(2)getsebool -a |grep ftp #查看ftp进程的sebool值,显示全部关闭
(3)setsebool -P ftp_home_dir on #开启ftp_home_dir,-P表示永久
(4)getsebool -a |grep ftp #查看ftp服务的sebool值
(5)ls -ld /home/student/ #注意本地用户(此时是student)的权限,要可写

(6)lftp 172.25.254.225 -u student

5、监控selinux冲突
(1)vim /etc/vsftpd/vsftpd.conf #关闭用户家目录修改
(2)systemctl restart vsftpd.service
(3)> /var/log/messages
(4) > /var/log/audit/audit.log
(5)touch /mnt/westos
(6)mv /mnt/westos /var/ftp

浏览器测试:ftp://172.25.254.225,看不到westos


(7)cat /var/log/audit/audit.log #查看,有日志


(8)cat /var/log/messages #查看日志,有解决方案

(9)restorecon -v /var/ftp/* #对/var/ftp执行该解决方案

重新测试:ftp://172.25.254.225,可以看到westos


(10)rpm -qa | grep setrouble #查看服务
(11)yum remove setroubleshoot-server-3.2.17-2.el7.x86_64 #卸载

#该软件的功能是读取/var/log/audit/audit.log日志,并且产生解决方案,只提供解决方案,而不确定这个方案是否安全


(12)> /var/log/messages
(13)> /var/log/audit/audit.log
(14)touch /mnt/westos1
(15)mv /mnt/westos1 /var/ftp/
测试:ftp://172.25.254.225,可以看到westos

(16)cat /var/log/audit/audit.log #有日志生成


(17)cat /var/log/messages #查看日志,无解决方案,这是因为不能正常读取audit.log日志内容了,也无法给出解决方案


(18)yum install setroubleshoot-server-3.2.17-2.el7.x86_64 #重新安装

6、让selinux允许使用默认以外的其他端口

      计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域 的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

(1)yum install httpd
(2)vim /etc/httpd/conf/httpd.conf #修改http服务的端口为6666

Listen 6666


(3)systemctl restart httpd #重启失败
(4)setenforce 0 #改为警告模式
(5)systemctl restart httpd #重启成功
(6)semanage port -l | grep http #查看http服务的端口

(7)semanage port -a -t http_port_t -p tcp 6666 #使用tcp协议,将6666加入http的默认端口

(8)semanage port -l | grep http #查看http服务的端口,加入成功
http_port_t tcp 6666, 80, 81, 443, 488, 8008, 8009, 8443, 9000
(9)setenforce 1 #改为强制模式

(10)systemctl restart httpd #可以重启服务


 补充内容:TCP/IP协议

       从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。

       TCP/IP协议并不完全符合OSI的七层参考模型,OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

    通俗理解tcp/ip的三次握手、四次挥手流程:

三次握手流程

  1. 客户端发个请求“开门呐,我想进来”给服务器
  2. 服务器发个“进来吧,我给你开门”给客户端
  3. 客户端有很客气的发个“谢谢,我要进来了”给服务器

四次挥手流程

  1. 客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
  2. 服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
  3. 服务器把门关上后,发个“我要关门了”给客户端,然后等客户端走
  4. 客户端发个“好的我知道了,我走了”,之后自己就走了

猜你喜欢

转载自blog.csdn.net/yyyxxxs/article/details/80342210
今日推荐