网安技术与应用(3)——Linux防火墙iptables的使用

一 实验目的

掌握Linux下防火墙的原理和配置方法。

二 实验内容

配置Linux下的一组防火墙规则,对内网、外网以及DMZ区交互的访问进行有效约束。

三 实验原理

防火墙作为一种访问控制的机制是确保网络安全的重要手段。针对不同的的需求和应用环境,可以量身定制出不同的防火墙系统。在众多网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。首先是Linux操作系统在系统稳定性、健壮性及价格的低廉性方面都独具优势;更为重要的是系统包含了建立Internet所需的所有服务软件包。

Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底地过滤规则是检查包中的源端口、目的端口以及连接状态等信息。在Linux 2.4以上版的内核应用里一个全新的包过滤管理工具Iptables,可以加入、插入或删除包过滤表格中的规则。

iptables的原理主要是对数据包的控制:

  1. 一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。
  2. 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

网安技术与应用(3)——Linux防火墙iptables的使用_第1张图片

四 实验条件

计算机一台,用作外终端,带有一个网卡,命名为B,带linux操作系统虚拟机,命名为A,虚拟机用作路由器。(Ubuntu 20.04)

五 实验过程

1、查看IP并ping通

将虚拟机IP地址配置到和宿主机一个网段即可,注意地址不可与其他地址冲突。

关闭宿主机防火墙后,此时A和B是可以互ping的。

  • 查看虚拟机的IP
# sudo apt install net-tools
ifconfig -a

如果说 ifconfig not found,就用第一行代码安装一下 net-tools

网安技术与应用(3)——Linux防火墙iptables的使用_第2张图片

发现IP是192.168.85.128

  • 查看window的IP
ipconfig

网安技术与应用(3)——Linux防火墙iptables的使用_第3张图片

  • 互相ping

在Windows:

ping 192.168.85.128

网安技术与应用(3)——Linux防火墙iptables的使用_第4张图片

在虚拟机:

ping 192.168.85.1

截图结果是类似的。

发现已经可以互相成功Ping通了,该步骤完成。

问题:如果Ping不通,采取以下步骤:

打开"高级安全Windows Defender"防火墙
入站规则
找到配置文件类型为“公用”的“文件和打印共享(回显请求–ICMPv4-In)”规则,设置为允许
虚拟机可以ping通主机

参考博客 解决——虚拟机无法Ping通主机

2、启动防火墙

# 启动防火墙
modprobe ip_tables
sudo ufw enable
sudo ufw reload

网安技术与应用(3)——Linux防火墙iptables的使用_第5张图片

3、设置规则

清除filter表中的规则,设置默认规则为丢弃一切报文 ,并用wireshark检验

# 设置规则
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
# ping命令检验
ping 192.168.85.1

网安技术与应用(3)——Linux防火墙iptables的使用_第6张图片

设置完后发现发送的报文已经都被丢弃了

4、限制Ping----A可Ping

设置规则,让主机A可以 ping其它机器,其它机器不可以ping主机A 【此时由虚拟机去ping的话又可以接受到包】

sudo iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 第一个IP为虚拟机地址,第二个为window地址
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT  
  • 虚拟机去ping windows:
ping 192.168.85.1

网安技术与应用(3)——Linux防火墙iptables的使用_第7张图片

  • windows去ping虚拟机:
ping 192.168.85.128

网安技术与应用(3)——Linux防火墙iptables的使用_第8张图片

5、限制Ping----A不可Ping

设置规则:让其它机器可以ping主机A ,阻止主机A ping其它机器

# 先要把之前的规则去掉
sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -A OUTPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
# 位置反一反
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
# 查看INPUT情况
sudo iptables -L
sudo iptables -P INPUT ACCEPT
  • 虚拟机去ping windows:
ping 192.168.85.1

网安技术与应用(3)——Linux防火墙iptables的使用_第9张图片

  • windows去ping虚拟机:
ping 192.168.85.128

网安技术与应用(3)——Linux防火墙iptables的使用_第10张图片

6、开放Ping

主机A可以ping其它机器,也允许其它机器ping主机A

sudo iptables -F OUTPUT
sudo iptables -F INPUT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
  • 虚拟机去ping windows:
ping 192.168.85.1

网安技术与应用(3)——Linux防火墙iptables的使用_第11张图片

  • windows去ping虚拟机:
ping 192.168.85.128

网安技术与应用(3)——Linux防火墙iptables的使用_第12张图片

六、思考题

(1)所有链的预设规则应该设置为什么?为什么?(DROP、ACCEPT?)

  • FORWARD(相当于路由器):DROP,做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet
  • INPUT:DROP,当服务器不需要与他人通信时,将INPUT设置为DROP就可以防止其他人对自身进行攻击
  • OUTPUT:ACCEPT,由于accept会过滤从本机向外发出的数据包,当没有外界信息流入,仅自己与外界通信时,是具备一定的可靠性的

(2)包过滤防火墙有什么优缺点?
参考链接:包过滤防火墙_百度百科

包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作

  • 对于一个小型的、不太复杂的站点,包过滤比较容易实现
  • 过滤路由器工作在IP层和TCP层,所以处理包的速度比代理服务器快
  • 过滤路由器为用户提供了一种透明的服务,用户不需要改变客户端的任何应用程序,也不需要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层,而IP层和TCP层与应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透明网关”,之所被称为网关,是因为包过滤路由器和传统路由器不同,它涉及到了传输层。
  • 过滤路由器在价格上一般比代理服务器便宜

  • 一些包过滤网关不支持有效的用户认证
  • 规则表很快会变得很大而且复杂,规则很难测试。随着表的增大和复杂性的增加,规则结构出现漏洞的可能 性也会增加
  • 这种防火墙最大的缺陷是它依赖一个单一的部件来保护系统。如果这个部件出现了问题,会使得网络大门敞开,而用户甚至可能还不知道
  • 在一般情况下,如果外部用户被允许访问内部主机,则它就可以访问内部网上的任何主机
  • 包过滤防火墙只能阻止一种类型的IP欺骗,即外部主机伪装内部主机的IP,对于外部主机伪装外部主机的IP欺骗却不可能阻止,而且它不能防止DNS欺骗

(3)如果规则链中两条规则是互相矛盾的,如前一条是禁止某个端口,后一条是打开这个端口,会出现什么情况?

iptables的规则匹配是按顺序匹配的,因此如果前一条是禁止某个端口,由于其位置更为靠前,将会被优先匹配,因此在这种情况下会禁止该端口。

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT

网安技术与应用(3)——Linux防火墙iptables的使用_第13张图片

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j DROP
sudo iptables -A INPUT -s 192.168.85.1 -d 192.168.85.128 -p icmp -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.85.128 -d 192.168.85.1 -p icmp -j ACCEPT

网安技术与应用(3)——Linux防火墙iptables的使用_第14张图片

七 实验问题

1、解决:ifconfig not found

如果说 ifconfig not found,就用以下代码安装一下 net-tools

sudo apt install net-tools

2、解决:虚拟机与主机Ping不通

参考博客 解决——虚拟机无法Ping通主机

你可能感兴趣的:(Ubuntu)