1.什么时Selinux
Selinux,内核级加强型防火墙
SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统。对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的,这是一种基于内核的安全系统。
Selinux三个模式
Enforcing 强制(强制模式)— SELinux 策略强制执行,基于 SELinux 策略规则授予或拒绝主体对目标的访问
Permissive 宽容(警告模式)— SELinux 策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志
Disabled 禁用(关闭模式)— 完全禁用SELinux
2.如何管理selinux级别
selinux开启或者关闭
在配置文件"/etc/sysconfig/selinux"下将"SELINUX=enforcing"改为"SELINUX=disabled",因为SElinux是基于内核的安全系统,所以在设置完成之后需要重启内核,即需要重启电脑才可以生效。
vim /etc/sysconfig/selinux
selinux=disabled ##关闭状态
selinux=Enforcing ##强制状态
selinux=Permissive ##警告状态
selinux开启或者关闭
getenforce ##查看状态
当selinux开启时, "setenforce"可以设置SElinux的状态,但是只能设置0和1两种,即警告模式或者强制模式。
setenforce 0|1 ##更改selinux运行级别,
3.如何更改文件安全上下文
查看安全上下文): SElinux会在目录和文件上留下上下文标识
ls -Z
临时更改)
chcon -t 安全上下文 文件
chcon -t public_content_t /publicftp -R
永久更改)
semanage fcontext -l ##列出内核安全上下文列表内容
semanage fcontext -a -t public_content_t '/publicftp(/.*)?'
restorecon -FvvR /publicftp/
4.如何控制selinux对服务功能的开关
getsebool -a | grep 服务名称
getsebool -a | grep ftp
setsebool -P 功能bool值 on|off
setsebool -P ftpd_anon_write on
SElinux对服务的影响
SElinux是最全面的安全系统,所以会对文件和服务有一定的限制,以下服务以ftp为例。
SElinux会在文件上做出上下文标识,例如下图所示,在"/mnt"和"/var/ftp/pub"下分别建立文件"file",输入"ls -Z"可以查看文件标识。可以看出,"/mnt/file"为"mnt_t",而"/var/ftp/pub/file"标识为"public_content_t",这样会导致将"/mnt/file"移入"/var/ftp/pub"目录下,连接lftp无法看到这个文件。
SElinux为了系统的安全,会禁止服务一些危险功能的使用,可以输入"getsebool -a | grep ftp"来查看禁止了ftp服务的哪些功能,如下图所示,输入"setsebool -P 功能 on|off"可以控制这些功能的开关。
5.监控selinux的错误信息
setroubleshoot-server
项目案例一: httpd服务共享文件安全上下文的管理
** selinux开启的情况下做实验
yum install httpd -y
systemctl start httpd
systemctl enable httpd
systemctl stop firewalld
systemctl disable firewalld
hostname > /var/www/html/hello.html
date +%F > /mnt/westos.html
mv /mnt/westos.html /var/www/html/
现象一: 用户通过浏览器可以访问hello.html文件, 但不能访问westos.html文件。如何解决呢?因为文件的安全上下文不同导致的.
ls -Z /var/www/html/
chcon -t httpd_sys_content_t /var/www/html/westos.html # 临时修改安全上下文, 重启后失效
semanage fcontext -l # 查看系统默认的安全上下文信息
semanage fcontext -a -t httpd_sys_content_t /var/www/html/westos.html # 永久修改文件的安全上下文到系统中
restorecon -FvvR /var/www/html/ # 刷新目录, 重新读取安全上下文
项目案例三: vsftpd服务上传文件的管理(selinux开启的情况)
-
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES-
开启selinux对服务功能的开关
setsebool -P ftpd_anon_write on
setsebool -P ftpd_full_access on - 重启服务
systemctl restart vsftpd
-
项目案例四: Selinux如何管理/错误信息处理
1). Selinux的警告日志信息文件: /var/log/audit/audit.log
Selinux的警告日志信分析之后给出的解决方案存储的位置: /var/log/messages
2). 实现selinux警告分析并给出解决方案的软件名: rpm -qa | grep setroubleshoot-server
3). 测试步骤
1 > /var/log/messages
2 > /var/log/audit/audit.log
3 ifconfig | less
4 setsebool -a | grep ftp
5 getsebool -a | grep ftp
6 less /var/log/audit/audit.log 查看日志文件
7 rpm -qa | grep setroubleshoot-server
8 less /var/log/messages
9 yum install httpd -y
10 systemctl start httpd
11 systemctl enable httpd
12 rpm -qc httpd
13 vim /etc/httpd/conf/httpd.confbr/>@@
Listen 6666
@@
14 systemctl restart httpd
15 less /var/log/messages
16 semanage port -a -t http_port_t -p tcp 6666
17 semanage port -l | grep http
18 systemctl restart httpd