[内容] Linux SELinux 标签的设置

内容目录:

内容一:开启 SELinux 标签
1.1 修改 SELinux 配置文件
1.2 重启系统

内容二:SELinux 的常见特性
2.1 SELinux 特性一:创建的文件或目录会自动继承其父目录的 SELinux 标签
2.1.1 在 /var/www/html/ 目录下新创建 index.html 文件
2.1.2 查看 /var/www/html/ 目录的 SELinux 标签
2.1.3 查看新生成的 /var/www/html/index.html 标签
2.2 SELinux 特性二:移动文件或目录和保留属性复制文件或目录不会改变其 SELinux 标签,普通复制会改变 SELinux 标签
2.2.1 在 /tmp/ 目录下新创建 file1,file2,file3 文件
2.2.2 查看 ls -Zd /tmp/ 目录的 SELinux 标签
2.2.3 查看新创建文件的标签
2.2.4 将 /tmp/file1 复制到 /var/www/html/
2.2.5 将 /tmp/file2 移动到 /var/www/html/
2.2.6 将 /tmp/file2 复制到 /var/www/html/,并使用 -a 选项保留文件属性
2.2.7 查看这些文件的 SELinux 标签

内容三:查看某个文件或目录 SELinux 标签
3.1 查看某个文件 SELinux 标签
3.2 查看某个目录 SELinux 标签
3.3 查看某个进程 SELinux 标签

内容四:查看所有 SELinux 标签
4.1 查看所有文件和目录的 SELinux 标签
4.2 查看所有端口的 SELinux 标签
4.3 查看所有进程的 SELinux 标签

内容五:设置 SELinux 标签
5.1 设置文件和目录 SELinux 标签
5.1.1 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.1 semanage fcontext 命令的常用选项
5.1.1.2 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.2.1 使用 smanage fcontext 命令设置 SELinux 标签
5.1.1.2.2 使用 restorecon 命令修改默认上下文
5.1.2 使用 chcon 命令设置 SELinux 标签
5.2 设置端口 SELinux

具体的内容:

内容一:开启 SELinux 标签
1.1 修改 SELinux 配置文件

# vim /etc/selinux/config

将以下内容:

......
SELINUX=disabled
......

修改为:

......
SELINUX=enforcing
......

或者:

......
SELINUX=perssive
......

1.2 重启系统

# reboot

内容二:SELinux 的常见特性
2.1 SELinux 特性一:创建的文件或目录会自动继承其父目录的 SELinux 标签
2.1.1 在 /var/www/html/ 目录下新创建 index.html 文件

# echo website > /var/www/html/index.html

(补充:这里以在 /var/www/html/ 目录下生成 index.html 文件为例)

2.1.2 查看 /var/www/html/ 目录的 SELinux 标签

# ls -dZ /var/www/html/
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2.1.3 查看新生成的 /var/www/html/index.html 标签

# ls -Z /var/www/html/index.html/index.html 
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

(补充:从内容 1.1.2 和内容 1.1.3 命令的结果可以看出新生成的文件或其父目录的 SELinux 标签一致)

2.2 SELinux 特性二:移动文件或目录和保留属性复制文件或目录不会改变其 SELinux 标签,普通复制会改变 SELinux 标签
2.2.1 在 /tmp/ 目录下新创建 file1,file2,file3 文件

# touch /tmp/file{1,2,3}

2.2.2 查看 ls -Zd /tmp/ 目录的 selinux 标签

# ls -Zd /tmp/
unconfined_u:object_r:user_tmp_t:s0 /tmp/

2.2.3 查看新创建文件的标签

# ls -Z /tmp/file*
unconfined_u:object_r:user_tmp_t:s0 /tmp/file1  unconfined_u:object_r:user_tmp_t:s0 /tmp/file2
unconfined_u:object_r:user_tmp_t:s0 /tmp/file3

2.2.4 将 /tmp/file1 复制到 /var/www/html/

# cp /tmp/file1 /var/www/html/

2.2.5 将 /tmp/file2 移动到 /var/www/html/

# mv /tmp/file2 /var/www/html/

2.2.6 将 /tmp/file2 复制到 /var/www/html/,并使用 -a 选项保留文件属性

# cp -a /tmp/file3 /var/www/html/

2.2.7 查看这些文件的 SELinux 标签

# ls -Z /var/www/html/file*
unconfined_u:object_r:httpd_sys_content_t:s0 file1           unconfined_u:object_r:user_tmp_t:s0 file3
unconfined_u:object_r:user_tmp_t:s0 file2

(补充:从内容 2.2.3 和内容 2.2.7 命令的结果可以看出只有普通复制会改变 SELinux 标签 )

内容三:查看某个文件、目录或进程 SELinux 标签
3.1 查看某个文件 SELinux 标签

# ls -Z <file>

3.2 查看某个目录 SELinux 标签

# ls -Zd <directory>

3.3 查看某个进程 SELinux 标签

# ps -auxZ | grep <process>

内容四:查看所有 SELinux 标签
4.1 查看所有文件和目录的 SELinux 标签

# semanage fcontext -l

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

4.2 查看所有端口的 SELinux 标签

# semanage port -l

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

4.3 查看所有进程的 SELinux 标签

# ps -auxZ

