前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十三章 iptables 防火墙(一)

第十三章 iptables 防火墙(一)

作者头像
晓天
发布2019-07-04 14:33:21
1.2K0
发布2019-07-04 14:33:21
举报

第十三章 iptables 防火墙(一)

13.1 防火墙简介

防火墙(firewall)一词本是建筑用于,本意是为了保护建筑物不受火灾侵害的。被借鉴到了在网络通信领域中,表示保护局域网或主机不受网络攻击的侵害。

网络中的防火墙设备,可分为三种:代理防火墙、包过滤防火墙、状态监测防火墙。

其中:代理防火墙是代理内网主机上网的设备,可以是路由器,也可以是一台主机两块网卡,一连内网、一连公网,以代替内网主机访问公网资源,又被称为nat(网络地址转换服务器、或nat堡垒服务器);包过滤防火墙是检测所通过数据包,可监测到数据包中源ip、目的ip、源端口、目的端口、标记位等信息,并根据事先制定的通信规则决定数据包是否转发;状态监测防火墙除了可以监测数据包中的内容外,还可以跟踪每个客户的每次通信,当有攻击数据在开始时伪装成正常访问,之后突然开始做攻击时,会被状态监测防火墙监测到并加以屏蔽。

在Linux系统中,防火墙工具使用的是iptables,可实现代理防火墙、包过滤防火墙的功能,而状态监测防火墙一般是企业购买专用的防火墙设备完成的。

tips:本章iptables部分,可以说是本书中最难的一章,需要读者有良好网络通信原理的基础,并且之后的每个案例,都需要认真思考,明白其中的原理与功能。一定要耐心练习,切不可贪速冒进。

13.2 iptables配置

13.2.1 原理介绍

在RHEL7.X之后的系统,默认使用的都是firewall防火墙工具,但其实质上还是基于iptables工作的,可以说,iptables是firewall的核心,firewall只不过是iptables的外壳而已。

iptables采用规则集的方式工作。所谓规则集,就是多个规则的集合,如,我们对内部局域网指定如下规则:

  • 拒绝外网访问内网的80端口
  • 拒绝外网访问内网的21端口
  • 拒绝外网访问内网的25端口
  • 拒绝外网访问内网的22端口

那么这些规则合起来,我们就称之为规则集,因为在审核时,是由上至下逐条审核的,类似于链式结构,所以规则集又称为规则链。

在iptables中,为了应付不同场景,定义了多个链,不同的链会在不同的时机使用,最常用的链共有三个:INPUT、FORWARD、OUTPUT。

iptables因为其包过滤性,可以被应用在路由器上,用以对进出子网或局域网的数据做审核,路由器每做一次通信,都会审核一次相应的规则链。当然,我们也可以把给规则指定在哪一个网络接口(即网卡)上使用,则这条规则仅针对该网卡生效了。

下面我们来介绍一下常规三链的审核时机:

INPUT链:当通信的目的方为本设备时审核INPUT链。即ip数据包中的目的ip为本路由器某网卡ip时。

FORWARD链:当路由器做转发时,审核FORWARD链。

OUTPUT链:当通信的发送方为本设备时审核INPUT链。即ip数据包中的源ip为本路由器某网卡ip时。

tips:关于iptables的具体工作原理,市面或网络上有很多相关教材,但由于iptables的原理比较深奥,不太建议初学者直接参看这些资料。本人不想直接讲解这些内容,容易扰乱大家的思路,所以在这里只简单介绍一下iptbales的基本原理,大家可以在学习完毕本章,对iptables有了一定了解之后再自行去看这些资料,应该会更容易理解一些。

13.2.2 启动iptables

先来看实验图:

图中由路由器连接内网与公网,路由器双网卡,内网卡ip:192.168.10.1,公网卡ip:202.0.0.2。因为我们只做了三台主机的简单实验环境,所以主机A与主B各自的网关都指向所连的路由器网卡。

路由器用一台Linux主机代替,配置双网卡及ip,并开启路由功能。下面我们来看一下具体的iptables命令。

首先,CentOS7.X中默认使用的是firewall防火墙,它是iptables的外壳,或者可以说iptables是被firewall掩盖在之下的,所以要使用iptables必须先关闭firewall,显露出iptables才可以,具体命令如下:

yum -y install iptables iptables-services ---安装相关软件包

systemctl unmask iptables ---解覆盖,即显现iptables

systemctl mask firewalld ---覆盖firewalld

systemctl stop firewalld

systemctl restart iptables

以上是临时启用iptables,关闭firewall,而要让本机重启后直接启用iptables、关闭firewall,则可使用下面的命令:

systemctl enable iptables

systemctl disable firewalld

服务启动后,便可以使用iptables命令了。

13.2.3 默认规则配置

iptables -L ---查看三个链中的规则

图中,可见链中有很多自带的规则,每一行代表一条规则,其中各列的意义如下:

target 列表示操作决定,ACCEPT表示允许,REJECT或DROP表示拒绝

prot 列表示本规则针对的协议

opt 列表示参数、选项

source 列表示针对的源ip

destination 列表示针对的目的ip

最后一列表示 相关参数、状态等介绍,相当于备注

我们可以清除掉然后写入自定义规则

iptables -F ---清空三个链,再次iptables -L 可查看到规则被清空了

下面来演示一下手动定义规则,首先我们看到上图中,每个链后面的()中都有一个policy设置,这是该链的默认规则,表示当某个通信来审核链时,若链中没有匹配的规则,该如何操作,ACCEPT表示默认允许,DROP表示默认拒绝。配置命令如下:

iptables -P INPUT DROP ---设定INPUT链的默认规则为拒绝

那么当我们用ApingR或BpingR时,都会不通了,因为INPUT链把它们拒绝了,注意:此时数据通信的目的方都是路由器,则会审核INPUT链。但是我们可以思考一下,此时ApingB是否通呢?答案是通的,原因是,当ApingB时,路由器的功能是转发数据,转发时审核的是FORWARD链,与INPUT链无关,而FORWARD链的默认规则我们没有改动,仍旧是ACCEPT,所以ApingB通。

为了后面的实验,我们恢复一下默认规则:

iptables -P INPUT ACCEPT

说明:命令中是严格区分大小写的,所以读者一定注意大小写的准确。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档