10、访问控制列表(ACL)
标准的linux文件权限可以满足绝大多数情况的要求,但它也有局限。限制访问文件的权限仅限授予文件的所有者,单组成员或其他任何人,进程可能不适合成为文件所属组成员,授予所有人权限是不现实的做法。
ACL允许向文件分配细化权限,除标准文件所有者组所有者和其他文件权限外,还可以向指定用户或指定组,以及UID及GUID确定的用户和组授予权限,这些权限均应用相同的权限标志r读取w写入x执行。
文件所有者可以在单个文件或目录上使用ACL,新文件和子目录可以从父级默认ACL中继承ACL权限,与常规文件的访问规则相似,父目录访问结构需要至少设置其他执行权限,以便启用制定用户和指定组的访问权限。
文件系统挂载选项
文件系统需挂载以启用的ACL支持,XFS文件系统内置有ACL支持。
Ls -l 查看和解释acl权限
如果十个字符组成的权限字符串的末尾是”+”,即表示文件有相关联的ACL设置,对于用户,组和其他的’rwx‘标志解释如下:
用户: 显示用户acl设置,与其标准用户文件设置相同;rwx。
组:实现当前acl掩码设置,而不是组所有者设置,rw。
其他:显示其他acl设置,其与标准文件设置相同,无访问权限。
如果使用chmod更改具有acl的文件的组权限,则不会更改组所有者权限,而是更改acl掩码,如果目的是更改文件组所有者的权限需要使用setfacl -m g::perms file
getfacl 查看文件acl
Setfacl 添加,修改或删除文件和目录的标准acl
Setfacl -m u:user:执行权限 file 修改指定用户对文件的访问权限
Setfacl -m g:group:执行权限 file 修改指定组对文件的访问权限
Setfacl -m o::执行权限 file 修改指定其他对文件的访问权限
Chmod g+(-)执行权限 file 修改mask(acl掩码)值。
Default:m::执行权限 file 修改默认掩码值
Setfacl -R -m 使用递归的方式将acl应用到目录结构的文件中
Setfacl -x 删除特定的acl条目
Setfacl -b 删除文件和目录的所有acl
setfacl -m d:u:user:执行权限 file 修改默认的acl权限。
Setfacl x d:u:user:执行权限 file 删除acl默认条目。
3、启用和监控SELINUX(security enhanced linux)
Selinux 安全的基本概念
Selinux是一个额外的系统安全层,它的主要目的是防止已遭泄露的系统服务访问用户数据,大多数linux用户都熟悉标准的用户/组/其他权限安全模型。这种基于用户和组的模型成为自由决定的访问控制,selinux提供另一层安全,他基于对象并有更加复杂的规则控制,称为强制访问控制。
要允许远程web访问服务器,必须打开防火墙端口,然而恶意人员却有办法通过安全漏洞侵入系统,而且如果他们破坏web服务进程,还会取得其权限。
Selinux是确定哪些进程哪些组可以访问哪些文件,目录,和端口的一组安全规则。每个进程和端口都具有特别的安全标签,成为selinux的上下文。Selinux策略使用它来确定某个进程能否访问文件,目录和端口。除非显示规则授予访问权限,否则,在默认情况下,策略不允许有任何交互,如果没有允许规则,则不允许访问。
Selinux有多种上下文:用户,角色,类型和敏感度。目标策略(linux启用的默认策略)会根据第三个上下文来指定自己的规则。类型上下文会以_t结尾。Web类型的上下文是httpd_t,通常位于/var/www/html中的文件和目录类型的上下文是httpd_sys_content_t。通常位于/tmp和/var/tmp中的文件类型上下文是tmp_t,web服务器端口的文件类型上下文是http_port_t。
许多处理文件的命令有一个用于显示或者设置selinux上下文的选项,通常是-Z,例如ps,ls,cp,和mkdir等
Selinux模式;
强制模式:selinux主动拒绝访问尝试读取类型上下文为tmp_t的文件的web服务器。在强制模式中,selinux不仅记录而且提供保护。
许可模式:通常用于对问题进行故障排错,在此模式中既没有显示规则,selinux也会允许所有交互,而且会记录她在强制模式中拒绝的那些交互,可使用此模式来暂时允许访问selinux的限制内容,无需重新启动即可在强制模式和允许模式之间转换。
禁用模式,会完全禁用selinux,需要彻底禁用selinux,或是从禁用模式转换为强制模式,或许可模式。
最好使用许可模式,而不是彻底关闭selinux,原因之一在于即使在许可模式中,内核也将根据需要自动维护selinux文件系统标签,从而避免为了启动selinux而重启系统时,重新标记系统所带来的昂贵费用。
Getenforce 显示当前使用有效的selinux模式。
Selinux 布尔值:是更改selinux策略的开关。Selinux布尔值是可以启动或禁用的规则。安全管理员是可以使用selinux布尔值来有选择地调整策略。
更改selinux的模式:
若处于故障排错目的,可使用selinux模式暂时禁用selinux保护。
Setenforce o 暂时修改为permissive许可模式
Setenforce 1 暂时修改为enforcing强制模式
设置默认的selinux模式:
Vim /etc/selinux/config
将SELINUX=permissive 修改为SELINUX=enforcing
:wq
Systemctl reboot
更改selinux上下文
Ls -Zd 查看查看当前目录的selinux上下文
通常文件父目录的上下文决定该文件初始的selinux上下文。父目录的上下文会分配给新建文件,适用于vim,cp,touch等文件,如果文件是在其他位置创建并权限得以保留如mv,cp -a 等,那么原始selinux上下文不会发生更改。
用chcon和restorecon,可以更改原始selinux上下文。Chcon将文件的上下文更改成已指定参数的上下文,chcon -t 只用于指定上下文类型。
Restorecon -v 是更改文件和目录的首选方法,不同于chcon,它不会明确指定上下文,它使用selinux策略来确定应该是那种文件的上下文。
更改selinux布尔值
Selinux布尔值是更改selinux策略行为的开关,selinux布尔值是可以禁用或启用的规则。安全管理员可以使用selinux布尔值来有选择的调整策略。
Getsebool -a 显示selinux布尔值
Setsebool 上下文 on/off 修改selinux布尔值
Setsebool -P 上下文 on/off 修改selinuxcelue,并永久保存
Semanage boolean -l 将会显示布尔值是否为永久值,并提供简短描述。
Semanage boolean -l -C 仅列出本地修改的selinux布尔值状态。
LINUX ACL访问控制列表,SELINUX安全性基本总结
原文地址:http://10896557.blog.51cto.com/10886557/1719799