内核级加强型火墙selinux
1.设置环境
2.加强型火墙的开启与关闭
- vim /etc/sysconfig /selinux disabled 关闭 enforcing 开启 Permissive 暂时允许,警告模式
- ps axZ | grep vsftpd ##查看安全上下文进程
- ls -Z /var/ftp ##查看ftp下文件安全上下文
- reboot ##修改配置文件后需要重启,因为selinux是内核级别的文件
- 重启之后有点慢,因为他需要重新制定安全规则
2.1 关闭时候的状态
2.2 开启后操作的状态
2.3 selinux对于文件和程序功能的影响
- selinux对于文件的影响
- 当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
- 标签内记录程序和文件的安全上下文(context)
- 如果标签不配套,这个文件就会被禁止,程序根本看不到这个文件
- 就相当于美国护照跑去法国是不能用的滴!!!
- selinux对于程序功能的影响
- 当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭
- 当需要此功能时需要手动开启功能开关
- 此开关叫做sebool
-
对于文件,特定安全上下文的程序只能访问特定安全上下文的文件
-
对于程序功能,通过sebool开关可以设定程序功能是否需要开或者关
3. selinux的基本设定
- vim /etc/sysconfig/selinux ##selinux开关,更改设置必须重启
- getenforce ##查看selinux状态
- enforcing 强制模式 Permission 警告状态但不会被拒绝 disabled 不管你
- setenforce 0 ##只是调整为警告模式
- /var/log/audit/audit.log ##selinux日志位置
4. selinux的安全上下文
4.1 查看
- ls -Z ##查看文件的安全上下文
- ls -Zd ##查看目录的安全上下文
- ps axZ | grep ftp ##查看进程的安全上下文
4.2 修改
4.2.1 临时修改:此方式在selinux重启后会还原
- chcon -t public_content_t 文件名 ##修改i安全上下文,t指定安全上下文模式
- chcon -Rt public_content_t 文件夹名 ##修改目录以及所有目录下的文件的安全上下文
- 但是重启后会还原成原来的安全上下文
4.2.2 永久修改
- 如果需要特殊指定安全上下文需要修改内核安全上下文列表
- mkdir /westos touch /westosdir/westosfile{1..5} ##建立实验环境,创建1个文件夹并写入5个文件
- semanage fcontext -l | grep /var/ftp ##查看/var/ftp文件夹的安全上下文列表
- semanage fcontext -a -t public_content_t "/westosdir(/.*)?" ##给westosdir文件夹和内部文件都设置安全上下文
- semanage fcontext -a -t public_content_rw_t "/westosdir(/.*)?" 设置为读写模式的安全上下文
- semanage fcontext -m -t public_content_rw_t "/westosdir(/.*)?" 提示安全上下文已经被定以,使用-m 修改
- 上述命令-a 增加 -t指定安全上下文 (/.*)? 表示westosdir文件夹和下面所有文件,因为有特殊符号,所以加引号
- restorecon -RvvF /westosdir ##刷新selinux,完成后安全上下文发生变化
- vim /etc/sysconfig/selinux ##selinux关掉在开一遍也可以刷新安全上下文列表
- touch /.autorelabel reboot ##重启系统时selinux初始化文件标签开关文件
- enforcing 下建立这个文件,然后重启相当于重新建立selinux规则。
5. sebool的设定
- getsebool -a ##显示服务的bool值
- setsebool -P ftpd_anon_write on ##更改sebool设定,on或1为允许,off或0为不允许
6. selinux的排错
- > /var/log/messages ##清空日志
- > /var/log/audit/audit.log ##清空selinux日志
- rm -fr /var/ftp/westos* ##只留下pub文件夹,这三步是为了保证实验环境纯净
- 实验环境
- touch /mnt/file
- mv /mnt/file /var/ftp
- ll /var/ftp
- ll -Z /var/ftp
- lftp 192.168.1.110 ##查看不到file文件
- 查看关于selinux 的日志
- cat /var/log/audit/audit.log ##selinux日志,但是不提供解决方案
- cat /var/log/messages ##可以提供解决方案
- rpm -qa | grep setrouble ##系统提供的slinux排错软件,解决方案放到了/var/log/messages里
- ##卸载之后/var/log/messages不提供解决方案
- dnf install setroubleshoot-server -y ##安装排错软件
7. setport的设定
- semanage -l | grep http
- semanage port -a -t http_port_t -p tcp 6666 添加端口
- semanage port -d -t http_port_t -p tcp 6666 删除端口