10、访问控制列表(ACL

标准的linux文件权限可以满足绝大多数情况的要求,但它也有局限。限制访问文件的权限仅限授予文件的所有者,单组成员或其他任何人,进程可能不适合成为文件所属组成员,授予所有人权限是不现实的做法。

ACL允许向文件分配细化权限,除标准文件所有者组所有者和其他文件权限外,还可以向指定用户或指定组,以及UIDGUID确定的用户和组授予权限,这些权限均应用相同的权限标志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   ggroup:执行权限  file    修改指定组对文件的访问权限

Setfacl  -m   o::执行权限  file                修改指定其他对文件的访问权限

Chmod  g+(-)执行权限  file                              修改maskacl掩码)值。

Defaultm::执行权限 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,例如pslscp,和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上下文。父目录的上下文会分配给新建文件,适用于vimcptouch等文件,如果文件是在其他位置创建并权限得以保留如mvcp  -a 等,那么原始selinux上下文不会发生更改。

chconrestorecon,可以更改原始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布尔值状态。