第11章 管理网络安全
1. 防火墙在 Linux 系统安全中有哪些重要的作用?
防火墙作为Linux系统网络安全的关键组件,核心作用是隔离不同信任级别的网络区域、控制流量进出,具体重要作用可分为以下几点:
(1)网络隔离与区域管控:
核心作用是隔离不同信任级别网络 (如内部网络与外部互联网),通过预设规则控制流量进出,这是防火墙核心定位,也是所有安全防护的基础。
(2)依托内核框架实现流量过滤:
基于Linux内核netfilter框架工作,利用框架预设的hook点 (数据包进出、路由决策等关键拦截点 ),对流经的数据包执行 "拦截-检查-放行/拒绝" 操作,是所有Linux防火墙工具的底层支撑。
(3)支持地址与端口转换:
借助netfilter框架的NAT(网络地址转换)功能 (如firewalld的external区域支持IPv4传出流量伪装),实现内部网络地址隐藏 ,同时支持端口转换,保障内部设备安全访问公网。
(4)精准控制服务与端口访问:
可通过预定义 服务(如SSH、http)或端口号配置规则 ,放行必要服务流量 (如办公场景放行ipp打印服务、公网场景仅放行SSH管理服务),拒绝未授权服务的访问请求,降低服务暴露风险。
(5)安全策略适配不同场景:
通过区域(Zone)机制(如trusted、public、dmz等),为不同信任级别场景匹配预设规则集(完全信任、严格限制、对外服务隔离等),无需从零编写规则,快速适配家庭、办公、公网等多种使用场景。
2. 简单说明一下什么是firewalld。
firewalld是基于nftables(RHEL 9及以后)默认的防火墙管理器,核心作用是简化防火墙配置,让策略管理更高效。
核心定位:
firewalld并非直接替换iptables,而是在 nftables/iptables 内核框架之上,提供更友好的管理层级 ,解决传统iptables修改规则需重启服务、中断现有连接的问题,支持规则动态生效(无需重启服务)。
核心特性:
(1)区域(Zone)核心机制:
这是firewalld的核心概念,每个区域是一组预定义规则集 ,对应不同信任级别 (如trusted允许所有流量、public仅放行SSH和dhcpv6-client),可通过源IP或网络接口将流量归类到对应区域,应用匹配规则。
(2)预定义服务与端口:
内置常见服务(SSH、http、ipp等)与端口/协议的映射关系 ,管理员无需记忆端口号,可通过服务名称快速配置规则(如放行http服务即自动放行对应端口)。
(3)双配置模式:
支持runtime(临时生效,重启服务/服务器后丢失)和permanent(永久生效,需通过firewall-cmd --reload重载后生效)两种配置模式,适配测试与生产场景。
(4)底层兼容与迁移:
RHEL 9及以后版本底层依赖nftables框架,替代老旧的iptables;系统提供iptables-translate工具,可将旧iptables配置自动转换为nftables格式,实现平滑迁移。
(5)多管理方式:
支持firewall-cmd命令行(核心管理方式)、firewall-config图形化界面(桌面环境适用)、配置文件编辑(/etc/firewalld/目录,适配批量部署)三种交互方式。
3. 系统管理员可以通过哪三种方式与firewalld交互?
(1)firewall-cmd 命令行工具(核心方式):
最常用交互方式 ,适用于所有命令行环境(本地终端、远程SSH),可实现所有核心操作(区域管理、服务/端口放行、规则重载、配置查询等),支持临时与永久配置(如firewall-cmd --add-service=http --permanent永久放行http服务)。
(2)firewall-config 图形化工具:
firewalld提供的可视化管理界面,适用于有桌面环境的Linux系统,可通过界面直观配置区域、关联网卡/源IP、放行服务/端口,无需记忆命令,适合简单场景与新手操作。
(3)配置文件手动编辑:
firewalld的所有配置均存储在/etc/firewalld/目录下(系统级配置),包括区域规则(zones目录)、预定义服务(services目录)等,管理员可直接编辑配置文件实现批量配置或复杂规则定制,编辑后需执行firewall-cmd --reload重载生效。
4. 使用什么命令可以获取当前端口标签分配概述?
获取当前端口标签分配概述的命令为:
bash
semanage port -l
补充说明:
- 该命令会列出系统所有端口的SELinux安全标签分配信息,包括标签类型(如http_port_t)、协议(tcp/udp)、对应的端口号(如http_port_t对应80、81、443等tcp端口),是获取端口标签分配概述的核心命令。
- 可结合过滤命令精准查询:按服务过滤(semanage port -l | grep 服务名,如grep http)、按端口号过滤(semanage port -l | grep -w 端口号,如grep -w 80),快速定位目标端口的标签信息。
- 非标准端口运行服务时(如httpd侦听30080端口),SELinux会拦截端口绑定,需通过该命令确认正确的端口标签,再通过semanage命令修改标签分配,否则服务无法正常启动。
5. 要允许httpd服务侦听端口82/TCP,可以使用什么命令?
httpd服务侦听非标准端口(82/TCP),需完成两步核心配置:SELinux端口标签配置(关键,否则服务无法绑定端口) + firewalld端口放行配置。
步骤:
第一步:配置SELinux端口标签
httpd服务对应的SELinux端口标签为http_port_t(默认关联80、443等端口),82/TCP为非标准端口,需将其添加到http_port_t标签中,否则SELinux会拦截端口绑定,命令如下:
bash
# 永久将82/tcp端口添加到http_port_t标签(-a添加,-t指定标签,-p指定协议)
semanage port -a -t http_port_t -p tcp 82
# 验证配置(查看http_port_t标签是否包含82端口)
semanage port -l | grep -w 82
若需修改已有端口标签 (如替换其他标签),可使用**-m**选项(semanage port -m -t http_port_t -p tcp 82),比删除再添加更高效。
第二步:修改httpd服务配置并重启
需将httpd服务的监听端口从默认80修改为82,否则服务仍会监听默认端口,操作命令:
bash
# 编辑httpd主配置文件(课程默认路径)
vim /etc/httpd/conf/httpd.conf
# 将配置中的"Listen 80"修改为"Listen 82",保存退出后重启服务
systemctl restart httpd
# 验证httpd服务状态(确保服务正常运行,无SELinux拒绝提示)
systemctl status httpd
第三步:通过firewalld放行82/TCP端口(课程1.7节重点)
配置firewalld规则,放行82/TCP端口流量(推荐永久配置,避免重启失效),命令如下:
bash
# 场景1:临时放行(重启firewalld后失效,测试场景用)
firewall-cmd --add-port=82/tcp
# 场景2:永久放行(需重载生效,生产场景用)
firewall-cmd --add-port=82/tcp --permanent && firewall-cmd --reload
# 验证端口放行状态(确认82/tcp已在开放列表中)
firewall-cmd --zone=public --list-ports --permanent
完整验证:
配置完成后,可通过curl命令测试访问(curl http://服务器IP:82),能正常访问即说明所有配置生效。