对超级管理员有效
安全加强型linux
自主访问体制 :又大变小
user group other
\ | /
file
/ | \
r w x
强制访问体制 最小权限:由小该大
打开SELINUX
sestatus 查看slinux状态
vim/etc/sysconfig/selinux
enforcing - SELinux security policy is enforced.强制限制
4 # permissive - SELinux prints warnings instead of enforcing. 警告但不限制
5 # disabled - SELinux is fully disabled.
SELINUXTYPE=targeted 定义使用的SELINUX 保护大多数的网络服务
1改为 permissive
2.配置
sealert -a /var/log/audit/audit.log 显示所有的selinux报错
布尔直boolean 0关1开
安全上下文
man -k(模糊查询)ftp|grep selinux
ls -Zd /var/ftp 安全上下文
system_u:object_r:public_content_t:s0
身份 角色 类型
设置semanage fcontext -a -t public_content_rw_t "/var/ftp/incoming(/.*)?"
恢复 restorecon -R -v /var/ftp/incoming
setenforce 0关只警告不阻止1开启 警告1警告和阻止
setenforce permissive <===> setenforce 0 0关只警告不阻止
setenforce enforcing <===> setenforce 1 1警告并且阻止
1、开启FTP服务,并用普通系统帐号直接登录FTP服务器,selinux会不允许访问,上传。
如何配置selinux来解决?
思路:
A、看日志
1、tail /var/log/messages ---
sealert -l xxxxxxxxxxxxxxxxxxxxx 看指定ID的警告提示消息
2、sealert -a /var/log/audit/audit.log 看所有的ID的警告消息
3、有一个程序会自动弹出提示(右上角的五角星SelinuxTroubleshooter程序),此程序要想正常的运行,必须ps aux | grep setroubleshootd 进程存在(]# setroubleshootd 执行此命令便可)
B、日志中会提示如何配置selinux,以便开放相应的权限
最好自行查询帮助来解决问题
[root@ mnt]# man ftpd_selinux
[root@ mnt]# man httpd_selinux
[root@ mnt]# man samba_selinux
[root@ mnt]# man nfs_selinux
[root@ mnt]# man -k ftp | grep selinux
ftpd_selinux (8) - Security-Enhanced Linux policy for ftp daemons
[root@ mnt]# man 8 ftpd_selinux
[root@ mnt]# man -k http | grep selinux
httpd_selinux (8) - Security Enhanced Linux Policy for the httpd daemon
setenforce permissive <===> setenforce 0
setenforce enforcing <===> setenforce 1
sestatus
目的:设置匿名用户可以上传下载FTP 192.168.0.28
1、设置selinux为只警告,不阻止状态
setenforce 0
2、开始配置vsftpd
vim /etc/vsftpd/vsftpd.conf
anon_root=/ftp /ftp共享目录
anon_upload_enable=YES //允许下载
anon_mkdir_write_enable=YES //允许上传
anon_other_write_enable=YES //允许其他人上传
---
mkdir -p /ftp/public
chown ftp /ftp/public
chmod u=rwx /ftp/public
---
service vsftpd restart
----
3、客户端匿名访问,确实可以上传,说明 FTP配置文件权限设置正确,/ftp/public目录权限设置正确
4、把selinux设置为enforcing状态。
需要配置selinux允许匿名写:
man 8 ftpd_selinux
a.根据Manual来修改匿名共享根目录的file type(ls -Z)
chcon -t public_content_rw_t /ftp/public
如果不改,默认第三段是default_t
b.根据manual来修改布尔值,开启如下
setsebool -P allow_ftpd_anon_write on 或者
setsebool -P allow_ftpd_anon_write=1
作业1:
1 请问selinux开启的情况下,apache的默认页面是否可以查看 ,ftp的匿名访问是否可以访问
2 请在selinux开启的情况下,配置apache的别名
3 请在selinux开启的情况下,配置samba通过用户sambauser1访问家目录和访问指定的共享目录
4 quota配额
5 ext3 的acl属性 setfacl /getfacl
6 apache+ldap验证
SELINUX例子!
[root@localhost files]# system-config-selinux
[root@localhost files]# pwd
/etc/selinux/targeted/contexts/files
[root@localhost files]# grep /var/www file_contexts
在selinux开启的情况下,策略为targeted时,配置网络服务时的思路如下
先setenforce 0 ----- permissive
然后配置服务
接下来找客户端测试服务正常
setenforce 1 ----- enforcing
然后客户端访问,看是否受限----看日志/帮助---根据提示解决限制问题
解决问题的方法有三种:
1、看日志
得安装
[root@localhost www]# yum -y install setroubleshoot-server
并启动此程序
[root@localhost www]# setroubleshootd
a.tail /var/log/messages
Dec 5 18:29:32 localhost setroubleshoot: SELinux is preventing access to files with the default label, default_t. For complete SELinux messages. run sealert -l a098bbc4-3b76-44d7-a717-1181a0c7253d
b.sealert -a /var/log/audit/audit.log
c.点击 [系统]---[管理]---[SElinux Management]--五角星图标
2、看manual
man httpd_selinux
man ftpd_selinux
man samba_selinux
3、参照法
1、apache
apache别名
查看日志法:
sealert -a /var/log/audit/audit.log
查看manual法:
[root@localhost www]# man httpd_selinux
[root@localhost www]# chcon -R -t httpd_sys_content_t /www
参照法:
[root@localhost html]# chcon -R --reference /var/www/html/index.html /www/
[root@localhost html]# ls -Zd /www/
drwxr-xr-x root root root:object_r:httpd_sys_content_t /www/
2、samba配置家目录共享和指定目录共享,并启动服务
[root@localhost html]# sestatus
[root@localhost html]# setenforce 0
[root@localhost html]# yum -y install samba samba-common samba-client
[root@localhost html]# vim /etc/samba/smb.conf
[homes] 此段关于家目录的共享,默认存在,不用配置
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[myshare] 添加一段关于指定目录的共享,并且要求设置为用户sambauser1,sambauser2可读可写
comment = test for selinux
path = /samba
writable = yes
browseable = yes
valid users = sambauser1 sambauser2
[root@localhost home]# mkdir /samba
[root@localhost home]# useradd -s /sbin/nologin sambauser1
[root@localhost home]# useradd -s /sbin/nologin sambauser2
[root@localhost home]# smbpasswd -a sambauser1
New SMB password:
Retype new SMB password:
[root@localhost Server]# smbpasswd -a sambauser2
New SMB password:
Retype new SMB password:
Added user sambauser2.
[root@localhost samba]# setfacl -m u:sambauser1:rwx /samba/
[root@localhost samba]# setfacl -m u:sambauser2:rwx /samba/
找客户端验证samba的家目录共享 和 指定目录共享
[root@localhost Server]# smbclient -L 192.168.0.5 -U sambauser1
[root@localhost Server]# smbclient -L 192.168.0.5
[root@localhost /]# mount -t cifs //192.168.0.5/homes /mnt -o user=sambauser2,pass=123 说明家目录共享实现成功
[root@localhost /]# mount.cifs //192.168.0.5/myshare /net -o user=sambauser1,pass=1234 说明自定义共享实现成功
接下来!!!!!
开启selinux为enforcing状态
[root@localhost samba]# setenforce 1
]# chcon -t samba_share_t /samba
]# setsebool -P samba_enable_home_dirs=1
]# setsebool -P samba_export_all_rw=1
]# setsebool -P samba_export_all_ro=1
[root@localhost html]# restorecon -vR a
restorecon reset /var/www/html/a context root:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
那么倒底哪种TYPE值应该被设置呢?
提供了两大种帮助 :
man
man -k http | grep selinux
man -k ftp | grep selinux
selinux的故障诊断器
图形的
[root@ ~]# setroubleshootd 直接启动这个程序,会有一个黄色的一角星,在selinux阻止某些事件时,自动弹出帮助 !
[root@ ~]# ps uax | grep setroubleshootd
文本的日志
]# sealert -a /var/log/audit/audit.log
其实/var/log/messages文件中也会有帮助
------
setroubleshoot-server-2.0.5-3.el5.noarch.rpm
----
apache定义别名:
man -k httpd| grep selinux
man httpd_selinux
The following file contexts types are
defined for httpd:
httpd_sys_content_t
- Set files with httpd_sys_con-
tent_t for content which is avail-
able from all httpd scripts and
the daemon.
chcon –Rt httpd_sys_content_t /newdocumentroot
-t选项指出文件的类型应该改变而安全上下文的剩余部分保持不动。
chcon --reference /var/www/html /newdocumentroot
---------------------------------------
cd /etc/selinux/targeted/contexts
grep –Rh httpd_sys_content_t .
SELINUX配置的时候,一般涉及到
1安全上下文中的 type字段 ,通过chcon
2配置相应的布尔值,来表示开启或关闭某种功能
~~~~~~~~~~~~~~~~~~~~~~~~
setsebool -P ftp_home_dir on
[root@stu254 contexts]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off
[root@stu254 contexts]# setsebool -P ftp_home_dir on
[root@stu254 ~]# restorecon /install.log
[root@stu254 ~]# fixfiles relabel
=========回顾=========
[root@ ftp]# ls /etc/sysconfig/selinux
[root@ ftp]# setenforce 0
[root@ ftp]# setenforce 1
[root@ ftp]# ls /selinux/booleans/
[root@ user1]# ls /selinux/booleans/
[root@ user1]# getsebool -a | grep ftp_home_dir
ftp_home_dir --> on
[root@ ftp]# ls /etc/selinux/targeted/contexts/
[root@ ftp]# id -Z |ps auxZ | ls -Z
[root@ ftp]# man -k samba | grep selinux
samba_selinux (8) - Security Enhanced Linux Policy for Samba
[root@ ftp]# man -k nfs | grep selinux
nfs_selinux (8) - Security Enhanced Linux Policy for NFS
[root@ ftp]# tail /var/log/messages
[root@ ftp]# sealert -a /var/log/audit/audit.log
[root@ ftp]# setroubleshootd
[root@ ftp]# setroubleshootder----故障浏览器
dhcp dns ftp nfs samba postfix apache squid mysql
extmail
-------------------------
[root@ ftp]# chcon -R --reference=/var/www/html/index.html /www2
恢复上下文
1 restorecon -R dir/file
restorecon -RF dir/file
2 [root@ home]# touch /.autorelabel
[root@ home]# reboot
++++++++++++++++++++++++
1、配置HTTPD的别名
chcon -R -t httpd_sys_content_t /dir
2、配置FTP允许系统用户访问
在selinux为enforcing的模式下,FTP的匿名访问及下载是允许的!
如果需要系统用户通过FTP读写家目录,则需要配置SELINUX开放权限
方法:
读日志获取信息或者查看手册 :
tail /var/log/messages ---> sealert -l xxxxxxxxxxxxxxxxxxxxxxxx
man ftpd_selinux
根据提示配置如下布尔值:
setsebool -P ftp_home_dir=1 或者
setsebool -P ftp_home_dir on
getsebool -a 查看所有布尔值
3、配置FTP允许匿名上传下载 /public/ftp目录
[root@host68 ~]# mkdir -p /public/ftp
[root@host68 ~]# chown ftp.ftp /public/ftp/ 允许ftp用户写目录
[root@host68 ~]# ls -ld /public/ftp/
drwxr-xr-x 2 ftp ftp 4096 02-12 14:15 /public/ftp/
[root@host68 ~]# vim /etc/vsftpd/vsftpd.conf
anon_root=/public 指定匿名访问根位置
anon_upload_enable=YES 允许匿名上传
anon_mkdir_write_enable=YES 允许匿名的创建
anon_other_write_enable=YES 允许匿名的删除
[root@host68 ~]# service vsftpd restart
[root@host68 ~]# chcon -R -t public_content_rw_t /public/ftp/
[root@host68 ~]# setsebool -P allow_ftpd_anon_write on
4、配置NFS实现共享 /nfspublic目录可读可写
[root@host68 ~]# mkdir /nfspublic
[root@host68 ~]# chmod o+w /nfspublic/
[root@host68 ~]# ls
drwxr-xrwx 2 root root 4096 02-12 14:55 /nfspublic/
[root@host68 ~]# tail -n 1 /etc/exports
/nfspublic *(rw)
[root@host68 ~]# service portmap restart
[root@host68 ~]# service nfs restart
客户端访问:
[root@localhost /]# showmount -e 192.168.1.68
[root@localhost /]# mount -t nfs 192.168.1.68:/nfspublic /mnt
[root@localhost /]# mkdir /mnt/cba
man nfs_selinux得知如下的帮助 :
If you want to share files read/write you must
set the nfs_export_all_rw boolean.
setsebool -P nfs_export_all_ro=1
chcon -R -t public_content_rw_t /nfspublic/
5、配置SAMBA共享目录/smbpublic允许指定用户u1可读可写
并允许u1用户可通过samba服务访问自己的家目录
[root@host68 ~]# mkdir /smbpublic
[root@host68 ~]# useradd -s /sbin/nologin u1
[root@host68 ~]# chmod o+w /smbpublic/
[root@host68 ~]# vim /etc/samba/smb.conf
290 [public]
291 comment = Public Stuff 描述
292 path = /smbpublic 共享路径
293 public = yes
294 valid users = u1 允许的用户
295 writable = yes 可写
[root@host68 ~]# smbpasswd -a u1
New SMB password:
Retype new SMB password:
[root@host68 ~]# service smb restart
[root@localhost /]# smbclient -L 192.168.1.68 -U u1
Password: 输入正确的密码
Domain=[HOST68] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
Sharename Type Comment
--------- ---- -------
public Disk Public Stuff
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
u1 Disk Home Directories 家目录共享不用定义,配置文件中已经有配置共享
Domain=[HOST68] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
Server Comment
--------- -------
Workgroup Master
--------- -------
MYGROUP
在selinux状态为permissive的情况下,客户访问共享:
[root@localhost /]# mount -t cifs //192.168.1.68/public /mnt -o user=u1,pass=u1
[root@localhost /]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# mkdir a
[root@localhost mnt]# ls
a
[root@localhost mnt]# cd ..
[root@localhost /]# umount /mnt
[root@localhost /]# mount -t cifs //192.168.1.68/u1 /mnt -o user=u1
Password:
接下来,把selinux设置为enforcing状态,发现家目录的共享不能挂载,于是看日志或者man
解决方法:
[root@host68 ~]# setsebool -P samba_enable_home_dirs=1
指定的共享smbpublic目录也不可访问的,于是查手册 man samba_selinux
解决方法如下:
[root@host68 ~]# chcon -t samba_share_t /smbpublic/ -R
用户,文件,进程都有上下文
id - Z
ls - Z
ps -Z
身份 角色 类型
root system_r(用户) xxxxx
system_u(系统文件) object_r (文件)
user_u
selinux 描述了一种进程对文件的操作权限。
selinux在策略中定义 某些上下文的进程 要操作的文件的上下文 必须所指定的字符。指定的字符如何得知呢?通过MAN手册中的帮助来得知。不需要死记。
restorecon -v filename
- R 递归
恢复上下文
ftpd_selinux(8), named_selinux(8), rsync_selinux(8), httpd_selinux(8),
nfs_selinux(8), samba_selinux(8), nis_selinux(8), ypbind_selinux(8)
相关推荐
SELinux 手册 SELinux(Security-Enhanced Linux)是一种基于 Linux 操作系统的访问控制机制,旨在提高系统的安全性和稳定性。它通过 Mandatory Access Control(强制访问控制)机制来控制进程和文件之间的交互,以...
《SELinux详解》是一本深度解析安全增强的Linux(SELinux)操作系统的书籍,旨在帮助读者理解、编写、修改和管理SELinux策略,提升Linux系统的安全性。书中详细介绍了SELinux的作用、生效机制以及策略模块的编写,...
SELinux by example is the first complete, hands-on guide to using SELinux in production environments. Authored by three leading SELinux researchers and developers, it illuminates every facet of ...
**SELinux(Security-Enhanced Linux)** 是一种强制访问控制机制,由美国国家安全局(NSA)开发,用于提高Linux操作系统的安全性。它通过精细的权限管理,为系统中的每个进程、文件和其他资源分配安全上下文,实现...
**SELinux:Linux安全增强系统详解** 在深入探讨SELinux之前,我们首先需要理解它的全称:Security-Enhanced Linux,即安全增强型Linux。它是一种强制访问控制(MAC)系统,由美国国家安全局(NSA)开发,旨在提高...
标题“Lock SELinux forced mode.zip”暗示了这个压缩包与Linux系统的安全增强层(Security-Enhanced Linux,简称SELinux)有关,特别是涉及到强制模式(forced mode)的配置。在这个场景下,SELinux是一个内核模块...
[Packt Publishing] SELinux 系统管理手册 (英文版) [Packt Publishing] SELinux System Administration (E-Book) ☆ 图书概要:☆ A comprehensive guide to walk you through SELinux access controls ...
**SELinux系统详解** 安全增强型Linux(SELinux)是一种强制访问控制(MAC)系统,它增强了Linux操作系统的安全性,防止恶意软件和攻击者通过权限提升来破坏系统。SELinux的核心在于其策略,该策略定义了系统中每个...
"SELinux中文指南" SELinux(Security-Enhanced Linux)是一种强大的 Linux 安全机制,旨在提供一个灵活、可配置的安全解决方案。本文档提供了 SELinux 的详细介绍,包括语法规则、安装、配置、用户管理等方面的...
SELinux(Security-Enhanced Linux)是一种安全模块,最初由美国国家安全局(NSA)开发,后来贡献给了开源社区。它在Linux内核中提供了强制访问控制(MAC)安全策略,可以对系统中运行的所有程序和进程进行精细控制...
### SELinux详解 #### SELinux概述 SELinux(Security-Enhanced Linux)是一种为Linux内核提供的强制访问控制(MAC)安全扩展。本节将详细解释SELinux的基础知识及其架构。 - **背景**:操作系统访问控制的历史和...
SELinux(Security-Enhanced Linux)是Linux操作系统中一种强制访问控制策略的实现,它为系统提供了更高级别的安全防护。在Linux系统启动时,SELinux的初始化流程扮演着至关重要的角色,确保系统的安全策略得以正确...
SELinux Notebook 是一本关于 SELinux 的开源书籍,最初由 Richard Haines创建并捐赠给 SELinux 社区。该笔记本的目标是成为有关 SELinux 的最新、最全面的书籍,涵盖 Linux 内核组件、用户空间库和工具、策略工具链...
本文档《selinux权限配置指南.pdf》将重点讲解SELinux的基本概念、运行模式、语法格式以及权限配置的各个方面,特别是结合Android平台的SELinux(sepolicy)进行讲解,旨在帮助开发者更好地理解和配置SELinux,以...
标题中的"container-selinux-2.9-4.el7.noarch.zip"表明这是一个与Linux安全模块SELinux(Security-Enhanced Linux)相关的软件包,适用于版本为2.9的container-selinux,并且它是针对EL7(Enterprise Linux 7,通常...
`container-selinux-2.9-4.el7.noarch.rpm.zip`这个压缩包文件是与Docker相关的,它包含了一个名为`container-selinux-2.9-4.el7.noarch.rpm`的软件包,这是Docker在Red Hat Enterprise Linux 7 (RHEL 7)或其兼容...
### 在SELinux中保护进程间通信 #### 引言 随着现代计算技术的发展,系统安全变得日益重要。其中,强制访问控制(Mandatory Access Control, MAC)机制是实现安全系统的关键组成部分之一。在安全系统设计中,对...