安全技术和防火墙

目录

1. 安全技术

2. 防火墙的分类

2.1 按保护范围划分:

2.2 按实现方式划分:

2.3 按网络协议划分:

2.4 包过滤防火墙

2.5 应用层防火墙

3.iptables防火墙基本介绍

3.1 iptables

3.2 netfilter/iptables关系

3.3 .iptables的四表五链

1.四表  (如何控制流量)

2.五链  (控制流量的时机)

3.4 iptables 语法总结

3.5加新的防火墙规则

3.6 查看规则表

3.7 替换规则

3.8 插入规则

3.9 删除规则

3.10设置默认规则

3.11 修改规则

4.  规则匹配

2.隐含匹配

2.2  ICMP类型匹配

3.显式匹配

3.1 多端口匹配

3.2 IP范围匹配

3.3 MAC地址匹配


1. 安全技术

  • 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

2. 防火墙的分类

2.1 按保护范围划分:

  • 主机防火墙:服务范围为当前一台主机

  • 网络防火墙:服务范围为防火墙一侧的局域网

2.2 按实现方式划分:

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等

  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

2.3 按网络协议划分:

  • 网络层防火墙:OSI模型下四层,又称为包过滤防火墙

  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

2.4 包过滤防火墙

网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过

优点:对用户来说透明,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

2.5 应用层防火墙

应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)

将所有跨越防火墙的网络通信链路分为两段

内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全

缺点:增加防火墙的负载

提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用 层去检查

网络防火墙 : 协议  端口号   ip     mac

应用防火墙:  协议  端口号  ip      mac    真实数据(可以控制真实数据)

开发者

4层原理   传输    协议端口号    开发者

7层原理   控制真实数据   http   dns 

3.iptables防火墙基本介绍

3.1 iptables

Linux系统的防火墙:IP信息包过滤系统,它实际上由两个组件 netfilter和 iptables 组成。

主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。

3.2 netfilter/iptables关系

netfilter

  • 位于Linux内核中的包过滤功能体系
  • 称为Linux防火墙的“内核态”(内核空间)
  • 是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables

  • 位于/sbin/iptables
  • 用来管理防火墙规则的工具称为Linux防火墙的“用户态”
  • 它使插入、修改和删除数据包过滤表中的规则变得容易

netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

3.3 .iptables的四表五链

1.四表  (如何控制流量)

表的作用是存放链

规则表

  • 表的作用:容纳各种规则链
  • 表的划分依据:防火墙规则的作用相似

默认包括4个规则表

  • raw表:确定是否对该数据进行状态跟踪------------------跟踪
  • mangle表:为数据包设置标记-------------------------------标记
  • nat表:修改数据包中的源、目标IP地址或端口----------地址转换
  • filter表:确定是否放行该数据包(过滤)-----------------是否允许流量通过

其中raw 优先级最高 其次是 mangle 、nat   filter优先级最低

2.五链  (控制流量的时机)

链的作用:链决定了 在什么地方控制流量

规则链

  • 规则的作用:对数据包进行过滤或处理
  • 链的作用:容纳各种防火墙规则
  • 链的分类依据:处理数据包的不同时机

默认包括5种规则链

  • INPUT:                 进入本机的流量
  • OUTPUT:             出去本机的流量
  • FORWARD:         转发流量 
  • PREROUTING:    路由选择前
  • POSTROUTING:  路由选择后

总结

  • 规则表的作用:容纳各种规则链; 表的划分依据:防火墙规则的作用相似

  • 规则链的作用:容纳各种防火墙规则;规则的作用:对数据包进行过滤或处理 ;链的分类依据:处理数据包的不同时机

  • 总结:表里有链,链里有规则

内核中数据包的传输过程

解析:

  1. 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要 转送出去

  2. 如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达

  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

三种报文流向

  • 流入本机:PREROUTING --> INPUT-->用户空间进程

  • 流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

  • 转发:PREROUTING --> FORWARD --> POSTROUTING

3.4 iptables 语法总结

基本语法:

iptables -t filter -A INPUT -s 172.16.178.1 -j DROP


iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]


-t   nat  filter    如果不指定  默认是filter

 

在 iptables 防火墙体系中,最常用的几种控制类型如下

- ACCEPT:允许数据包通过。 
- DROP:直接丢弃数据包,不给出任何回 应信息。 
- REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。 
- LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。

注:需要大写  

添加、查看、删除规则等基本操作

管理选项

