《网络安全》实验指导书
Linux 系统 iptables 防火墙
一、实验目的
1、熟悉和掌握 TCP/IP 协议的基础概念和方法;
2、掌握防火墙的概念、功能分类及实现方法;
3、掌握 Linux 系统防火墙和 iptables 防火墙的配置方法。
二、实验原理
1、防火墙的任务
防火墙在实施安全的过程中是至关重要的。一个防火墙策略要符合四个目标,而每个目标通常
都不是一个单独的设备或软件来实现的。大多数情况下防火墙的组件放在一起使用以满足公司安全
目的需求。防火墙要能满足以下四个目标:
1> 实现一个公司的安全策略
防火墙的主要意图是强制执行你的安全策略,比如你的安全策略需要对 MAIL 服务器的 SMTP 流
量做限制,那么你要在防火墙上强制这些策略。
2> 创建一个阻塞点
防火墙在一个公司的私有网络和分网间建立一个检查点。这种实现要求所有的流量都要经过这
个检查点。一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量。网络安全中
称为阻塞点。通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实
现安全目的。
3> 记录 internet 活动
防火墙还能强制记录日志,并且提供警报功能。通过在防火墙上实现日志服务,管理员可以监
视所有从外部网或互联网的访问。好的日志是适当网络安全的有效工具之一。
4> 限制网络暴露
防火墙在你的网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的一些信息以增
加保密性。当远程节点侦测你的网络时,他们仅仅能看到防火墙。远程设备将不会知道你内部
网络的布局以及都有些什么。防火墙提高认证功能和对网络加密来限制网络信息的暴露。通过
对所能进入的流量进行检查,以限制从外部发动的攻击。
2、iptables 及其命令格式
iptables 是 Linux 2.4.X 的内核防火墙,其工作原理为对经过网络模块的数据包的处理,各数
据包按流经位置进入相应的规则链,iptables 逐条对比链内的规则,如果满足条件,则进行相应的
动作。其配置文件为/etc/sysconfig/iptables。
命令格式: iptables 指令+规则链+条件+动作
iptables 指令(对规则链的操作)
–A chain --append 添加到规则链中
–D chain --delete 从规则链中删除匹配的规则
–L[chain] --list 列出在一条链或所有链上的规则 (--line-numbers)
–F [chain] --flush 清除一条链或所有链上的规则
-P chain target --policy 把一个规则链上的策略改变为目标
iptables 内置有三个表 filter、nat、mangle,缺省为 filter 表,可使用-t 参数来选择
操作的表,用户可自定义表
iptables 规则链(chain)
进来的数据包
发出的数据包
路由
FORWARD
INPUT
OUTPUT
Iptables 条件
本机
源地址
目的地址
接收的接口
发送的接口
-s IP 地址
-d IP 地址
-i 接口名
-o 接口名
-p tcp/udp/icmp/47 协议
--dport 目的端口
--sport 源端口
--syn 建立连接请求
-m state
ESTABLISHED / RELATED / NEW / INVALID
状态包过滤
iptables 动作(policy)(对数据包的操作)
-j ACCEPT
-j DROP
-j REJECT( tcp-reset/icmp-port-unreachable )
三、实验步骤
1、准备工作
同一局域网内的 2 台 PC
a) A 的操作系统为 Linux,在 A 安装网络服务及配置 iptables;
b) B 对 A 的配置进行验证,主要使用基于 icmp 协议的 ping 命令和基于 tcp
协议的 ftp 相关命令或软件,假定其 ip 为 10.10.96.123;
c) 为避免与机房其他主机发生 IP 冲突,最好重设 A、B 地址为静态地址,
A、B 在同一网段,且不使用 192.168.1.x 等机房常用网段;测试 A、B
可互 ping 通。
在 A:
1) 启动 vsftpd
2)增加 1 个一般用户,如 abc
3)添加该新用户为 ftp 用户
编辑(可使用 gedit 等) /etc/vsftpd/vsftpd.conf,加入
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/ulis
编辑 gedit /etc/vsftpd/ulis,加入
Abc
4)验证系统已启动 iptables (默认为 enable)
system setting -> server setting -> service config -> iptables
建议学习使用 netstat 命令,分析网络连接状态
2、配置 Linux 的系统防火墙
1)A: start -> system setting -> security level -> enable ftp(only),允许系统建立 ftp
连接
2)B: ftp 测试之 (使用 user psw ls lcd get 等命令)
3)A: start -> system setting -> security level -> disable ftp,禁止系统建立 ftp 连接
4)B 测试之
3、使用 iptables 命令配置防火墙,熟悉几类基本过滤原则的配置方法(有关 ftp 的
操作,必须确认系统防火墙允许建立 ftp 连接,因其优先级高于 iptables 配置)
0> 备份 /etc/sysconfig/iptables
1> 阻塞某 IP 的连接
A: 阻塞
# iptables -A INPUT -s 10.10.96.123 -j DROP
B: ping,测试之
A: 取消阻塞
# iptables -D INPUT -s 10.10.96.123 -j DROP
B: ping,测试之
(以下只列出实验过程的关键步骤,其他命令与测试请在实验过程中补足)
2> 阻塞某网段的连接
A: # iptables -A INPUT -s 10.10.96.1/24 -j DROP
A: # iptables -D INPUT -s 10.10.96.1/24 -j DROP
3> 阻塞某协议的连接,如 icmp
A:# iptables -A INPUT -p icmp -j DROP
B: ping,测试之
A:# iptables -D INPUT -p icmp -j DROP