selinux
selinux(secure linux):内核级加强型火墙
selinux对文件影响==>安全上下文
selinux对软件影响==>功能开关
1.selinux对文件的影响:selinux会给与系统中的每个文件一个安全上下文(context),
同时给予每个程序一个context,若此程 序的安全上下文与文件的安全上下文不匹配,
则文件不能被系统访问,若匹配,则可以访问,而文件的安全上下文,与此文件所在的目录有关
2.getenforce 查看selinux的状态
3.setenforce 0|1临时设置selinux状态(前提是selinux必须为enforcing)
0 permissive 警告状态
1 enforcing 强制状态
4.永久设置selinux状态
vim /etc/sysconfig/selinux
SELINUX=enforcing 强制模式
SELINUX=permissive 警告模式
SELINUX=disabled 关闭模式
如图selinux的默认值是disabled
更改参数之后如下如:
注意:完成后需要reboot生效
许多处理文件的命令具有一个用于显示或设置 SELinux 上下文的选项
( 通常是 -Z ) 。例如 , ps 、 ls 、 cp 和 mkdir 都使用 -Z 选项显示或设置 SELinux 上下文
显示上下文
– ps axZ
– ps -ZC
– ls -Z
更改文件的上下文是为了lftp不能访问的文件可以访问
(文件的上下文为public_content_t:s0 lftp是可以访问的,其他上下文类型lftp是不能访问的)
将/mnt/huige1移动到/var/ftp/pub下,
huige1的安全上下文与原本在/var/ftp/pub下的文件不相同(受到selinux的限制);
可以i看到lftp是无法查看这类文件的,
即使默认普通权限是可以的
什么确定文件的初始 selinux 上下文
通常是父目录。将父目录的上下文指定给新创建的文件。
这对 vimcp 和 touch 等命令其作用 , 但是 ,
如果文件是在其他位置创建的并且保留了权限 ( 与 mv 或 cp -a 一样 ) 则还将保留 selinux 上下文
1>临时更改(但重启后,又恢复到原来的)
chcon -t 安全上下文 文件
2>永久更改
这种永久修改的方式,在系统重启之后才会生效,
或者使用restorecon -RvvF /ftphome/命令使其生效,如上图。(R v v F不是R w F)
restorecon -FvvR /ftphome 进行刷新
semanage fcontext -l | grep /ftphome '/ftphome(/.*)?'
ls -Z /ftphome/ -R
(在selinux为enforcing时)
对于程序selinux是通过getsebool程序安全开进行控制,
以vsftpd作为示例.
查看软件的服务功能开启状况:
getsebool -a | grep ftp
控制软件的服务功能开关:
setsebool -P 功能bool值 on|off
setsebool -P ftpd_anon_write on
例如:
1>在setenforce 0 警告状态下匿名用户的上传
setenforce 0
getsebool -a | grep ftp 查看ftp的功能状态
setsebool -P ftp_home_dir on 开启建立目录功能(默认OFF)
vim /etc/vsftpd/vsftpd.conf(允许匿名用户上传)
匿名用户的默认身份为ftp,下面两条命令让ftp用户可以上传
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
2>在setenforce 1 强制状态下匿名用户的上传
setenforce 1
getsebool -a | grep ftp
setsebool -P ftpd_anon_write on 开启匿名用户写的功能
chcon -t public_content_rw_t /var/ftp/pub/ 更改文件上下文,不改无法上传
ls -Zd /var/ftp/pub/ 查看修改是否生效
出现错误后,
selinux 日志被采集到 cat /var/log/audit/audit.log,
但不提供解决方案
yum install setroubleshoot-server.x86_64 软件会对采集到的日志进行处理,
将解决方案保存到/var/log/messages