ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

网络基础(防火墙概述、功能、分类、工作原理、工作模式、Linux环境下的策略配置iptables)

2020-12-10 11:32:02  阅读:180  来源: 互联网

标签:iptables 0.0 Linux 防火墙 规则 数据包 路由


文章目录

网络基础

一、防火墙

1. 概述

防火墙是具备安全防护功能的网络设备。

隔离网络:将需要保护的网络与不可信任的网络进行隔离,隐藏信息并进行安全防护。

2. 功能

  1. 访问控制(ACL)
  2. 攻击防护
  3. 冗余设计
  4. 路由、交换
  5. 日志记录
  6. 虚拟专网VPN
  7. NAT

3. 分类

  • 按防火墙形态
  1. 硬件防火墙
  2. 软件防火墙
  • 按技术实现
  1. 包过滤防火墙
    工作在网络层,仅根据数据包头中的IP地址、端口号、协议类型等标志确定是否允许数据包通过。在符合防火墙规定标准之下,满足安全性能以及类型才可以进行信息的传递,而一些不安全的因素则会被防火墙过滤、阻挡。

  2. 状态检测包过滤防火墙
    工作在2~4层,访问控制方式与1同,但处理的对象不是单个数据包,而是整个连接,在网络层有一个检查引擎截获数据包并抽取出与应用层状态有关的信息,通过规则表和连接状态表,综合判断是否允许数据包通过。

  3. 应用代理防火墙
    应用代理防火墙的工作范围就是在OIS的最高层,位于应用层之上。可以完全隔离网络通信流,通过特定的代理程序就可以实现对应用层的监督与控制。

  4. WAF防火墙
    WAF的出现是由于传统防火墙无法对应用层的攻击进行有效抵抗,并且IPS也无法从根本上防护应用层的攻击。它能在应用层理解分析HTTP会话,因此能有效的防止各类应用层攻击,同时他向下兼容,具备网络防火墙的功能。

  5. 应用层防火墙

4. 防火墙原理

  1. 区域隔离
    在这里插入图片描述
    Untrust(非信任域):通常用来定义Internet等不安全网络,用于网络入口线接入;
    DMZ(隔离区):通常放置一些不含机密信息的公用服务器;
    trust(信任区):通常用来定义内部用户所在的网络。
  2. 状态检测

在这里插入图片描述

状态检测表:记录你的会话状态,如源IP、目标IP、源端口号、目标端口号、从哪个端口流入、路由记录等;
初始的状态检测表为空,在经过策略、路由等匹配后才会有记录。

5. 防火墙工作模式

5.1 透明模式

一般用于用户网络已经建设完毕,网络功能基本实现,用户需要加防火墙实现安全区域隔离的要求。

在这里插入图片描述

5.2 路由模式

一般用于防火墙当作路由器和NAT设备连接上网的同时,提供安全过滤功能。

在这里插入图片描述

5.3 混杂模式

为透明模式和路由模式的混合

在这里插入图片描述

6. Linux环境下防火墙策略配置

1. 概述

netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制。iptables 则是一个命令行工具,用来配置 netfilter 防火墙。

在这里插入图片描述

Netfilter/iptables 有三部分组成,分别是:Netfilter 框架、Iptables(内核空间)、Iptables 命令行工具(用户空间)。

2. netfilter 防火墙原理

对进出主机的数据包进行过滤,通过 iptables 设置一些规则(rules)。所有进出主机的数据包都会按照一定的顺序匹配这些规则,如果匹配到某条规则,就执行这条规则对应的行为(ACCEPT),比如抛弃该数据包或接受该数据包(DROP)。

在这里插入图片描述

3. table 与 chain

iptables中有“四表五链”

  1. table
    iptables 用表(table)来分类管理它的规则(rule),根据 rule 的作用分成了好几个表,如用来过滤数据包的 rule 就会放到 filter 表中,用于处理地址转换的 rule 就会放到 nat 表中…

“四表”:

  • filter
    filter 表里面的规则主要用来过滤数据, 控制数据包是否允许进出及转发,可以控制的链路有input、forward、output;
  • nat
    用来处理网络地址转换的,控制要不要进行地址转换,以及怎样修改源地址或目的地址,从而影响数据包的路由,达到连通的目的,这是路由器必备的功能,可以控制的链路有prerouting、input、output、postrouting;
  • mangle
    修改数据包中的原数据,可以控制的链路有prerouting、input、forward、output、postrouting;
  • raw
    控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting、output

最常用的是 filter 表和 nat 表。

  1. chain
    表中的规则(rule)又被编入了不同的链(chain),由 chain 来决定什么时候触发 chain 上的这些规则。
