专栏首页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防火墙(三)

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

    晓天
  • 第八章 web服务之apache(2)

    若一台服务器上,需要架设多个站点,则可以通过虚拟主机技术来实现。但是虚拟主机技术的问题点在于该服务器内如何区分不同的站点。这里,有三种技术可以实现:基于ip、基...

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

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

    晓天
  • iptables系列教程(三)| iptables 实战篇

    公众号『开源Linux』,专注分享Linux/Unix相关内容,包括Linux运维、Linux系统开发、网络编程、以及虚拟化和云计算等技术干货。后台回复『学习』...

    开源Linux
  • CentOS 7 下使用 iptables

    系统升级到CentOS 7后总感觉iptables怪怪的,比如不管怎么保存重启后都被初始化一下,即便我最后发大绝招启动时候加命令: 首先iptables-sa...

    明哥的运维笔记
  • Debian下iptables规则重启失效问题的解决方法

    用户2135432
  • iptables 报错:iptables-restore: unable to initialize table ‘filter 的解决办法

    魏艾斯博客www.vpsss.net
  • iptables在centos中的使用

    yum install -y iptables && yum install -y iptables-services

    93年的老男孩
  • iptables系列教程(二)| iptables语法规则

    用来指明使用的表,有三种选项: filter,nat,mangle。若未指定,则默认使用filter表。

    开源Linux
  • iptables安全使用指南

    修改iptables之前,好的习惯是先备份(为什么?你尝试过修改iptables后无法登录,或者重启iptables服务后原规则丢失吗?)

    zero000

扫码关注云+社区

领取腾讯云代金券