用法示例
-A在指定链末尾追加一条 iptables -A INPUT (操作)
-I在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作)
-P指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D删除 iptables -t nat -D INPUT 2 (操作)
-p服务名称 icmp tcp
-R修改、替换某一条规则 iptables -t nat -R INPUT (操作)
-L查看 iptables -t nat -L (查看)
-n所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看)
-v查看时显示更详细信息,常跟-L一起使用 (查看)
--line-number规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F清除链中所有规则 iptables -F (操作)
-N新加自定义链
-X清空自定义链的规则,不影响其他链 iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号

3.5加新的防火墙规则

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

例:

3.6 查看规则表

语法

iptables [-t表名] -n -L [链名] |[-- line-numbers]

或

iptables - vnL

3.7 替换规则

替换   -R

3.8 插入规则

在指定链的末尾追加一条新的规则 -A;在指定链的开头插入一条新的规则,未指定序号时默认作为第一条规则 -I

iptables -t filter -A INPUT -p icmp -j DROP
#不允许其他主机ping本机,不给响应信息DROP,ping所使用的协议为icmp
 
iptables -nL --line-numbers
#查看规则序号
 
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
#在filter表中添加一条放通tcp22号端口的规则 并在第二个规则前添加此新规则

3.9 删除规则

1 按照行号删除

iptables -D INPUT 2
#删除第二行规则

2  按照内容删除

iptables -D INPUT -p icmp -j DROP
#将含有icmp协议使用DROP类型的规则删除

3.10设置默认规则

iptables [-t表名] -P <链名> <控制类型>

iptables -P INPUT DROP
#默认规则设置为DROP

iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。

#需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。因此若要修改默认 策略,必须通过管理选项“-P”重新进行设置。另外,默认策略并不参与链内规则的顺序编排, 因此在其他规则之前或之后设置并无区别。

3.11 修改规则

iptables -R INPUT 1 -p icmp -j DROP
#将第一条规则改为DROP规则

4.  规则匹配

规则的匹配包括  通用匹配  和  隐含匹配

1.通用匹配
可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址   可以是IP、网段、域名、空(任何地址)
接口匹配:-i 入站网卡、-o出站网卡

iptables -A INPUT -s 192.168.79.220 -j DROP
#不允许192.168.79.220 ping通本机

2.隐含匹配

 要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。

端口匹配∶ --sport 源端口、--dport 目的端口

2.1 端口匹配: --sport 源端口、--dport 目的端口,可以是个别端口、端口范围
--sport 1000                               匹配源端口是1000的数据包
--sport 1000:3000                      匹配源端口是1000-3000的数据包
--sport :3000                              匹配源端口是3000及以下的数据包
--sport 1000:                              匹配源端口是1000及以上的数据包
--sport和--dport 必须配合 -p <协议类型> 使用

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
#指定tcp协议目标端口20:21同意访问
 
iptables-I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP
#不转发 目标网段是 192.168.80段 tcp协议的24500到24600
 
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -jACCEPT
#丢弃SYN请求包,放行其他包
2.2  ICMP类型匹配
格式:--icmp-type ICMP类型,可以是字符串、数字代码

"Echo-Request”(代码为8)表示请求
"Echo- -Reply”(代码为0)表示回显
"Dest ination-Unreachable" (代码为3)表示目标不可达
关于其它可用的ICMP 协议类型,可以执行“iptables -P icmp -h”命令,查看帮助信息

iptables -A INPUT -p icmp --icmp-type 8 -j DROP	
#禁止其它主机ping本机
 
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
#允许本机ping其它主机
 
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT	 
#当本机ping不通其它主机时 提示目标不可达

3.显式匹配

要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件

3.1 多端口匹配
  • -m multiport --sport 源端口列表
  • -m multiport --dport 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -i ACCEPT 
#允许访问tcp的80,22,21,20,53端口
 
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
#允许访问udp的53端口
3.2 IP范围匹配
iptables -A FORWARD -p udp -m iprange --src-range 192.168.52.100-192.168.52.200 -j DROP
# 禁止转发源地址位于192.168.52.100——192.168.52.200的udp数据包
3.3 MAC地址匹配

格式:-m mac --mac -source MAC地址

iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
禁止来自某MAC地址的数据包通过本机转发

3.4 状态匹配
格式:-m state --state 连接状态

常见连接状态:

NEW:主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED:主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED:主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED  配合使用
INVALID ∶ 无效的封包,例如数据破损的封包状态

iptables -I INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -P udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -P tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
#对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过简j单来说就是只允许所有自己发出去的包进来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值