PREROUTING:接收的数据包刚进来,还没有经过路由选择,即还不知道数据包是要发给本机还是其它机器。这时会触发该 chain 上的规则。
INPUT:进站链,已经经过路由选择,并且该数据包的目的 IP 是本机,进入本地数据包处理流程。此时会触发该 chain 上的规则。
FORWARD:转发规则链,已经经过路由选择,但该数据包的目的 IP 不是本机,而是其它机器,进入 forward 流程,此时会触发该 chain 上的规则。
OUTPUT:出站链,本地程序要发出去的数据包刚到 IP 层,还没进行路由选择。此时会触发该 chain 上的规则。
POSTROUTING:本地程序发出去的数据包,或者转发(forward)的数据包已经经过了路由选择,即将交由下层发送出去。此时会触发该 chain 上的规则。

4. 基本命令

iptables基本语法格式:iptables [-t table] COMMAND [Match] -j ACTION

-t
来设置对哪一张表生效,默认是filter表。如果是要对nat操作,则需要注明-t nat;

Command
告诉程序该做什么,如:插入、或删除一个规则;
如 -A:是代表在所选择的链的最后添加一条规则;
   -D:从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除;
   -R:取代现行规则,规则被取代后并不会改变顺序;
   -I:插入一条规则,原本该位置上的规则将会往后移动一个顺位;
   -L:查看规则
   
Match
是用来指定过滤数据包所参照的条件。如源IP地址、网络接口、端口、协议类型等;
如 -p:指定协议,如 -p tcp 代表针对TCP协议;
   -s:指定源地址,如 -s 10.0.0.1 指针对源地址为10.0.0.1的数据包;
   -d:指定目的地址;
   --sport:指定源端口;
   --dport:指定目的端口;
   -i:指定进入网卡,如 -i eth0 是针对本地所使用的eth0网络接口。
   -o:指定出去网卡
   
ACTION
通过对数据包与所有规则的匹配结果,内核将做出相应的处理动作。
如 -j ACCEPT:表示当信息包与具有ACCEPT目标的规则完全匹配时会被接受(允许它前往目的地);
   -j DROP:不允许见进行某操作

操作链的部分命令:

iptables -L
列出某规则链中的所有规则。
-F
删除某规则链中的所有规则。
-Z
将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
-N
定义新的规则链。
-X
删除某个规则链。
-P
定义默认过滤政策。,也就是未符合过滤条件之封包,预设的默认处理方式。
-E
修改某自订规则链的名称。

保存&导入过滤配置文件:

保存配置文件:
iptales-save > 路径
导入配置文件:
iptables-restore < 路径

查看filter表的默认配置:

[root@localhost Desktop]# iptables -t filter -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)  # 默认策略为:ACCEPT
 pkts bytes target     prot opt in     out     source               destination         
    6   342 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    1    48 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    3   180 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    1   328 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
#          处理动作   协议类型   进口    出口        源地址                目标地址
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 28 packets, 2076 bytes)
 pkts bytes target     prot opt in     out     source               destination    
  • 模拟编写nat表相关规则
  1. 私网网段为10.1.1.0/24上的一台主机源IP地址为10.1.1.11,向公网网段为20.1.1.0/24上的服务器地址为20.1.1.22发送请求,经过linux网关服务器进行路由后的处理:

在这里插入图片描述
编写POSTROUTING链规则(路由后):

iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 10.1.1.0/24 -j SNAT --to-source 22.1.1.11
或者
iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 10.1.1.0/24 -j MASQERAND
# MASQERAND:当linux网关服务器上的公网IP变更了,都会将源IP地址,转换为公网地址,然后再到服务器

当收到路由后(POSTROUTING )的tcp协议,出口为 eth1,源地址为10.1.1.0/24网段的IP请求时,将其转换为公网IP:22.1.1.11。

  1. 服务器20.1.1.22响应请求,通过网关的公网IP地址:22.1.1.11,然后到私网IP,经过linux网关服务器进行路由前处理:

在这里插入图片描述

编写PREROUTING链(路由前):

iptables -t nat -A PREROUTING -i eth1 -d 20.1.1.11 -p tcp --dport 80 -j DNAT(目标地址转换) --to-destination 10.1.1.11:8080

当收到路由后(PREROUTING )的tcp协议且入口为 eth1,如果目标地址为公网IP地址的IP请求并访问我的80端口时,将其转换为私网主机IP和8080端口。

标签:iptables,0.0,Linux,防火墙,规则,数据包,路由
来源: https://blog.csdn.net/weixin_45677119/article/details/109959089

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有