SELinux、DHCP、DNS 实战
SELinux
SELinux 是传统rwx自主访问控制(DAC)之外,增加的强制访问控制MAC安全层。
DAC:由文件属主决定权限;MAC:系统策略强制管控,默认拒绝,只有策略显式允许才可以访问。
核心目标:防止被入侵的服务进程越权访问系统其他数据。
SELinux上下文(标签)
每个进程、文件、目录、端口都拥有SELinux上下文(安全标签)
格式:user:role:type:level
- user:selinux用户
- role:角色;文件/目录角色固定是object_r;进程是xxx_r
- type(最重要,考试重点,以_t结尾):策略主要依靠type做访问控制
- level:安全级别,MLS,RHCSA基本不考
示例
#进程上下文
system_u:system_r:sshd_t:s0‑s0:c0.c1023
#文件上下文
unconfined_u:object_r:user_home_dir_t:s0
重要理解:不是type相同才可以访问,看策略规则是否允许某进程type访问某文件type
例:httpd_t(apache进程),策略允许读取httpd_sys_content_t;拒绝读取tmp_t(/tmp目录),哪怕文件777也会拦截。
-Z 参数查看标签
ps -Z #查看进程selinux上下文
ls -Z #查看文件/目录selinux上下文
ll -Z #同时看普通权限+selinux标签
SELinux三种运行模式
| enforcing(强制) | 加载策略,违反策略直接拒绝访问,记录AVC审计日志(生产推荐) |
| permissive(宽容) | 加载策略,不拦截操作,只记录AVC日志,用于排错 |
| disabled(完全关闭) | 内核不加载SELinux策略;进程无selinux标签,ps -Z显示‑;磁盘上文件标签会保留,ls -Z依旧可以看到 |
getenforce #查看当前selinux模式
sestatus #完整selinux状态信息
setenforce 1 / setenforce Enforcing #临时切换强制模式
setenforce 0 / setenforce Permissive #临时切换宽容模式
⚠️setenforce限制:仅能在 enforcing ↔ permissive 之间切换;如果是disabled,setenforce命令直接报错:setenforce: SELinux is disabled
永久配置文件:/etc/selinux/config
SELINUX=enforcing # enforcing / permissive / disabled
SELINUXTYPE=targeted # 默认targeted策略,只管控网络服务
- enforcing ↔ permissive:setenforce临时切换,不需要修改配置、不需要重启,重启会还原为配置文件定义的模式
- disabled <‑‑> enforcing/permissive:必须修改配置文件 + 重启系统
注意:disabled切换到enforcing/permissive,重启系统会全盘自动重新打SELinux标签,开机时间变长,不可断电。
修改SELinux文件上下文标签
chcon -t httpd_sys_content_t /web/index.html
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
restorecon -Rv /web
restorecon:读取semanage数据库,恢复目录/文件的默认selinux标签。
复制移动文件小考点
- cp复制文件:新文件继承目标目录的selinux标签
- mv移动文件:保留文件原来的selinux标签,不会继承目标目录
SELinux布尔值 boolean
布尔值是策略开关,on/off,快速放开限制,不用写复杂策略。
getsebool -a | grep http
setsebool -P httpd_can_network_connect on
-P代表permanent永久;不加‑P,修改临时生效,重启失效。
SELinux端口标签
SELinux限制服务监听端口,例如http默认只允许http_port_t类型端口。
semanage port -l | grep http #查看端口标签
semanage port -a -t http_port_t -p tcp 8080 #添加端口标签
semanage port -d -t http_port_t -p tcp 8080 #删除端口标签
SELinux排错
ausearch -m AVC -ts recent #查看avc拒绝日志
sealert -a /var/log/audit/audit.log #分析selinux问题报告
排错思路:访问被拦截 → setenforce 0测试;恢复正常说明是SELinux问题,排查标签/布尔/端口。
DAC与MAC检查顺序:先检查传统rwx(DAC),DAC拒绝直接拦截;DAC放行后才检查SELinux(MAC)
DHCP
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。自动给客户端下发IP、子网掩码、网关、DNS、域名搜索域。
- 端口:服务器UDP 67,客户端UDP 68
- 广播报文,路由器默认不转发DHCP广播;跨网段需要DHCP中继dhcrelay。
DORA 四步工作流程
租约机制
客户端获取不到DHCP地址,自动分配APIPA地址 169.254.0.0/16。
DHCP服务器部署(ISC dhcpd)
安装
yum install -y dhcp
配置文件
主配置文件:/etc/dhcp/dhcpd.conf,默认是空,复制示例模板
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
基础配置示例
authoritative; #权威DHCP服务器
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 "laoma.cloud"; #域名后缀
option routers 10.1.8.2; #默认网关
option broadcast-address 10.1.8.255; #广播地址
default-lease-time 600; #默认租约,单位秒
max-lease-time 7200; #客户端可请求最大租约,单位秒
}
#MAC地址绑定固定IP(保留地址)
host client {
hardware ethernet 00:0c:29:26:13:b5;
fixed-address 10.1.8.30;
}
注意:每一行末尾必须分号;,缺少分号dhcpd启动失败。
fixed‑address保留IP:可以不在range地址池内,但必须属于本子网网段。
语法校验、启动、防火墙
dhcpd -t #校验dhcp配置语法
systemctl enable –now dhcpd
firewall‑cmd –add‑service=dhcp –permanent
firewall‑cmd –reload
租约数据库,记录已经分配出去的IP、MAC、租期
cat /var/lib/dhcpd/dhcpd.leases
DHCP客户端
网卡设置BOOTPROTO=dhcp自动获取IP
dhclient -r ens35 #释放IP
dhclient -v ens35 #重新向dhcp服务器申请IP
#nmcli设置dhcp获取
nmcli connection modify ens35 ipv4.method auto
nmcli connection up ens35
DHCP中继 dhcrelay
客户端与DHCP服务器不在同一个网段,路由器不转发DHCP广播,需要中继代理转发报文。
yum install -y dhcp
dhcrelay 10.1.8.10 #指向DHCP服务器IP
systemctl enable –now dhcrelay
DHCP高频考点坑
DNS(BIND named服务)
DNS:域名系统,域名和IP相互映射的分布式数据库。
软件包:
- bind:dns服务程序,后台进程named
- bind‑utils:测试工具,dig、host
端口:UDP/TCP 53
DNS查询模式
权威服务器最佳实践:关闭递归 recursion no;,防止DNS放大攻击。
DNS资源记录速查表
| A | 地址记录 | 域名→IPv4地址 | www IN A 10.1.8.10 |
| AAAA | 地址记录 | 域名→IPv6地址 | www IN AAAA ::1 |
| CNAME | 别名记录 | 域名指向另一个域名,不能直接写IP | web IN CNAME www |
| MX | 邮件交换记录 | 邮件服务器,数字越小优先级越高 | @ IN MX 10 mail1.laoma.cloud. |
| NS | 域名服务器记录 | 声明本域的权威DNS服务器 | IN NS dns.laoma.cloud. |
| PTR | 指针记录 | IP反向解析为域名,用于反向zone | 10 IN PTR dns.laoma.cloud. |
| SOA | 起始授权记录 | zone文件开头,定义域同步参数serial/refresh/retry/expire/minimum | @ IN SOA dns.laoma.cloud. admin.laoma.cloud. (…) |
| TXT | 文本记录 | 存放文本信息,域名所有权验证、SPF | @ IN TXT "v=spf1 …" |
zone文件语法重点:
BIND配置文件
zone文件权限:root:named 640;selinux标签 named_zone_t;复制zone模板务必使用‑a参数,保留权限和标签。
/etc/named.conf options{}全局段
options {
listen‑on port 53 {127.0.0.1;10.1.8.10;}; #监听本机哪些IP的53端口
allow‑query {any;}; #允许哪些主机查询dns
recursion no; #权威服务器关闭递归
allow‑transfer {none;}; #禁止区域传输,防止泄露全部记录
dnssec‑enable no;
};
include "/etc/named.laoma.cloud.zone"; #引入外部zone定义配置
zone定义(/etc/named.laoma.cloud.zone)
#正向zone,管理laoma.cloud
zone "laoma.cloud" IN {
type master; #master主服务器;slave从服务器
file "named.laoma.cloud"; #zone数据库文件名,位于/var/named
allow‑update { none; }; #关闭动态更新,禁止客户端远程修改记录
};
#反向zone,网段10.1.8.0/24,网段倒写.in‑addr.arpa
zone "8.1.10.in‑addr.arpa" IN {
type master;
file "named.10.1.8";
allow‑update { none; };
};
正向zone数据库示例 /var/named/named.laoma.cloud
$TTL 1D
@ IN SOA dns.laoma.cloud. admin.laoma.cloud. (
0 ;serial序列号:**修改zone记录必须手动+1,从服务器根据此字段同步更新**
1D ;refresh:从服务器多久来主服务器拉取更新
1H ;retry:同步失败重试间隔
1W ;expire:从服务器连不上主服务器多久停止提供解析
3H ) ;minimum:不存在域名(NXDOMAIN)负响应缓存时间
IN NS dns.laoma.cloud. #本域DNS服务器
IN MX 10 mail1 #优先级10,主邮件服务器
IN MX 20 mail2 #优先级20,备用邮件服务器
dns IN A 10.1.8.10
web IN CNAME www
www IN A 10.1.8.10
mail1 IN A 10.1.8.101
mail2 IN A 10.1.8.102
client IN A 10.1.8.11
IN NS dns.laoma.cloud.、IN MX 10 mail1行首为空,继承@也就是laoma.cloud.。
反向zone数据库示例 /var/named/named.10.1.8
$TTL 1D
@ IN SOA dns.laoma.cloud. admin.laoma.cloud. (
0 1D 1H 1W 3H )
IN NS dns.laoma.cloud.
10 IN PTR dns.laoma.cloud.
10 IN PTR www.laoma.cloud.
11 IN PTR client.laoma.cloud.
101 IN PTR mail1.laoma.cloud.
102 IN PTR mail2.laoma.cloud.
反向zone中左边只写IP最后一段,10等价10.1.8.10;PTR后面域名必须写完整FQDN,末尾带.,不能写http网址。
校验配置语法
named‑checkconf #校验主配置/etc/named.conf
named‑checkzone laoma.cloud /var/named/named.laoma.cloud #校验正向zone
named‑checkzone 8.1.10.in‑addr.arpa /var/named/named.10.1.8 #校验反向zone
启动服务、防火墙
systemctl enable –now named
firewall‑cmd –add‑service=dns –permanent
firewall‑cmd –reload
journalctl -u named #查看named运行日志,排错优先看日志
客户端测试命令
dig @10.1.8.10 www.laoma.cloud #指定dns服务器查询A记录
dig @10.1.8.10 laoma.cloud MX #查询MX邮件记录
dig @10.1.8.10 -x 10.1.8.101 #‑x反向PTR查询,IP查域名
dig +trace www.baidu.com #迭代追踪完整查询过程
host 域名
getent hosts 域名
DNS高频坑
主从DNS补充:type slave,从服务器,通过区域传输AXFR从master主服务器获取zone数据。master需要allow‑transfer允许从服务器IP。
网硕互联帮助中心



评论前必须登录!
注册