# 网络安全大作业报告
## 选题: ipatables 及 l7lter 的使用
### 摘要
ipatables 是一个常用的包过滤防火墙应用。但是,用户的安全设定实际上是由操作系统内部的一个数据包处理模块(netlter)执行的,我们可以把 iptables 看做一个客户端代理。iptables 的核心为四表五链。四表为 raw 表、mangle 表、net 表、lter 表。五链为 PREROUTING、INPUT、FORWARD、OUTPUT、POATROUTING。我们可以向 iptables 中加入不同的过滤规则,实现特定功能。在本次实验中我们测试了 iptables 的基本 accept、drop、reject 动作和 nat 过滤功能。
然而 netlter 不带有应用层过滤的功能。想要实现应用层协议的过滤,我们选用了 l7lter。l7lter 从 2013 年就没有维护,必须选择较老版本的内核才能成功使用 l7lter 提供的过滤协议,在本次实验中我们选用 centos6.9 进行实验。实验需要先对 Linux 内核打补丁,增加 l7lter 的功能模块。完成试验后,能针对性的过滤应用层协议为 http、QQ、迅雷等常见的应用层数据包。
**关键字:**iptables、l7lter、包过滤、防火墙、应用层网关
#
# 第一部分 iptables
## 1 简介
### 1.1 iptables 与 netlter
iptables 其实不是真正的防火墙,我们可以把它看做一个客户端代理。用户通过 ipta- bles 这个代理,将用户的安全设定执行到 netlter 中。netlter 才是真正的防火墙。netlter 是 Linux 操作系统内部的一个数据包处理模块,它具有如下功能:数据包内容修改、数据包过滤的防火墙功能。
### 1.2 链
进出报文从网卡到达用户空间需要经过多道关卡,这些关卡在 ipatables 中被称为链(chian),每个链上都放置了一串规则。图 1 简单形象地描述了一个数据包进出主机时会经过的链:
![](https://www.writebug.com/myres/static/uploads/2021/11/15/0980243c319185bb462d9a664eeea037.writebug)
图 1: iptables 链:发送方的数据包到达网卡后,在内核空间内先经过 PREROUTING(转发前)链。当本机的内核支持 IP_FORWARD 时,数据包的目的地址个能不是本机。若目标为本机,数据包进入 INPUT 链,否则进入 FORWARD(转发)链和 POSTROUTING(转发后)链。本机发送报文时,数据包先经过 OUTPUT 链,再经过 POSTROUTING 链,最终经过网卡转发至其他主机。
### 1.3 表
具有相同功能的规则的集合叫做 ‘表’。不同功能的规则,我们可以放置在不同的表中进行管理。iptables 已为我们定义了 4 种表:
lter 表 负责过滤功能;
nat 表 负责网络地址转换功能;
mangle 表 拆解报文,作出修改,并重新封装;
raw 表 关闭 nat 表上启用的连接追踪机制。
每个链上的规则存在于不同的表如图 2 中:
PREROUTING raw 表、mangle 表、nat 表;
INPUT mangle 表、lter 表;
FORWARD mangle 表、nat 表、lter 表;
OUTPUT raw 表、mangle 表、nat 表、lter 表;
POATROUTING mangle 表、nat 表。
![](https://www.writebug.com/myres/static/uploads/2021/11/15/1b7264866311c51a912a698d6f0d2244.writebug)
图 2: 不同链上的规则允许存在的表
### 1.4 处理动作
处理动作在 iptables 被称为 target,常用的有:ACCEPT、DROP、REJECT、SNAT、MASQUERADE、DNAT、REDIREACT、LOG。
## 2、实验
### 2.1 基础命令
#### 2.1.1 查看规则命令
查看对应表的所有规则。-v 表示 verbose,详细的。
```c++
iptables -t <表名> (-v) -L
```
查看指定表指定链的所有规则。-n 表示不解析 IP 地址,–line-number 表示显示规则的序号,-x 表示显示计数器的精确值。
```c++
iptables -t (--line-number) <表名>(-nvx) -L <链名>
```
为了方便上述选项常被表示为:
```c++
iptables -line -t <表名> -nvxL(<链名>)
```
#### 2.1.2 添加规则命令
在某条链的尾部(-A)添加一条规则
```c++
iptables -t <表名> -A <链名><匹配条件> -j DROP
# 将原地址 192.168.1.146的包丢弃
iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
```
在指定链的首部添加一条规则
```c++
iptables -t <表名> -I <链名><匹配条件> -j <动作>
```
在指定表的指定链的指定位置添加一条规则
```c++
iptables -t <表名> -I <链名><规则序号><匹配条件> -j <动作>
```
#### 2.1.3 删除规则
按规则序号进行删除
```c++
iptables -t <表名> -D <链名><规则序号>
```
按照具体的匹配条件与动作进行删除
```c++
iptables -t <表名> -D <链名><匹配条件> -j <动作>
```
删除指定表中的指定链中的所有规则
```c++
iptables -t <表名> -F <链名>
```
删除指定表的所有规则
```c++
iptables -t <表名> -F
```
### 5.1.4 修改规则
修改指定表中指定链的指定规则
```c++
iptables -t <表名> -R <链名><规则序号><匹配条件> -j <动作>
iptables -t filter -R 3 -s 192.168.1.146 -j ACCEPT
# -s 192.168.1.146为原本的匹配条件,如果忽略此匹配条件,修改后的规则源地址可能会变成0.0.0.0/0
```
修改指定表的指定链的默认策略(默认动作),并非修改规则
```c++
iptables -t <表名> -P <链名> <动作>
```
### 5.1.5 保存规则
```c++
# 方法一
service iptables save
# 方法二
iptables -save >/etc/sysconfig/iptables
iptables -restore </etc/sysconfig/iptables
```
### 2.2 实验环境
使用 vmware fusion 搭建实验环境,使用虚拟主机 <=> 虚拟路由 <=> 虚拟服务器形式。虚拟主机和虚拟路由均为虚拟机,虚拟服务器在本机搭建。
vmware 默认使用 NAT 模式并使用虚拟网卡 vmnet8 与主机共享网络。具体结构如下图所示:
![](https://www.writebug.com/myres/static/uploads/2021/11/15/1eedf6d2def29e2de90f8e71eaafacc2.writebug)
图 3: vmware NAT 模式示意图: 我们在/Library/Preferences/VMware Fusion/vm- net8/dhcpd.conf 中配置虚拟 DHCP 服务器分配 ip 地址范围为 172.16.176.128- 172.16.176.254。两台试验用虚拟机使用固定 ip 172.16.176.253 和 172.16.176.137。vmnet8 的 ip 为 172.16.176.2。主机的 ip 为 192.168.1.2。
我们使用虚拟机 1 为客户端,虚拟机 2 为路由,主机网卡为服务器端。
#### 2.2.1 配置路由表
一开始虚拟机 1 与虚拟机 2 的路由表如下图所示:
![](https://www.writebug.com/myres/static/uploads/2021/11/15/db9ac4399701c419eac8fa8f377db57e.writebug)
(a)客户端虚拟机路由表
![](https://www.writebug.com/myres/static/uploads/2021/11/15/0f060723d212a01cca0642f539d57316.writebug)
(b)路由虚拟机路由表
图 4: 虚拟机路由表
配置客户端虚拟机路由表:删除第一条(默认网关为 vmware 虚拟网关),添加默认网关为路由虚拟机。添加方法与结果如下:
```c++
# 删除源默认网关
$sudo route del default
# 添加新默认网关
$sudo route add default gw 172.16.176.137
```
最终客户端路由表如下图所示:
![](https://www.writebug.com/myres/static/uploads/2021/11/15/c5c9491bfd6b93834a09c66ae4fa7719.writebug)
图 5: 客户端路由表
配置路由虚拟机转发功能:
```c++
temp@ubuntus:-$ sudo systl -w net.ipv4.ip_forward=1
```
#### 2.2.2 验证配置正确
我们在客户端虚拟机 ping 服务器主机,使用 traceroute 观察转发路径。测试成功!
![](https://www.writebug.com/myres/static/uploads/2021/11/15/73a69c37f6c682a635b7dad839ab63c5.writebug)
图 6: traceroute 测试结果
### 2.3 实验内容
#### 2.3.1 测试基本功能
这一阶段我们使用虚拟机 1 和虚拟机 2 进行测试。虚拟机 2 在 8888 和 8889 端口分别跑有两个 http 服务。在虚拟机 1 上 curl 都能得到回显结果:
![](https://www.writebug.com/myres/static/uploads/2021/11/15/0041800fb7187523143370a8977fdd67.writebug)
图 7: curl 结果
**ACCEPT/DROP icmp 包**
设置虚拟机 2 的规则如下
```c++
# 先接受ICMP
ipta
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:课程word+演示答辩PPT+代码+项目截图 用Python实现的iptables。本项目使用vmwarefusion搭建实验环境,使用虚拟主机<=>虚拟路由<=>虚拟服务器形式。虚拟主机和虚拟路由均为虚拟机,虚拟服务器在本机搭建。 iptables 的核心为四表五链。四表为 raw 表、mangle 表、net 表、lter 表。五链为 PREROUTING、INPUT、FORWARD、OUTPUT、POATROUTING。我们可以向 iptables 中加入不同的过滤规则,实现特定功能。在本次实验中我们测试了 iptables 的基本 accept、drop、reject 动作和 nat 过滤功能。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125661306
资源推荐
资源详情
资源评论
收起资源包目录
Python实现ipatables及l7lter的使用.zip (114个子文件)
课程论文报告.docx 945KB
.gitignore 34B
LICENSE 1KB
Main.lyx 58KB
安装centos6.9虚拟机.md 6KB
._安装centos6.9虚拟机.md 423B
READMEbefore.md 43B
README.md 20KB
Pipfile 138B
protocol.png 957KB
Screen Shot 2019-05-31 at 11.02.44 AM.png 957KB
Screen Shot 2019-05-31 at 12.06.07 PM.png 712KB
before.png 672KB
20-4d142052e1ec11b2b069ca123e0d06e0.png 488KB
ifconfig.png 418KB
Screen Shot 2019-05-31 at 11.23.43 AM.png 418KB
21-e00ef5749e4512eced4370328375b2f2.png 411KB
gateway.png 380KB
19-411e9ef8163e95dac8b2f49ec9f90f11.png 376KB
24-69bc9bef43855186dc8d96a7bddac807.png 356KB
Screen Shot 2019-05-31 at 8.56.26 AM.png 329KB
core.png 329KB
route-table.png 290KB
Screen Shot 2019-05-31 at 9.30.45 AM.png 278KB
conf.png 278KB
27-ac65e9e0eef25055f23a64de68f51ddb.png 270KB
Screen Shot 2019-05-31 at 8.50.30 AM.png 223KB
Screen Shot 2019-05-31 at 10.25.55 AM.png 212KB
boot.png 212KB
Screen Shot 2019-05-31 at 2.54.20 AM.png 200KB
vm_boot_err.png 200KB
25-e31056a2e1a2568d7e52a58e6f315981.png 159KB
26-790f284443c5e5bac28693894ab936cd.png 143KB
17-32fb0e076b62eacfe1c9eff2d1a660d0.png 126KB
changek.png 116KB
28-528a98505d73d2b2d6139b4ed958f5ad.png 112KB
login.png 106KB
icmp-drop-wireshark.png 80KB
11-7492640dc9385eabb033dbff4af19cee.png 75KB
icmp-accept-wireshark.png 69KB
after.png 65KB
install-iptables.png 63KB
9-aa0f3adfb292eee83903d9e11bc1c674.png 61KB
3-b785dca1eb513adbc446fe6208f4d9ff.png 56KB
nat-wireshark.png 55KB
curl-nat.png 50KB
string-filter.png 40KB
graph.png 39KB
8889-reject-wireshark.png 38KB
core_patch.png 37KB
chain.png 37KB
icmp-accept.png 36KB
14-449d5cae30fd324e76fedbbdc6d94f22.png 33KB
22-e4fa198b2ee2728f56d19868bdfa8bac.png 33KB
Screen Shot 2019-05-31 at 10.20.20 AM.png 29KB
13-d91f7f46c69df88386f72ba24b1a4713.png 28KB
2-3b906fabd4f0519fe4f40bcbe4ba58a1.png 26KB
29-d0f091631a7e52bc321d8dbe5ab9b093.png 26KB
Screen Shot 2019-05-31 at 10.27.03 AM.png 25KB
1-f26366e8c598c30c1de3626f4f82a69b.png 25KB
8889-reject.png 25KB
client-new-route.png 25KB
client-route.png 24KB
Screen Shot 2019-05-31 at 2.37.28 AM.png 23KB
vmware-tools install failed.png 23KB
vmware-tools install failed.png 23KB
Touch Bar Shot 2019-05-31 at 2.37.12 AM.png 23KB
add protocal.png 22KB
sbin.png 22KB
traceroute.png 21KB
icmp-drop.png 21KB
route change.png 20KB
curl.png 20KB
icmp drop.png 20KB
router-route.png 20KB
10-dd3410d517dafbbfafbb10ba5b389780.png 19KB
accept icmp.png 18KB
23-ba8a08540f7b2f7246ca11b1d2f6c93a.png 18KB
drop-http.png 17KB
Screen Shot 2019-05-31 at 10.20.04 AM.png 17KB
vmware.png 17KB
change src ip.png 15KB
nat-filter.png 15KB
15-fd57e4df786f3234fc80205f0d458ffa.png 14KB
make module.png 14KB
string-filter.png 14KB
default rject.png 13KB
8-ca145abb4b8efa74bb696e957653e2f7.png 12KB
reject 8888.png 12KB
ipforward.png 12KB
12-974b3e62c0ca5ceaad75f982a332f377.png 12KB
18-30cd2b82caf732285c4aa8d19431398c.png 12KB
6-6b876a717b93bd721de9ce246b6355aa.png 12KB
drop.png 12KB
4-d3fe52029beb2f76639b4f0800a00618.png 11KB
7-e9292f50cfdfe3fbcccf8091720300d2.png 10KB
5-4cfb238dbb37dfe0ef1fb4399ee32e09.png 9KB
16-8a1546503b9c7ed1df04b6405d8495db.png 8KB
._Screen Shot 2019-05-31 at 9.30.45 AM.png 576B
._Screen Shot 2019-05-31 at 8.56.26 AM.png 576B
共 114 条
- 1
- 2
资源评论
- 笑着学2023-06-30支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
shejizuopin
- 粉丝: 1w+
- 资源: 1300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功