
一、SELinux 系统安全加固1.1 SELinux 核心概述传统文件权限仅控制谁能读 / 写 / 执行文件无法控制如何使用文件存在明显安全短板。SELinux安全增强型 Linux是 Linux 内核级强制访问控制安全层核心目标防止被攻陷的服务进程越权读取系统与用户数据。默认策略默认拒绝一切未明确放行的访问。SELinux 会给系统内所有进程、文件、目录、端口打上安全标签SELinux 上下文所有访问行为都需要匹配策略规则无规则则直接拦截。1.2 SELinux 上下文与类型机制上下文四元组用户、角色、类型、敏感度。RHEL/CentOS 默认使用targeted 策略仅管控类型 type后缀 _t。常见默认标签对照httpd 进程httpd_exec_t网页站点目录httpd_sys_content_tHTTP 服务端口http_port_t系统临时目录tmp_t防护原理httpd 进程仅允许访问带有httpd_sys_content_t标签的目录无法读取/tmp、/var/tmp等 tmp_t 目录即使 Web 服务被入侵攻击者也无法横向越权。1.3 核心查看命令-Z 专属参数系统文件、进程工具的-Z参数专门用于查看 / 保留 SELinux 上下文。# 查看进程 SELinux 标签 [rootserver ~ 16:30:35]# ps -C sshd -Z # 查看目录文件 SELinux 标签 [rootserver ~ 16:30:45]# ls -Z /home # 新建文件/目录继承默认 SELinux 上下文 [rootserver ~ 16:30:55]# cp -Z test.txt /tmp/ [rootserver ~ 16:31:05]# mkdir -Z testdir1.4 SELinux 三种工作模式enforcing 强制模式默认拦截非法访问、记录审计日志生产环境标准模式。permissive 宽容模式不拦截、仅记录违规日志用于排错、调试策略。disabled 关闭模式完全关闭 SELinux不拦截、不记录生产不推荐。1.5 模式切换实操# 查看当前 SELinux 运行模式 [rootserver ~ 16:31:15]# getenforce # 临时切换为宽容模式无需重启 [rootserver ~ 16:31:25]# setenforce 0 [rootserver ~ 16:31:30]# setenforce Permissive # 临时切换为强制模式无需重启 [rootserver ~ 16:31:35]# setenforce 1 [rootserver ~ 16:31:40]# setenforce Enforcing1.6 永久修改 SELinux 默认模式# 编辑 SELinux 主配置文件 [rootserver ~ 16:31:45]# vim /etc/selinux/config # 修改如下字段 SELINUXenforcing SELINUXTYPEtargeted重要规则强制 宽容动态切换无需重启开启 关闭必须重启系统生效内核启动参数可强制指定模式selinux0彻底关闭、enforcing0开机宽容1.7 经典故障密码破解后登录失败场景SELinux 强制模式下破解 root 密码未执行touch /.autorelabel重新标记上下文。原因密码修改过程破坏了/etc/shadow的 SELinux 标签系统认证程序无法读取影子文件直接拒绝登录。应急解决开机内核添加参数selinux1 enforcing0临时放行登录进入系统后重新标记文件上下文。二、DHCP 服务原理与完整部署2.1 DHCP 简介DHCP动态主机配置协议用于局域网主机自动获取IP 地址、子网掩码、网关、DNS、租期解决静态 IP 配置繁琐、地址冲突、云环境自动化部署问题。协议分为DHCPv4IPv4、DHCPv6IPv6本文仅讲解 DHCPv4。2.2 DHCP 四次握手原理客户端无有效 IP 时通过广播完成地址申请四步交互DHCPDISCOVER客户端全网广播请求 IP目标255.255.255.255DHCPOFFERDHCP 服务器回应推送可用 IP、租期、网关、DNS 等参数DHCPREQUEST客户端广播确认选定一台 DHCP 服务器DHCPACK服务器最终确认授权客户端使用该 IP租期正式生效租期到期前客户端会主动续约无需重新四次握手。服务日志查询journalctl --unitdhcpd.service2.3 多 DHCP 服务器机制同一物理网段不建议部署多台 DHCP 服务器易造成 IP 分配混乱非权威服务器忽略未知客户端续约请求权威服务器检测非法 IP 会返回 DHCPNAK强制客户端重新申请默认配置下 DHCP 为非权威模式避免抢占合法 IP2.4 DHCP 服务部署全过程2.4.1 环境前置要求DHCP 服务器网卡必须配置静态 IP保证广播地址正常禁止动态 IP。2.4.2 安装与防火墙配置# 安装 DHCP 服务 [rootserver ~ 16:32:00]# yum install -y dhcp # 放行 DHCP 服务防火墙 [rootserver ~ 16:32:10]# firewall-cmd --add-servicedhcp --permanent [rootserver ~ 16:32:20]# firewall-cmd --reload # 导入官方示例配置文件 [rootserver ~ 16:32:30]# cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf2.4.3 核心配置文件[rootserver ~ 16:32:40]# vim /etc/dhcp/dhcpd.conf # 权威模式开启 authoritative; # 网段声明 subnet 10.1.8.0 netmask 255.255.255.0 { range 10.1.8.101 10.1.8.130; # 可分配IP池 option domain-name-servers 223.5.5.5; # DNS服务器 option domain-name zlf.cloud; # 域名后缀 option routers 10.1.8.2; # 默认网关 option broadcast-address 10.1.8.255; # 广播地址 default-lease-time 600; # 默认租期 600s max-lease-time 7200; # 最大租期 7200s }2.4.4 配置校验与服务启动# 校验配置语法 [rootserver ~ 16:33:00]# dhcpd -t # 开机自启并立即启动 [rootserver ~ 16:33:10]# systemctl enable dhcpd --now # 查看运行状态 [rootserver ~ 16:33:20]# systemctl status dhcpd # 实时查看分配日志 [rootserver ~ 16:33:30]# tail -f /var/log/messages # 查看IP租期与MAC绑定记录 [rootserver ~ 16:33:40]# cat /var/lib/dhcpd/dhcpd.leases2.5 客户端自动获取 IP 实操# 新建自动获取IP连接 [rootclient ~ 16:34:00]# nmcli connection add con-name dynamic type ethernet ifname ens192 [rootclient ~ 16:34:10]# nmcli connection up dynamic # 释放已获取IP [rootclient ~ 16:34:20]# dhclient -r ens192 # 重新申请IP [rootclient ~ 16:34:30]# dhclient -v ens192 # 验证IP地址 [rootclient ~ 16:34:40]# ip addr show ens1922.6 MAC 地址固定 IPIP 预留用于服务器、数据库等需要固定内网 IP 的设备永久绑定 MAC 与 IP。# 客户端查看网卡MAC地址 [rootclient ~ 16:35:00]# ip link show ens192 # 服务端配置MAC绑定 [rootserver ~ 16:35:10]# vim /etc/dhcp/dhcpd.conf host client.zlf.cloud { hardware ethernet 00:0c:29:26:13:b5; fixed-address 10.1.8.30; } # 重启服务生效 [rootserver ~ 16:35:20]# systemctl restart dhcpd三、DNS (BIND) 服务原理与完整部署3.1 DNS 核心概念DNS域名系统是分布式域名解析系统核心作用域名与 IP 双向解析让人可通过易记域名访问服务。DNS 层级根域.→ 顶级域.com/.net/.cn→ 二级域zlf.cloud→ 子域lab.zlf.cloud3.2 核心名词解释Domain完整域名子树如 zlf.cloudSubdomain子域名如 lab.zlf.cloudZoneDNS 服务器直接权威管理的解析区域支持子域委派3.3 常用 DNS 资源记录通用格式主机名 TTL 类型 记录值A域名解析 IPv4AAAA域名解析 IPv6CNAME域名别名跳转PTRIP 反向解析域名NS指定区域权威 DNS 服务器SOA区域起始授权定义集群同步规则每个区域唯一MX邮件服务器记录数值越小优先级越高TXT文本验证记录域名所有权、SPF 防垃圾邮件SRV服务定位记录标识服务端口与主机3.4 BIND 权威服务器部署3.4.1 安装服务[rootserver ~ 16:36:00]# yum install -y bind bind-utilsbind服务主程序bind-utilsdig/host 测试工具3.4.2 主配置文件 /etc/named.conf[rootserver ~ 16:36:10]# vim /etc/named.conf # 自定义可信网段 acl classroom { 10.1.8.0/24; }; options { listen-on port 53 { 127.0.0.1; 10.1.8.10; }; listen-on-v6 port 53 { ::1; }; allow-query { any; }; recursion no; # 权威服务器关闭递归防止DNS放大攻击 directory /var/named; }; # 正向解析区域 zone zlf.cloud IN { type master; file zlf.cloud.zone; }; # 反向解析区域 zone 8.1.10.in-addr.arpa IN { type master; file 10.1.8.zone; };3.4.3 新建区域文件并授权[rootserver ~ 16:36:30]# touch /var/named/zlf.cloud.zone /var/named/10.1.8.zone [rootserver ~ 16:36:40]# chmod 640 /var/named/*.zone [rootserver ~ 16:36:50]# chown root:named /var/named/*.zone # 修复SELinux上下文 [rootserver ~ 16:37:00]# chcon -t named_zone_t /var/named/*.zone3.4.4 正向区域文件 zlf.cloud.zone[rootserver ~ 16:37:10]# vim /var/named/zlf.cloud.zone $TTL 3600 IN SOA dns.zlf.cloud. root.zlf.cloud. ( 42 ; 序列号修改配置必须递增 3H ; 从服务器刷新间隔 15M ; 重试间隔 1W ; 超时作废时间 15M ; 负面缓存TTL ) IN NS dns.zlf.cloud. dns IN A 10.1.8.10 server IN A 10.1.8.10 client IN A 10.1.8.11 www IN A 10.1.8.200 mail IN A 10.1.8.253 IN MX 10 mail.zlf.cloud. student IN CNAME client.zlf.cloud.3.4.5 反向区域文件 10.1.8.zone[rootserver ~ 16:37:15]# vim /var/named/10.1.8.zone $TTL 3600 IN SOA dns.zlf.cloud. root.zlf.cloud. ( 42 3H 15M 1W 15M ) IN NS dns.zlf.cloud. 10 IN PTR server.zlf.cloud. 11 IN PTR client.zlf.cloud. 200 IN PTR www.zlf.cloud. 253 IN PTR mail.zlf.cloud.3.4.6 配置校验与启动服务# 校验主配置 [rootserver ~ 16:37:20]# named-checkconf # 校验区域文件 [rootserver ~ 16:37:30]# named-checkzone zlf.cloud /var/named/zlf.cloud.zone # 启动服务并放行防火墙 [rootserver ~ 16:37:40]# systemctl enable named --now [rootserver ~ 16:37:50]# firewall-cmd --add-servicedns --permanent [rootserver ~ 16:38:00]# firewall-cmd --reload # 查看服务日志 [rootserver ~ 16:38:10]# journalctl -f _SYSTEMD_UNITnamed.service3.5 客户端解析测试# 配置客户端DNS指向自建服务器 [rootclient ~ 16:38:20]# nmcli connection modify ens192 ipv4.dns 10.1.8.10 [rootclient ~ 16:38:30]# nmcli connection up ens192 # 基础连通性测试 [rootclient ~ 16:38:40]# ping www.zlf.cloud [rootclient ~ 16:38:50]# host student.zlf.cloud [rootclient ~ 16:39:00]# getent hosts client.zlf.cloud # dig 精准解析测试 [rootclient ~ 16:39:10]# dig 10.1.8.10 zlf.cloud NS [rootclient ~ 16:39:20]# dig 10.1.8.10 zlf.cloud MX [rootclient ~ 16:39:30]# dig 10.1.8.10 -x 10.1.8.10