网络安全课堂作业 IPTABLES试用
网络安全课堂作业 IPTABLES试用
琴生记录我大三下学期网络安全课程的作业及实验
作业要求
作业目的
- 试用iptables命令的基本参数和配置功能,为其他实验项目准备;
- 练习git提交作业的方法
任务内容
在自己的笔记本机器上,
- 使用vmware建立linux虚拟机实验环境,
- 先执行“iptables -F”清除可能已有的规则,
- 然后自己设计实验步骤和操作命令,通过检查“五元组”实现防火墙的基本功能,包括但不限于:
- 关闭或开放某个服务(端口)
- 关闭或开放某个主机(ip)
- 关闭或开放某个协议
- 其他配置功能
进阶功能:可选
- 部署和测试NAT功能
- 试用Nftables/nft
git提交
撰写md格式或doc格式(不是docx格式)完成报告,提交到git。
DDL
下次课(3.20)之前,git自动记录提交时间。
报告另起文档,格式可以采用技术博客风格,或者学院实验报告模板。
实验内容
储备知识
在进行实验前,我先对iptables的知识进行了回顾和查阅拓展,对于其概念和用法有了更清晰的认识。
什么是 iptables?
iptables 是一个用于配置 Linux 内核中 IPv4 数据包过滤器和网络地址转换 (NAT) 的工具。它允许系统管理员根据特定的规则集控制进出系统的网络流量。iptables 提供了一种灵活而强大的方式来保护网络安全、实现网络地址转换、限制流量等。iptables 的工作原理
iptables 是基于 Linux 内核的 Netfilter 框架实现的。当数据包进入或离开系统时,Netfilter 框架会将数据包传递给 iptables 进行处理。iptables 通过检查数据包的源地址、目标地址、协议类型、端口号等信息,并根据预定义的规则集来决定如何处理该数据包。iptables 的基本概念
在使用 iptables 时,有几个基本概念需要了解。链 (Chain):链是规则的集合,用于确定数据包在系统中的处理路径。iptables 包含几个预定义的链,如 INPUT、OUTPUT 和 FORWARD。每个链都有特定的处理方式和 默认策略。
表 (Table):表定义了特定类型的规则集。iptables 提供了四个表:filter、nat、mangle 和 raw。每个表用于不同的目的,如过滤数据包、网络地址转换等。
规则 (Rule):规则是定义在链中的指令,用于决定数据包的处理方式。规则由匹配条件和动作组成。当数据包满足匹配条件时,将执行相应的动作。iptables 的安装和配置
要使用 iptables,需要先安装它并配置相应的规则。在大多数 Linux 发行版中,iptables 已经预装并包含在默认安装中。可以使用包管理器来安装 iptables。安装完成后,可以编辑 iptables 配置文件来定义规则。常见的 iptables 命令
iptables 提供了一组命令行工具,用于管理和操作规则。以下是一些常见的 iptables 命令:
iptables 的基本语法
iptables [选项] <链名> <规则>
其中,选项用于指定不同的操作和参数,链名用于确定规则所属的链,规则定义了匹配条件和动作。
添加规则
要添加一条规则,可以使用 -A 选项,后跟链名和规则。例如,要向 INPUT 链添加一条允许 ICMP 数据包通过的规则,可以执行以下命令:
iptables -A INPUT -p icmp -j ACCEPT
此命令将在 INPUT 链末尾添加一条规则,如果数据包的协议类型是 ICMP,则将其接受。
删除规则
要删除一条规则,可以使用 -D 选项,后跟链名和规则。例如,要删除 INPUT 链中的第一条规则,可以执行以下命令:
iptables -D INPUT
此命令将从 INPUT 链中删除第一条规则。
查看规则
要查看当前定义的规则,可以使用 -L 选项,后跟链名。例如,要查看当前 INPUT 链中的所有规则,可以执行以下命令:
iptables -L INPUT
此命令将显示 INPUT 链中的所有规则。
- iptables 的规则匹配
iptables 使用规则中定义的匹配条件来确定数据包的处理方式。以下是一些常见的匹配条件和选项:
匹配条件
-p:指定数据包的协议类型,如 TCP、UDP、ICMP 等。
-s:指定数据包的源地址。
-d:指定数据包的目标地址。
-i:指定数据包进入系统的网络接口。
-o:指定数据包离开系统的网络接口。
匹配选项
–sport:指定数据包的源端口。
–dport:指定数据包的目标端口。
–state:指定数据包的连接状态,如 NEW、ESTABLISHED、RELATED 等。
–mac-source:指定数据包的源 MAC 地址。
–mac-destination:指定数据包的目标 MAC 地址。
匹配动作
-j:指定匹配成功时要执行的动作,如 ACCEPT、DROP、REJECT 等。
实验过程
根据实验要求以及有关命令,分别对22端口、192.168.0.1ip、icmp协议进行关闭和开放,结果如下图
进阶功能我简单查阅了有关资料并进行了配置,步骤大概是:
确保 Linux 系统已启用 IP 转发功能。通过编辑
/etc/sysctl.conf
文件并取消注释net.ipv4.ip_forward=1
行来实现。然后运行sudo sysctl -p
命令使修改的配置生效。配置 iptables 规则以实现 NAT 转换。:
1
2
3
4
5
6# 清空现有的 iptables 规则
sudo iptables -F
sudo iptables -t nat -F
# 设置 NAT 规则
sudo iptables -t nat -A POSTROUTING -o <外部网络接口> -j MASQUERADE其中
<外部网络接口>
是连接到互联网的网络接口,例如eth0
或wlan0
。这个规则将对从私有网络发出的数据包进行地址转换,使用外部网络接口的 IP 地址作为源 IP 地址。将 iptables 规则保存,以便在系统重启后仍然生效。可以使用以下命令将规则保存到文件中:
1
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
配置私有网络中的主机以使用 NAT 主机作为默认网关。将私有网络中的每个主机的默认网关设置为 NAT 主机的 IP 地址。这可以通过在每个主机上编辑网络配置文件或通过 DHCP 服务器进行配置来实现。
测试 NAT 功能。确保私有网络中的主机可以通过 NAT 主机访问互联网,并能够使用 NAT 主机的公共 IP 地址进行通信。测试结果如下