基于Linux系统的selinux配置

一、selinux简介

 selinux称为内核级加强型防火墙;selinux的目的在于明确的指明某个进程可以访问那些资源(文件,网络端口等);selinux是由美国国家安全局(NSA)开发 ,整合到linux内核的一个模块。selinux的主要作用有:针对文件,会对系统中每个文件添加安全上下文(context);针对进程会对系统中的每个进程添加安全上下文;会在系统服务上设定sebool开关;当进程的安全上下文和文件的安全上下文不匹配时,进程无法访问文件;sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值。

二、基本应用

1.安全上下文的作用

在服务端

touch /mnt/westos         
mv /mnt/westos   /var/ftp/  ##这样是为了让文件具有在mnt目录下默认的上下文

基于Linux系统的selinux配置_第1张图片

在客户端:

lftp 172.25.254.168
ls   ##不显示westos,因为安全上下文不允许

ls -Z /var/ftp/      ##查看安全上下文
semanage fcontext -l | grep /var/ftp   ##查看该目录下所有文件的默认安全上下文
chcon -t public_content_t /var/ftp/westos   ##修改安全上下文
基于Linux系统的selinux配置_第2张图片
lftp 172.25.254.101 
ls   ##显示westos

ps:上边对于上下文的修改是临时的,重启selinux之后就会还原
selinux的重启步骤:修改为disabled———>reboot————>修改为enforcing————>reboot

2.永久修改安全上下文

semanage fcontxet  -a -t public_content_t   '/westos(/.*)?'    ##/westos(/.*)?表示该目录以及其下的文件
semanage fcontxet  -l  | grep /westos    ##查看默认安全上下文
restorecon -FvvR /westos/        ##刷新安全上下文

基于Linux系统的selinux配置_第3张图片

重置selinux的方法:

touch /.autorelabel
reboot

3.sebool对于服务的影响(以ftp为例)

setenforce 1  ##若为0,会影响实验
getsebool -a  | grep ftp   ##找出有关ftp的sebool值
setsebool -P  ftp_home_dir  on   ##开启上传的权限 -P表示永久,P为大写
lftp 172.25.254.101 -u westos    ##注意使用本地用户
put /etc/passwd ##可以成功上传

基于Linux系统的selinux配置_第4张图片

基于Linux系统的selinux配置_第5张图片

4.selinux报错分析以及解决方案的提供工具:seroubleshoot-server.x86_64

touch /mnt/westos
mv /mnt/westos /var/ftp/
> /var/log/messages  ##清空selinux的解决方案
> /var/log/audit/audit.log   ##清空selinux的报错信息

firefox中 ftp://172.25.254.101/       ##注意setenforce 1,若为0可以直接看到westos

基于Linux系统的selinux配置_第6张图片

cat /var/log/messages  ##查看selinux的解决方案
cat /var/log/audit/audit.log   ##查看selinux的报错信息

基于Linux系统的selinux配置_第7张图片

restorecon -v /var/ftp/* ##刷新网页就可以看到westos

基于Linux系统的selinux配置_第8张图片

yum remove setroubleshoot-server   ##卸载工具
rm -f /var/ftp/westos
cat /var/log/messages  ##查看selinux的解决方案,看不到解决方法
cat /var/log/audit/audit.log   ##查看selinux的报错信息

5.semange工具的应用

semanage port -l |gerp http   ##查看http的端口
cat /etc/services | grep http  ##查看名称含http的端口
cat /etc/services | grep 21   ##查看端口含21的服务
cat /etc/services | grep -E “\<21\>”  ##查看端口是21的服务,-E “\<21\>”是为了防止扩展

基于Linux系统的selinux配置_第9张图片

基于Linux系统的selinux配置_第10张图片

基于Linux系统的selinux配置_第11张图片

补:网络端口:用套接字实现————>数据库

        主要的网络协议:tcp/ip协议       udp协议

  • 网络端口的添加:
yum install httpd 
vim /etc/httpd/conf/httpd.conf   ##修改Listen=6666

基于Linux系统的selinux配置_第12张图片

systemctl restart httpd   ##重启失败,注意前提是setenforce 0
semanage port -a -t hhtp_port_t -p tcp 6666   ##添加6666的端口
systemctl restart httpd  ##重启服务成功
semanage  port  -l  | grep http   ##查看端口是否添加成功

基于Linux系统的selinux配置_第13张图片

ps:若还不能重启,先清空日志,再重启,查看日志,若是selinux出现问题(如setbool...)

则需要重置selinux---->touch /.autorelabel--->reboot

你可能感兴趣的:(基于Linux系统的selinux配置)