欢迎光临
我们一直在努力

SELinux+DHCP+DNS 服务实战|曼巴精神打磨 Linux 网络服务基本功

文章目录

    • 一、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 四步通信流程(考试必考)

客户端和服务器四次握手,全程广播:

  • DISCOVER:客户端广播喊 “有没有 DHCP 服务器啊”,目的地址 255.255.255.255
  • OFFER:服务器收到请求,给客户端回复一个可用 IP 地址和配置
  • REQUEST:客户端广播回复 “我就要这个地址了”(网络可能有多个 DHCP 服务器,明确选择哪一个)
  • ACK:服务器确认分配,地址租期正式生效
  • 曼巴忠告: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!

    赞(0)
    未经允许不得转载:171主机测评 » SELinux+DHCP+DNS 服务实战|曼巴精神打磨 Linux 网络服务基本功
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址