<>什么是selinux

selinux,内核级加强型防火墙
(对文件影响,安全上下文)对文件和服务进行标签,程序标签和文件标签不一致(看不了文件)
(对服务影响) 把服务不安全的功能去掉,对程序功能进行限制,在内核上限制掉(删除不了了)
selinux有disabled、permissive、enforcing三种级别

<>如何管理selinux级别
vim /etc/sysconfig/selinux reboot ##对配置文件更改后,需要重新启动使其生效

selinux=disabled ##关闭状态
selinux=Enforcing ##开启强制状态---- 一旦违反了策略,就无法继续操作下去。
selinux=Permissive ##开启警告状态---- 即使违反了策略,也让你继续操作,但是会把违反的内容记录下来。
getenforce ##查看状态
在开启状态下可以这样切换
setenforce 1 ##设定为强制
setenforce 0 ##设定为警告

当selinux处于disabled时候,无安全上下文。文件以及服务的功能不会被限制。
[root@localhost ~]# touch /mnt/file1 #新建文件 [root@localhost ~]# mv /mnt/file1
/var/ftp/ #将其移动到公共家目录中 [root@localhost ~]# ls /var/ftp/ file1 pub
[root@localhost ~]# lftp 172.25.254.204 #使用匿名用户进行访问 lftp 172.25.254.204:~> ls
#可以看到所有存在的文件,没有安全上下文的限制 -rw-r--r-- 1 0 0 0 Apr 19 01:33 file1 drwxr-xr-x 2 0 0
31 Mar 07 2014 pub lftp 172.25.254.204:/> quit [root@localhost ~]# ls -Z
/var/ftp/ #在disabled状态下没有安全上下文 显示? -rw-r--r-- root root ? file1 drwxr-xr-x root
root ? pub [root@localhost ~]# lftp 172.25.254.204 -u student #使用本地用户进行访问
Password: lftp student@172.25.254.204:~> ls -rw-r--r-- 1 1000 1000 2005 Apr 18
07:10 passwd lftp student@172.25.254.204:~> put /etc/group #可以进行正常的上传功能 850
bytes transferred lftp student@172.25.254.204:~> ls #成功上传文件 -rw-r--r-- 1 1000
1000 850 Apr 19 01:35 group -rw-r--r-- 1 1000 1000 2005 Apr 18 07:10 passwd
lftp student@172.25.254.204:~> quit
当selinux处于Enforcing时候,存在安全上下文。文件以及服务的功能被限制。
[root@localhost ~]# vim /etc/sysconfig/selinux [root@localhost ~]# reboot
#在配置文件中修改selinux状态为Enforcing [root@localhost ~]# getenforce # 查看selinux状态
Enforcing [root@localhost ~]# ls -Z /var/ftp/ #查看目录中内容的安全上下文 -rw-r--r--. root
root system_u:object_r:public_content_t:s0 file1 drwxr-xr-x. root root
system_u:object_r:public_content_t:s0 pub [root@localhost ~]# lftp
172.25.254.204 -u student 使用本地用户进行访问 Password: lftp student@172.25.254.204:~>
ls -rw-r--r-- 1 1000 1000 2005 Apr 18 07:10 passwd lftp
student@172.25.254.204:~> put /etc/group put: Access failed: 553 Could not
create file. (group) #无法进行上传功能,功能被限制。 lftp student@172.25.254.204:~> quit
[root@localhost ~]# touch /mnt/file2 [root@localhost ~]# mv /mnt/file2
/var/ftp/ #再次创建新文件移动到公共家目录中 [root@localhost ~]# ls /var/ftp/ file1 file2 pub
#该目录中确实存在该文件 [root@localhost ~]# lftp 172.25.254.204 lftp 172.25.254.204:~> ls
#但是连接后无法显示查看该file2文件 -rw-r--r-- 1 0 0 0 Apr 19 01:33 file1 drwxr-xr-x 2 0 0 31
Mar 07 2014 pub lftp 172.25.254.204:/> quit [root@localhost ~]# ls -Z /var/ftp/
#查看文件的安全上下文 -rw-r--r--. root root system_u:object_r:public_content_t:s0 file1
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 file2 #其中file2的安全上下文不适合
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
<>如何更改文件安全上下文

