专栏首页Linux、云计算技术交流第十三章 iptables 防火墙(一)

第十三章 iptables 防火墙(一)

第十三章 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

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

本文分享自微信公众号 - 教主小筑(gh_e0879483602d),作者:教主小筑

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第十三章 iptables 防火墙(二)

    当然,iptbales不只可以设置默认规则,还可以手动加入很多规则。首先我们来看一下路由器的网卡配置:

    晓天
  • iptables防火墙(三)

    NAT(net address translation)网络地址转换,功能是为了实现内网访问公网的。我们知道,IPv4由于可用ip数量有限,不能满足于全球主机...

    晓天
  • Linux防火墙iptables(三)

    我们前面两篇已经把iptables介绍的比较充分了,今天来说一个iptables对layer 7的实践。我们说过iptables/netfilter工作在内核空...

    用户2645267
  • 第十四章 Firewall防火墙(一)

    Firewall防火墙是在RHEL7.0开始加入到系统中的,是系统安装后默认使用的防火墙工具。它是基于iptables工作的,可以说firewall就是ipta...

    晓天
  • Iptables防火墙(SNAT和DNAT)

    L宝宝聊IT
  • 第十四章 Firewall防火墙(二)

    现在,我们的两块网卡都是在public区域中。下面我们来给public区域配置规则,让其允许某些服务被访问。

    晓天
  • 集群(三台)

    内网环境安全性比较高,防火墙开启会影响效率,所以关闭防火墙 三台机器执行以下命令(root用户来执行)

    用户4870038
  • iptables 详解

    防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我...

    RainMark
  • SpringBoot整合kafka

    (adsbygoogle =window.adsbygoogle ||[]).push({});

    猿码优创
  • (转载非原创)iptables详解

    只是觉得写的很好分享到腾讯云,推荐腾讯云服务器,除学生机外非常便宜的活动 腾讯云活动

    xlj
  • CentOS 7 :Failed to start IPv4 firewall with iptables.

    https://blog.csdn.net/u013028876/article/details/78750561

    拓荒者
  • iptables详解

    一:前言 防 火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络...

    小帅丶
  • linux中iptables如何删除一条规则

    linux中iptables删除一条规则的方法:1、打开linux终端;2、在终端命令行中输入“iptables -L -n”命令查看出当前的防火墙规则;3、输...

    用户4988085
  • Linux防火墙iptables简明教程

    一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边...

    小小科
  • 【教你搭建服务器系列】(9)让你的服务器更安全

    除了使用密钥对之外,只能确保我们的服务器是安全的,但是并不能确保我们的应用是安全的。

    HaC
  • 利用Linux防火墙隔离本地欺骗地址的方法详解

    即便是被入侵检测和隔离系统所保护的远程网络,黑客们也在寻找各种精巧的方法入侵。IDS/IPS 不能停止或者减少那些想要接管你的网络控制权的黑客攻击。不恰当的配置...

    砸漏
  • 操作系统:Linux下的防火墙

    最近由于产品架构升级需要,在做一些环境搭建的事情。很久没做这类基础部署相关的工作,对操作系统和基础配置都有些生疏。恰好操作的过程中遇到一个与防火墙相关的...

    程序员架构进阶
  • Linux之集群部署(超简单!)

    vim /etc/udev/rules.d/70-persistent-net.rules

    大数据梦想家
  • linux防墙iptables详细介绍、配置方法与案例

    Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的防火墙工具**,它的...

    砸漏

扫码关注云+社区

领取腾讯云代金券