linux中内核级加强型火墙的管理
前言
一、selinux的功能
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。
主要作用:最大限制地减小系统中服务进程可访问的资源(最小权限原则)。
观察现象
(1)当selinux未开启:
安装vsftpd服务,编辑vsftp服务的配置文件,允许匿名用户访问,在/mnt中建立文件将该文件移动到/var/ftp下后可以被vsftpd服务访问到。
查看vsftpd服务的默认共享目录及该服务程序的安全上下文时,显示?
ls -Z /var/ftp
ps auxZ | grep vsftpd显示
(2)当selinux开启时:
在/mnt中建立文件被移动到/var/ftp下不可以被vsftpd服务访问,匿名用户可以通过设置后仍然不能上传文件。
对于文件的影响:
当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载,标签内记录程序和文件的安全上下文(context)
对于程序功能的影响:
当selinux开启会对程序的功能加载开启,并设定此开关的状态为关闭。当关闭此功能时需要手动开启功能开关,此开关叫做sebool。
二、Selinux的三种状态及管理
vim /etc/selinux/config
SELINUX=disabled #selinux关闭
SELINUX=enforcing #selinux开机设定为强制状态此状态为selinux开启
SELINUX=permissive #selinux开机设定为警告状态此状态为selinux开启
注意!
"selinux开启或关闭需要重启系统"
enforcing:不符合条件一定不能被允许,并会收到警告信息。
permissive:不符合条件被允许,并会收到警告信息。
selinux状态的查看:
getenforce
selinux开启后强制和警告级别的转换
setenforce 0 ##警告
setenforce 1 ##强制
selinux日志位置:
/var/log/audit/audit.log
三、Selinux的安全上下文
安全上下文:
所有的操作系统访问控制都是主体和客体的相关访问控制属性,在SELINUX,访问控制属性称为安全上下文,安全上下文是一个简单的、一致的访问控制属性,所有客体(文件,进程间通信,通信管道,套接字,网络主机等)和主体(进程)有一个和客体和他们相关的单一安全上下文,一个进程的类型通常称为域,域和域类型都一样,即都是安全上下文的’TYPE’,一个安全上下文是由角色,用户和类型标识符。
文件的Security Contex规则如下:
rpm包安装的:会根据rpm包内记录来生成安全上下文;
手动创建的文件:会根据policy中规定的来设置安全上下文;
cp:会重新生成安全上下文;
mv:安全上下文则不变。
1.查看
ls -Z ##查看文件的安全上下文
ls -Zd ##查看目录的安全上下文
ps auxZ ##查看进程的安全上下文
2.修改安全上下文
临时修改(此方式更改的安全上下文在selinux重启后会还原):
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1
chcon -Rt public_content_t /westosdir #修改目录及目录中的所有子文件的安全上下文
永久修改(如果需要特殊指定安全上下文需要修改内核安全上下文列表):
semanage fcontext -l ##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?' ###添加内核级安全上下文列表, (/.*)?'为固定搭配使目录及目录下的文件的安全上下文保持一致,必须使用单引号因为双引号无法转译?。
restorecon -RvvF /westosdir/ ##恢复文件的属性及恢复文件的安全上下文(-R递归 -F指定文件 -V显示过程)
touch /.autorelabel ##重启系统时selinux初始化文件标签开关文件
四、SEBOOL
当selinux开启会对程序的功能加载开启,并设定此开关的状态为关闭。当关闭此功能时需要手动开启功能开关,此开关叫sebool。
getsebool -a ##查看程序功能的开关功能,现实服务的bool值
setsebool -P ftpd_anon_write on/off #更改程序功能的开关状态
selinux开启状态下,开启vsftpd服务,访问ftp,上传/etc/passwd文件,553报错。更改默认共享目录/var/ftp权限755 pub权限777,权限设置完还是不能上传,553报错。
此时在内核安全上下文列表中设置/var/ftp/pub读写权限,restorecon刷新信息,还要修改内核安全上下文中ftp允许匿名用户的功能开关的布尔值为真。
五、SEPORT
当selinux开启时内核会限制程序.服务使用端口号的范围,我们可以通过以下方式修改端口。
1.服务文件修改端口信息
semanage port -l | grep ssh ##查看程序使用的端口
修改httpd服务配置文件/etc/httpd/conf/httpd.conf中端口为2020,服务重启失败,原因是selinux限制了httpd服务使用端口的范围,在selinux更改为警告模式,httpd服务可以重启。
2.内核安全上下文列表中添加服务端口
semanage port -a/-d -t ssh_port_t -p tcp 1111 ##在内核安全上下文列表中添加/删除服务端口
六、SETROUBLE
setroubleshoot是selinux的排错软件工具,可以采集selinux日志/var/log/audit/audit.log中的警告信息并分析得到解决方案存放到/var/log/messages中。
setroubleshoot-server ##此软件功能是采集警告信息并分析得到解决方案存放到message中
/var/log/audit/audit.log ##selinux警告信息
/var/log/messages ##selinux问题解决方案
实验步骤:
安装setroubleshoot软件,在/mnt/下建立文件,移动至/var/ftp,匿名用户不能访问到该文件,在/var/log/audit/audit.log可以查看相应的警告信息,/var/log/messages 可以查看解决方案。