(1)定义
安全上下文是一个简单的、一致的访问控制属性,主要体现在以下两点:
a.对文件:限制文件访问。文件必须拥有相匹配的安全上下文才能being识别访问。
b.对服务:限制认为不安全的服务功能设置开关。 开关默认关闭,需要时可以打开。
(2)查看
ls -Z ##检查文件、目录的安全上下文;
ps -Z ##检查进程的安全上下文;
mv:安全上下文则不变;
cp:会重新生成安全上下文。


临时更改
chcon -t 安全上下文 文件
chcon -t public_content_t /publicftp -R

关掉内核火墙重启,打开内核火墙重启后 /publicftp的安全上下文还原
semanage fcontext -l | grep /publicftp ##内核上下文安全列表
发现没有 所以会被还原

永久性更改
即用命令给内核上下文安全列表加目录
semanage fcontext -l ##列出内核安全上下文列表内容
semanage fcontext -a -t public_content_t ‘/publicftp(/.*)?’
restorecon -RvvF /publicftp/ ##R vv显示 F刷新
semanage fcontext -a -t public_content_t "/var/lala(/.*)?"
#永久更改目录的安区上下文;(/.*)?表示目录本身以及已经存在的文件和将来新建的文件。 restorecon -R /var/lala/ #
更该完之后进行扫描 使得更改生效。 semanage fcontext -l |grep /var/ftp #查看目录/var/ftp的安全上下文设置情况。
在开启状态下,匿名用户怎样才能上传(vstp的配置文件ok的情况下)
改安全上下文
ls -Zd /var/ftp/pub
drwxr-xr-x. root root
system_u:object_r:public_content_t:s0 /var/ftp/pub
##不能写,SELINUX的文件是只读的,需要加写的权限
chcon -t public_content_rw_t /var/ftp/pub ##添加写

<>如何控制selinux对服务功能的开关

getsebool -a | grep 服务名称
getsebool -a | grep ftp
setsebool -P 功能bool值 on|off ##P永久开启功能
setsebool -P ftpd_anon_write on
[root@localhost ~]# setsebool -P ftp_home_dir 1 ##设置bool值为1;-P ##永久开启
[root@localhost ~]# getsebool -a | grep ftp ##查看ftp的bool值 ftp_home_dir --> on
##bool值为1则设置成功,修改之后本地用户的上传与删除功能可以正常使用 ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off ftpd_connect_db --> off ftpd_full_access
--> off ftpd_use_cifs --> off ftpd_use_fusefs --> off ftpd_use_nfs --> off
ftpd_use_passive_mode --> off httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off sftpd_anon_write --> off sftpd_enable_homedirs
--> off sftpd_full_access --> off sftpd_write_ssh_home --> off tftp_anon_write
--> off tftp_home_dir --> off [root@localhost ~]# lftp 172.25.4.104 -u student
Password: lftp student@172.25.4.104:~> ls -rw-r--r-- 1 1000 1000 2005 Apr 21
16:11 passwd lftp student@172.25.4.104:~> put /etc/group 850 bytes transferred
lftp student@172.25.4.104:~> ls -rw-r--r-- 1 1000 1000 850 Apr 21 16:22 group
-rw-r--r-- 1 1000 1000 2005 Apr 21 16:11 passwd ##本的用户上传成功 lftp
student@172.25.4.104:~> rm group ##本地用户删除成功 rm ok, `group' removed lftp
student@172.25.4.104:~> ls -rw-r--r-- 1 1000 1000 2005 Apr 21 16:11 passwd lftp
student@172.25.4.104:~> exit
<>监控selinux的错误信息

setroubleshoot-server.x86_64 #该插件可以提供selinux出现的问题解决方案
/var/log/audit/audit.log 记录产生问题的日志
/var/log/messages 提供出现的问题以及解决方案



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信