Linux中内核加强型火墙的管理
1.Selinux 的功能
selinux:内核级的加强型火墙,当selinux打开时,会给系统中的每一个文件安装标签,并且给系统中的每一个程序安装一个标签,特定标签的程序只能访问特定标签的文件。重启系统的时候,系统会读一些文件,开启的较慢,为了给系统安装标签。
1.1观察开启与未开启的影响
1当 Selinux 未开启时
1.1在/mnt 中建立文件被移动到/var/ftp 下可以被 vsftpd 服务访问匿名用户可以通过设置后上传文件
server
client
1.2当使用 ls -Z /var/ftp查看文件时显示"?"
1.3ps auxZ | grep vsftpd 时显示:
-
root 8546 0.0 0.0 26952 408 ? Ss 10:35 0:00 /usr/sbin/vsftpd
/etc/vsftpd/vsftpd.conf
cache主机:172.25.254.211
? 系统中没有进行设定
“-” 内容缺失
2当 selinux 开启:
enforcing
2.1在/mnt 中建立文件被移动到/var/ftp 下不可以被 vsftpd 服务访问匿名用户可以通过设置后仍然不能上传文件
server
client
:看不到westos文件
2.2
当使用 ls -Z /var/ftp 查看文件时显示信息
ps auxZ | grep vsftpd 时显示:
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root 6577 0.0 0.0 26952 412 ? Ss 10:50
0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
1.2selinux开启对文件及程序功能的影响
保护系统的安全性:禁止某些功能,必须匹配安全上下文之后才能被访问
对于文件的影响:
当 selinux 开启时,内核会对每个文件及每个开启的程序进行标签加载标签内记录程序和文件的安全上下文(context)
1.1中的实验中westos文集文件看不到是因为其安全上下文
对于程序功能的影响:
当 selinux 开启会对程序的功能加载开关,并设定此开关的状态为关闭当需要此功能时需要手动开启功能开关
此开关叫做 sebool
2.Selinux 的状态及管理
2.1.selinux 的开启
vim /etc/selinux/config
SELINUX=disabled #selinux 关闭
SELINUX=enforcing #selinux 开机设定为强制状态此状态为 selinux 开启7 SELINUX=permissive #selinux 开机设定为警告状态此状态为 selinux 开启"selinux 开启或关闭需要重启系统"
enforing | 不符合条件一定不能被允许,并会收到警告信息 |
---|---|
permissive | 不符合条件被允许,并会收到警告信息 |
getenforce | selinux 状态的查看 |
selinux 开启后强制和警告级别的转换 | setenforce 0 ##警告 setenforce1 ##强制 |
selinux 日志位置: | /var/log/audit/audit.log |
1.在server端selinux开启时,先清空日志,
在client 端访问server
查看日志
2.在server端selinux处于警告模式,可以访问到westos文件,按照上文进行查看日志
看到警告信息
3.Selinux 的安全上下文
3.1查看
ls -Z | 查看文件的安全上下文 |
---|---|
ls -Zd | 查看目录的安全上下文 |
ps auxZ | 查看进程的安全上下文 |
3.2.修改安全上下文
3.2.1临时修改
此方式更改的安全上下文在 selinux 重启后会还原
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1 ##修改文件的安全上下文
chcon -Rt public_content_t /westosdir # #修改目录及目录中的所有子文件的安全上下文
touch /.autorelabel
应用场景
:修改文件的安全上下文
touch /.autorelabel reboot 之后修改不生效
3.2.2永久修改安全上下文
如果需要特殊指定安全上下文需要修改内核安全上下文列表
semanage fcontext -l | grep ftp
##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?'
(/.*)? 目录下的所有会自动同步目录本身所有(安全上下文)
restorecon -RvvF /westosdir/ R:递归 F 显示过程 v:显示信息 vv:显示详细信息
selinux重启:
配置文件内容改变,且重启系统 (enforcing->disable reboot -> enforcing reboot )
touch /.autorelabel##重启系统时 selinux 初始化文件标签开关文件(此文件存在,selinux会被重启) ###·只需要一次重启
reboot
1
.查看内核安全上下文列表
2.
修改/westosdir的安全上下文
永久改变
4.SEBOOL
sebool
: 是selinux对服务功能添加的开关
getsebool -a
##现实服务的 bool 值
getsebool -a | grep ftp
:查看ftp的功能开关
setsebool -P ftpd_anon_write on
#永久开启匿名用户写的功能
selinux=enforcing状态无法上传文件,警告模式下可以,当执行图二的命令,更改sebool ,就可以上传文件
5.SEPORT
semanage port -l | grep ssh ##查看服务可以使用的端口
semanage port -a -t ssh_port_t -p tcp 1111 ##添加端口
在selinux=enforcing时,修改http服务的配置文件,将端口改为不能使用的1111,服务无法重启,但警告模式下可以重启服务
将1111端口添加到http服务可以使用的端口中,在selinux=enforcing的状态下,服务依然可以重启
6.setrouble
/var/log/audit/audit.log | selinux 警告信息 |
---|---|
/var/log/messages | selinux 问题解决方案 |
setroubleshoot-server | 此软件功能是采集警告信息并分析得到解决方案存放到message 中 |
/var/log/audit/audit.log 清空日志
/var/log/messages
==清空 /var/log/audit/audit.log /var/log/messages ==
server端建立一个文件/mnt/westos1并将其移动到/var/ftp/
访问服务端,看不到westos1文件
查看日志:找到解决方法(setroubleshoot-server 采集警告信息并分析得到解决方案存放到message 中
在服务端restorecon -V /var/ftp/westos1
westos1可以在ftp的默认发布目录中被看见