黄玮
在两个 信任程度不同 的网络之间设置的、用于加强
访问控制
的 软硬件 保护措施。
访问控制
,此时防火墙在整个网络拓扑中的逻辑位置相当于就是网络「边界」Inbound
)。从 外网
发起,目的地是 内网
的流量方向Outbound
)。从 内网
发起,目的地是 外网
的流量方向入站
和 出站
流量,属于内部网络中节点之间的流量由于不流经防火墙,所以防火墙无法对流量进行审查,自然就无法保护了Deep Packet Insepction
, DPI
):又称 完全数据包探测(complete packet inspection) 或 信息萃取(Information eXtraction,IX),是一种网络数据包过滤技术,用来检查通过检测点数据包的内容负载部分(也可能包含其报文头部)为什么要强调 深度包检测 这个概念?
因为只有看见,才能让「访问控制」有的放矢,才能落实保护。
深度包检测
技术
深度包检测
华为、深信服(Sangfor)、启明星辰(Venustech)、山石网科(Hillstone)、新华三(H3C)
华为、深信服(Sangfor)、
启明星辰(Venustech)、山石网科(Hillstone)、新华三(H3C)、阿里云(Alibaba Cloud)
以 Linux 操作系统上的 Netfilter/iptables 机制为例
Netfilter/iptables
从 Linux
内核版本 2.4
开始,默认被包含在内核源代码树中Netfilter
工作在系统内核层iptables
工作在用户态PreRouting
和 Output
链raw > mangle > nat > filter
Ubuntu
开发团队为 Ubuntu
发行版量身定制的简化版 iptables
命令行配置工具sudo iptables –help
# 需要 root 权限
# 导出当前防火墙规则到文件
iptables-save > iptables.rules
# 备份当前规则文件
cp iptables.rules iptables.rules.bak
# 用文本编辑器编辑上一步备份出来的当前 iptables 规则文件的副本 iptables.rules
# 应用编辑后的防火墙规则
# -c 指定在还原 iptables 时候,重置当前的数据包计数器和字节计数器的值为零
iptables-restore < iptables.rules
# 随时可以使用之前备份的 iptables.rules.bak 来重置回最近一次没问题的规则
将公网 IP 映射到私有 IP ,而外网多个 IP 被映射到同一内部共有 IP 地址的不同端口
按照课本里的 实验四:防火墙规则调试 动手实验完成。
摘录 nftables 官网 的一句话描述
nftables replaces the popular {ip,ip6,arp,eb}tables. This software provides a new in-kernel packet classification framework that is based on a network-specific Virtual Machine (VM) and a new nft userspace command line tool. nftables reuses the existing Netfilter subsystems such as the existing hook infrastructure, the connection tracking system, NAT, userspace queueing and logging subsystem.
Netfilter
内核nftables
简化了配置语法和新增了「语法糖」
nftables
提升了规则匹配和报文处理性能nftables
支持导出数据为 JSON
和 XML
格式nftables
增强了调试便利性nftables
没有内置默认「表/链」# 检查当前系统内核是否加载了 nf_tables 内核模块
modinfo nf_tables
# 如下输出信息表示已加载
# filename: /lib/modules/5.7.0-kali1-amd64/kernel/net/netfilter/nf_tables.ko
# alias: nfnetlink-subsys-10
# author: Patrick McHardy <kaber@trash.net>
# license: GPL
# depends: nfnetlink
# retpoline: Y
# intree: Y
# name: nf_tables
# vermagic: 5.7.0-kali1-amd64 SMP mod_unload modversions
# 检查加载了哪些 nf_tables 有关的模块
lsmod | grep nf_tableso
# nf_tables 229376 237 nft_compat,nft_counter,nft_chain_nat
# nfnetlink 16384 4 nft_compat,nf_conntrack_netlink,nf_tables
# 检查当前系统上是否已安装 nftables 工具
apt policy nftables
# nftables:
# Installed: 0.9.6-1
# Candidate: 0.9.6-1
# Version table:
# *** 0.9.6-1 500
# 500 http://http.kali.org/kali kali-rolling/main amd64 Packages
# 100 /var/lib/dpkg/status
# 如果没有安装,则执行安装操作
sudo apt update && sudo apt install nftables
# 导出 iptables 规则
iptables-save > iptables.rules
# 使用 iptables-restore-translate 翻译 iptables 规则并保存
iptables-restore-translate -f iptables.rules > ruleset.nft
# 查看当前 nftables 规则
nft list ruleset
# 确认已备份当前主机的防火墙规则
# nftables 已加载了当前防火墙规则
# 清空 iptables 规则,并准备禁用 iptables 只保留 nftables 用来规则防火墙规则
sudo iptables -F
sudo ip6tables -F
nftables
物理隔离
方式实现 不同信任程度 之间网络的隔离填补防火墙「防外不防内」的防护能力空白:专注于「内部网络」安全问题