文章目录
-
- 一、SELinux 加固 Linux 安全
-
- 传统权限的痛点
- 上下文标签查看
- SELinux 三种模式
-
- 常用命令
- 永久修改模式
- 经典巨坑:重置 root 密码后登录失败
- 二、DHCP 服务器|自动分配 IP 地址
-
- DHCP 是啥
- DHCP 四步通信流程(考试必考)
- 部署 DHCP 服务器
-
- 前提
- 1. 安装 + 放通防火墙
- 2. 配置文件
- 3. 验证配置 + 启动服务
- 4. 查看日志和租约
- DHCP 客户端配置
-
- nmcli 自动获取
- dhclient 工具
- 进阶:MAC 地址绑定固定 IP
- 三、DNS 服务器|域名解析核心
-
- DNS 是啥
- 两种查询方式(重点!考试必考)
-
- 递归查询
- 迭代查询
- 常用资源记录
- 部署 BIND DNS 服务器
-
- 1. 安装软件包
- 2. 主配置文件
- 3. 配置解析区域(Zone)
- 4. 编写区域文件
-
- 正向区域文件 laoma.cloud.zone
- 反向区域文件 10.1.8.zone
- 5. 权限与安全标签
- 6. 验证配置 + 启动服务
- 7. 客户端测试
- 写在最后
Man!What can I say,孩子们!运维玩到网络服务层,安全和解析就是命。SELinux 没配好,漏洞进来拦不住;DHCP 配错了,终端地址乱成一锅粥;DNS 崩了,整个网络业务直接失联。今天把
SELinux 系统加固、DHCP 地址分配、BIND 域名解析服务 三大块硬骨头啃透,从原理到实操到排坑,全是生产天天用的硬货,打开 CentOS7 跟着敲,拒绝眼会手废,点赞收藏反复练!
一、SELinux 加固 Linux 安全
传统权限的痛点
传统的 rwx 权限,只管谁能读能写,不管你用什么程序写。比如 web 服务被入侵了,拿到 apache 用户权限,就能去读 /tmp、碰其他用户文件,横向移动直接起飞。
SELinux 就是额外的安全层,核心思想:默认全拒绝,只允许规则里明确的操作。每个进程、文件、端口都有安全标签(SELinux 上下文),进程和文件标签匹配才能访问,不匹配直接拦下来。
举个例子:httpd 进程标签是 httpd_exec_t,网页文件标签是 httpd_sys_content_t,默认规则允许访问;但 /tmp 标签是 tmp_t,httpd 进程默认就碰不了,哪怕权限是 777 也没用。
上下文标签查看
很多命令加-Z就能看 SELinux 上下文:
ps -C sshd -Z # 查看进程的安全标签
ls -Z /home # 查看文件的安全标签
标签格式为「用户:角色:类型:级别」,默认 targeted 策略主要看类型部分,一般以_t结尾。
SELinux 三种模式
- enforcing 强制模式:系统默认,违规直接拦截,同时写入日志。生产环境就用这个。
- permissive 宽容模式:不拦截,只记录违规行为。排错、测试的时候用。
- disabled 彻底关闭:完全不生效。不建议生产环境关闭,等于安全裸奔。
常用命令
getenforce # 查看当前模式
setenforce 0 # 临时切换到宽容模式
setenforce 1 # 临时切换到强制模式
曼巴忠告:强制和宽容模式之间切换,不用重启系统;但要彻底禁用 / 启用 SELinux,得改配置文件重启。
永久修改模式
vim /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
也可以在启动时加内核参数:selinux=0彻底禁用,enforcing=0切换宽容模式。
经典巨坑:重置 root 密码后登录失败
单用户模式改完 root 密码,忘了执行touch /.autorelabel,重启后 SELinux 发现 /etc/shadow 文件标签不对,直接拦截登录程序,密码输对也进不去系统!
解决:启动时加内核参数selinux=1 enforcing=0先进系统,重新打安全标签即可。
二、DHCP 服务器|自动分配 IP 地址
DHCP 是啥
大型网络手动配 IP,地址冲突、配置繁琐,能把人逼疯。DHCP(动态主机配置协议)就是自动给客户端分配 IP、网关、DNS、租期这些参数,集中管理,省心省力。
DHCP 四步通信流程(考试必考)
客户端和服务器四次握手,全程广播:
曼巴忠告:DHCP 是广播协议,默认跨不了路由器!要么服务器和客户端同广播域,要么路由器配置 DHCP 中继。
部署 DHCP 服务器
前提
服务器必须配置静态 IP,网卡必须支持广播地址。
1. 安装 + 放通防火墙
yum install -y dhcp
firewall-cmd –add-service=dhcp –permanent
firewall-cmd –add-service=dhcp
2. 配置文件
主配置文件在/etc/dhcp/dhcpd.conf,系统自带示例模板,直接复制过来修改即可。
cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
典型配置示例:
subnet 10.1.8.0 netmask 255.255.255.0 {
range 10.1.8.101 10.1.8.130; # 地址池范围
option routers 10.1.8.2; # 默认网关
option domain-name-servers 223.5.5.5; # DNS服务器地址
option domain-name "laoma.cloud"; # 域名后缀
default-lease-time 600; # 默认租期(秒)
max-lease-time 7200; # 最大租期(秒)
}
3. 验证配置 + 启动服务
dhcpd -t # 验证配置语法,没有报错就没问题
systemctl enable dhcpd –now
4. 查看日志和租约
tail -f /var/log/messages # 实时查看分配日志、排错定位
cat /var/lib/dhcpd/dhcpd.leases # 查看已分配地址、租期、客户端MAC
DHCP 客户端配置
nmcli 自动获取
nmcli connection add con-name dynamic type ethernet ifname ens192
nmcli connection up dynamic
ip addr show ens192
dhclient 工具
dhclient -r ens192 # 释放当前IP
dhclient -v ens192 # 重新申请IP,查看详细交互过程
进阶:MAC 地址绑定固定 IP
服务器、打印机这类设备,需要固定 IP,又想统一 DHCP 管理,就用 MAC 地址绑定。
在配置文件末尾添加:
host client.laoma.cloud {
hardware ethernet 00:0c:29:26:13:b5; # 客户端网卡MAC地址
fixed-address 10.1.8.30; # 固定分配的IP
}
重启 dhcpd 服务,客户端重新获取地址,拿到的就是绑定的固定 IP。
曼巴忠告:同一个广播域别部署多台 DHCP 服务器!容易地址冲突、租期混乱,除非做主备架构。
三、DNS 服务器|域名解析核心
DNS 是啥
DNS(域名系统)就是把好记的域名翻译成 IP 地址,相当于互联网的通讯录。采用分层结构,从根域.,到顶级域.com/.cn,再到二级域laoma.cloud,一层层分级管理。
两种查询方式(重点!考试必考)
递归查询
以 DNS 服务器为中心,客户端只管发请求,服务器替你一层层去查,查到最终结果再返回给你。客户端省事,服务器压力大。
- 客户端发请求 → 本地 DNS 服务器代查根 → 查顶级域 → 查二级域 → 查到结果返回客户端
- 系统默认都是递归查询。
迭代查询
以客户端为中心,客户端自己一层层询问。根服务器告诉你.com服务器在哪,你自己去问.com;.com 告诉你laoma.cloud在哪,你自己去问。
- 客户端一步步查询,每一步只返回下一级的地址,自己迭代完成查询。
曼巴忠告:生产环境的权威 DNS 服务器别开递归查询!容易被利用做 DNS 放大攻击,直接打满你的带宽。
常用资源记录
DNS 数据库里的条目叫资源记录,常用的就这几个:
表格
| A | 域名→IPv4 地址,最常用 |
| AAAA | 域名→IPv6 地址 |
| CNAME | 别名记录,把一个域名指向另一个域名 |
| PTR | IP→域名,反向解析用 |
| NS | 域名服务器记录,指定该域由哪个 DNS 负责解析 |
| SOA | 起始授权记录,每个域唯一,说明主服务器、刷新时间、序列号等 |
| MX | 邮件交换记录,邮件服务用 |
| SRV | 服务记录,指定某个服务运行在哪台机器哪个端口 |
部署 BIND DNS 服务器
Linux 最主流的 DNS 软件就是 BIND,用来搭建权威域名服务器。
1. 安装软件包
yum install -y bind bind-utils
- bind:DNS 服务端软件
- bind-utils:客户端工具集,包含 dig、host 等命令
2. 主配置文件
主配置文件为/etc/named.conf,配置监听地址、查询权限、递归开关等核心参数。
vim /etc/named.conf
核心配置:
options {
listen-on port 53 { 127.0.0.1; 10.1.8.10; }; # 监听的IP地址
allow-query { any; }; # 允许哪些客户端查询
recursion yes; # 是否开启递归,内部服务器可以开,公网权威服务器别开
};
3. 配置解析区域(Zone)
在配置文件末尾添加正向和反向解析区域:
# 正向解析区域:laoma.cloud
zone "laoma.cloud" IN {
type master;
file "laoma.cloud.zone";
};
# 反向解析区域:10.1.8网段
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
4. 编写区域文件
区域文件默认存放在/var/named/目录下。
正向区域文件 laoma.cloud.zone
$TTL 3600
@ IN SOA dns.laoma.cloud. root.laoma.cloud. (
42 ; serial 版本号,修改记录后必须加1
3H ; refresh 从服务器刷新时间
15M ; retry 刷新失败重试间隔
1W ; expire 数据过期时间
15M ; minimum 负结果缓存时间
)
IN NS dns.laoma.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
@ IN MX 10 mail.laoma.cloud.
mail IN A 10.1.8.253
说明:@代表当前域,SOA 记录是必须的,NS 至少一条,然后是各种 A、MX 等业务记录。
反向区域文件 10.1.8.zone
$TTL 3600
@ IN SOA dns.laoma.cloud. root.laoma.cloud. (
42
3H
15M
1W
15M
)
IN NS dns.laoma.cloud.
10 IN PTR dns.laoma.cloud.
10 IN PTR server.laoma.cloud.
11 IN PTR client.laoma.cloud.
200 IN PTR www.laoma.cloud.
5. 权限与安全标签
chmod 640 /var/named/*.zone
chown root:named /var/named/*.zone
# 开启SELinux的系统还要设置安全标签
chcon -t named_zone_t /var/named/*.zone
6. 验证配置 + 启动服务
named-checkconf # 检查主配置语法
named-checkzone laoma.cloud /var/named/laoma.cloud.zone # 检查区域文件语法
systemctl enable named –now
# 防火墙放通DNS服务
firewall-cmd –add-service=dns –permanent
firewall-cmd –add-service=dns
7. 客户端测试
客户端把 DNS 地址指向服务器,然后进行解析测试:
# 配置客户端DNS
nmcli connection modify ens32 ipv4.dns 10.1.8.10
nmcli connection up ens32
# 测试正向解析
host www.laoma.cloud
dig @10.1.8.10 www.laoma.cloud A
# 测试反向解析
dig @10.1.8.10 -x 10.1.8.10
# 查询NS记录
dig @10.1.8.10 laoma.cloud NS
曼巴忠告:修改区域文件后,serial 序列号一定要加 1!不然从服务器不刷新,客户端缓存也不更新,改了半天不生效,经典中的经典坑!
写在最后
Man!What can I say!SELinux 是系统安全的第二道闸门,DHCP 是局域网地址管理的核心,DNS 是所有网络服务的基础。这三个服务玩不明白,网络服务根本站不住脚。
一定要虚拟机亲手复现:SELinux 模式切换、DHCP 地址分配与固定绑定、BIND 正向反向解析,每个坑都踩一遍,比背十页笔记都管用。
万丈高楼平地起,网络服务打牢了,后面各种业务部署才能稳如老狗。 后续持续更新 Linux 实战干货,欢迎点赞收藏关注,一起持续打怪升级!
Mamba out!
