文章目录
1.理解
(1)Selinux,内核级加强型防火墙;SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统。对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的,这是一种基于内核的安全系统。
(2)Selinux三个模式:
①Enforcing 强制(强制模式)— SELinux 策略强制执行,基于 SELinux 策略规则授予或拒绝主体对目标的访问
②Permissive 宽容(警告模式)— SELinux 策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志
③Disabled 禁用(关闭模式)— 完全禁用SELinux
(3)管理selinux级别
方式 | 命令 | 注释 |
---|---|---|
1.临时修改 | ##当selinux开启时, "setenforce"可以设置SElinux的状态,但是只能设置0和1两种,即警告模式或者强制模式。 | |
getenforce | ## ##查看状态 | |
setenforce 0|1 | ## ##更改selinux运行级别 | |
2.永久修改 | ##在配置文件"/etc/sysconfig/selinux"下将"SELINUX=enforcing"改为"SELINUX=disabled",因为SElinux是基于内核的安全系统,所以在设置完成之后需要重启内核,即需要重启电脑才可以生效。 | |
vim /etc/sysconfig/selinux | ## 打开配置文件 | |
selinux=disabled | ##关闭状态 | |
selinux=Enforcing | ##强制状态 | |
selinux=Permissive | ##警告状态 |
2.selinux的常见操作
功能 | 命令 | 注释 |
---|---|---|
1.selinux服务共享文件安全上下文的管理 | ||
1.1 配置本地源,安装http服务,安装,配置素材 | ||
(1) | yum whatprovides httpd | ##查找httpd的安装包 |
(2) | yum install httpd-2.4.6-45.el7.x86_ 64 | ##yum安装httpd |
(3) | systemctl start httpd | ## 开启http服务 |
(4) | systemctl enable httpd | ##自启动http服务 |
(5) | systemctl stop firewalld | |
(6) | systemctl disable firewalld | ## 开机不启动防火墙 |
(7) | hostname > /var/www/html/hello.html | ## 在/mnt下建立文件,将hostname加入 |
(8) | date +%F > /mnt/westos.html | # date写入 |
(9) | mv /mnt/westos.html /var/www/html/ | # 将文件移动 /var/www/html |
***1.2测试 1:selinux为强制状态,访问失败(httpd)***:(1) | setenforce 1 | ## selinux 设置为强制 |
(2) | http://localhost/westos.html | ## 发现访问不了 |
1.3测试 2:selinux为permissive状态,访问成功(httpd) | ||
(1) | setenforce 0 | ## ## selinux 设置为警告 |
(2) | http://localhost/westos.html | ## 发现可以访问 |
1.4测试 3:selinux为强制状态,访问成功(临时修改httpd) | ||
(1) | setenforce 1 | ## ## selinux 设置为强制 |
(2) | ls -Z /var/www/html/ | ##查看文件信息类型 |
(3) | chcon -t httpd_sys_content_t /var/www/html/westos.html | ## # 临时修改安全上下文, 重启后失效 |
(4) | semanage fcontext -l | ## 查看系统默认的安全上下文信息 |
(5) | http://localhost/westos.html | ## 发现可以访问 |
1.5测试 4:selinux为强制状态,访问成功(永久修改http) | ||
(1) | mkdir /johnsonlee | ##创建目录 |
(2) | touch /johnsonlee/johnson.html | ## 创建文件 |
(3) | vim /etc/vsftpd/vsftpd.conf | ## 查看配置文件 |
(4)(vim) | anon_root=/johnsonlee | ## 修改文件夹 |
(5) | systemctl restart vsftpd.service | ## 重启服务 |
(6) | semanage fcontext -l |grep /var/www/html | ## ##列出内核安全上下文列表内容 |
(7) | semanage fcontext -l |grep /johnsonlee | ## ##列出内核安全上下文列表内容 |
(8) | semanage fcontext -a -t httpd_sys_content_t "/johnsonlee(/.*)? " | ##列出内核安全上下文列表内容 |
(9) | chcon -t httpd_sys_content_t /johnsonlee -R | ## 修改标签时需加-R(递归) |
(10) | restorecon -FvvR /johnsonlee | ## # 刷新目录, 重新读取安全上下文 |
(11) | ls -Zd /johnsonlee/ | ##查看文件信息类型 |
(12) | date +%F > /johnsonlee/johnson.html | # date写入 |
(13) | http://localhost/johnson.html | ## 发现文件存在 |
1.6测试 5:selinux为强制状态,访问成功(临时修改lftp) | ||
(1) | setenforce 1 | ## selinux 设置为强制 |
(2) | touch /mnt/linux | ##创建文件 |
(3) | ls -Z /mnt/linux | ##查看文件信息类型 |
(4) | chcon -t public_content_t /mnt/linux | ## 临时修改安全上下文, 重启后失效 |
(4) | mv /mnt/linux /var/ftp/pub/ | ## 移动文件 |
(5) | lftp 172.25.19.251 | ## 发现文件存在 |
1.7测试 6:selinux为强制状态,访问成功(永久修改lftp) | ||
(1) | mkdir /ftpdir | ##创建目录 |
(2) | touch /ftpdir/file{1…2} | ## 创建文件 |
(3) | vim /etc/vsftpd/vsftpd.conf | ## 查看配置文件 |
(4)(vim) | anon_root=/ftpdir | ## 修改文件夹 |
(5) | systemctl restart vsftpd.service | ## 重启服务 |
(6) | semanage fcontext -l |grep /var/ftp | ## ##列出内核安全上下文列表内容 |
(7) | semanage fcontext -l |grep /ftpdir | ## ##列出内核安全上下文列表内容 |
(8) | semanage fcontext -a -t public_content_t "/ftpdir(/.*)? " | ##列出内核安全上下文列表内容 |
(9) | chcon -t public_content_t /ftpdir/ -R | ## 修改标签时需加-R(递归) |
(10) | restorecon -FvvR /ftpdir/ | ## # 刷新目录, 重新读取安全上下文 |
(11) | ls -Zd /ftpdir/ | ##查看文件信息类型 |
(12) | lftp 172.25.19.251 | ## 发现文件存在 |
2.selinux服务开关控制 | ||
(2.1) 默认开启selinux,上传失败 | ## | |
(1) | setenforce 1 | ## 开启服务 |
(2) | vim /etc/vsftpd/vsftpd.conf | ## 打开ftp配置文件 |
(3)(vim) | anon_upload_enable=YES | ## 允许匿名上传 |
(4) | systemctl restart vsftpd | ## 重启服务 |
(5)测试 | lftp 172.25.19.251 | ## 上传失败 |
(2.2) 开启selinux相关服务,上传成功 | ||
(1) | getsebool -a | grep ftpd (服务名称) |
(2) | setsebool -P ftpd_anon_write on|off | ##开启匿名写权限 |
(3) | setsebool -P ftpd_full_access on|off | ## 开启用户登录 |
(4)测试 | lftp 172.25.19.251 | ## 上传成功 |
3 Selinux如何管理/错误信息处理 | ||
(1) | rpm -qa | grep setroubleshoot-server |
(2) | vim /etc/httpd/conf/httpd.conf | ## 打开http配置文件 |
(3)(vim) | port 80 >>> port 8848 | ## 修改端口 |
(4) | systemctl restart httpd | ## 重启服务 ,发现报错 |
测试(5): | > /var/log/messages | ## 清空日志, Selinux的警告日志信分析之后给出的解决方案存储的位置 |
(6) | > /var/log/audit/audit.log | ## Selinux的警告日志信息文件: /var/log/audit/audit.log |
(7) | less /var/log/messages | ##查看修改信息 ,按照提示进行修改 |
(8) | systemctl restart httpd | ## 重启服务 ,发现正常 |
(9) | http://172.25.19.251:8848 | ## 查看是否配置成功 |
3.selinux的常见操作结果
3.1.selinux服务共享文件安全上下文的管理
RESULT1:selinux为强制状态,访问失败(httpd)
RESUTLT 2:selinux为permissive状态,访问成功(httpd)
RESUTLT 3:selinux为强制状态,访问成功(临时修改httpd)
RESUTLT 4:selinux为强制状态,访问成功(永久修改httpd)
RESUTLT 5:selinux为强制状态,访问成功(临时修改lftp)
RESUTLT 6:selinux为强制状态,访问成功(永久修改lftp)