内容五:设置 SELinux 标签
5.1 设置文件和目录 SELinux 标签
5.1.1 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.1 semanage fcontext 命令的常用选项

1) -a 添加或变更 SELinux 标签
2) -d 删除 SELinux 标签
3) -l 查看所有的 SELinux 标签
4) -t 指定上下文 SELinux 标签
5) -v 显示修改 SELinux 标签的内容
6) -R 递归设置 SELinux 标签
7) -m 变更 SELinux 标签

5.1.1.2 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.2.1 使用 smanage fcontext 命令设置 SELinux 标签

# semanage fcontext -a -t httpd_sys_content_t "/tmp(/.*)?"

(补充:这里以将 /tmp(/.*) 的 SELinux 标签设置为 httpd_sys_content_t 为例)

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

5.1.1.2.2 使用 restorecon 命令修改默认上下文

# restorecon -Rv /tmp
Relabeled /tmp from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0

5.1.2 使用 chcon 命令设置 SELinux 标签

# chcon -t httpd_sys_content_t /tmp/*

(补充:这里以将 /tmp/* 的 SELinux 标签设置为 httpd_sys_content_t 为例)

5.2 设置端口 SELinux

# semanage port -a -t http_port_t -p tcp 82

(补充:这里以将 TCP 82 端口的 SELinux 标签设置为 http_port_t 为例)

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

[内容] Postfix 数据的加密 (通过 TLS 实现)

内容一:Postfix 不使用 TLS 加密数据传输的后果

1) 收发的邮件数据会被他人截取
2) 给 Gmail 等电子邮箱发送邮件时,会提示类似 “ *** 未对此邮件进行加密” 的信息

内容二:给 Postfix 设置 TLS 加密数据传输的方法
2.1 给 Postfix 的配置文件设置 TLS 机密数据传输的参数

# vim /etc/postfix/main.cf

添加以下内容:

......
smtpd_tls_security_level = may
smtp_tls_security_level = may
......


补充:
smtpd_tls_security_level 代表接收邮件的 TLS 安全等级
smtp_tls_security_level 代表发送邮件的 TLS 安全等级
TLS 的常用安全等级有 none、may 和 encrypt :
1) none 表示禁止使用 TLS 加密
2) may 表示可以接收不使用 TLS 加密的邮件,但是会提出支持 TLS 加密的通告。发送邮件时优先发送支持 TLS 加密的邮件
3) encrypt 表示强制使用 TLS 加密

2.2 重启 Postfix 服务

# systemctl restart postfix

[内容] Linux ping 的禁用 (通过禁用 arp 协议实现)

内容一:临时关闭 arp 协议
1.1 临时关闭 arp 协议的格式

# ifconfig <network card name> -arp

1.2 临时关闭 arp 协议的案例

# ifconfig eth0 -arp

(补充:这里以关闭 eth0 的 arp 协议为例)

内容二:临时开启 arp 协议
2.1 临时关闭 arp 协议的格式

# ifconfig <network card name> arp

2.2 临时关闭 arp 协议的案例

# ifconfig eth0 arp

(补充:这里以开启 eth0 的 arp 协议为例)

[内容] Linux 网卡的设置 (临时管理)

内容目录:

内容一:使用 ifconfig 命令
1.1 使用 ifcofnig 命令临时启动网卡
1.1.1 使用 ifconfig 命令临时启动网卡的格式
1.1.2 使用 ifconfig 命令临时启动网卡的案例
1.2 使用 ifconfig 命令临时关闭网卡
1.2.1 使用 ifconfig 命令临时关闭网卡的格式
1.2.2 使用 ifconfig 命令临时关闭网卡的案例

内容二:使用 ip link 命令
2.1 使用 ip link 命令临时启动网卡
2.1.1 使用 ip link 命令临时启动网卡的格式
2.1.2 使用 ip link 命令临时启动网卡的案例
2.2 使用 ip link 命令临时关闭网卡
2.2.1 使用 ip link 命令临时关闭网卡的格式
2.2.2 使用 ip link 命令临时关闭网卡的案例

具体的内容:

内容一:使用 ifconfig 命令
1.1 使用 ifcofnig 命令临时启动网卡
1.1.1 使用 ifconfig 命令临时启动网卡的格式

# ifup <network card name>

1.1.2 使用 ifconfig 命令临时启动网卡的案例

# ifup eth0

(补充:这里以启动 eth0 网卡为例)

1.2 使用 ifconfig 命令临时关闭网卡
1.2.1 使用 ifconfig 命令临时关闭网卡的格式

# ifdown <network card name>

1.2.2 使用 ifconfig 命令临时关闭网卡的案例

# ifdown eth0

(补充:这里以关闭 eth0 网卡为例)

内容二:使用 ip link 命令
2.1 使用 ip link 命令临时启动网卡
2.1.1 使用 ip link 命令临时启动网卡的格式

# ip link set <network card name> up

2.1.2 使用 ip link 命令临时启动网卡的案例

# ip link set eth0 up

(补充:这里以启动 eth0 网卡为例)

2.2 使用 ip link 命令临时关闭网卡
2.2.1 使用 ip link 命令临时关闭网卡的格式

# ip link set <network card name> down

2.2.2 使用 ip link 命令临时关闭网卡的案例

# ip link set eth0 down

(补充:这里以关闭 eth0 网卡为例)