前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux防火墙

Linux防火墙

作者头像
咻一咻
发布2020-05-29 15:27:13
6K0
发布2020-05-29 15:27:13
举报
文章被收录于专栏:咻一咻咻一咻

安全技术

  • 入侵检测与管理系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报告和事后监督为主,提供有针对性的指导措施和安全决策依据。一般采用旁路部署方式
  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式
  • 防火墙(FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略

防火墙的分类

  • 主机防火墙:服务范围为当前主机 网络防火墙:服务范围为防火墙一侧的局域网
  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,Checkpoint,NetScreen 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件
  • 网络层防火墙:OSI下面第三层 应用层防火墙/代理服务器:代理网关,OSI七层
网络型防火墙
网络型防火墙
网络型防火墙

1. 包过滤防火墙 2. 网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否允许该数据包通过 3. 优点:对用户来说透明,处理速度快且易于维护 4. 缺点:无法检查应用层数据,如病毒等

应用层防火墙

应用层防火墙/代理服务型防火墙(Proxy Service)

应用层防火墙
应用层防火墙

1. 将所有跨越防火墙的网络通信链路分为两段 2. 内外网用户的访问都是通过代理服务器上的“链接”来实现 3. 优点:在应用层对数据进行检查,比较安全 4. 缺点:增加防火墙的负载 5. 现实生产环境中所使用的防火墙一般都是二者结合体 6. 即先检查网络数据,通过之后再送到应用层去检查

iptables的基本认识

Netfilter组件

  • 内核空间,集成在linux内核中
  • 扩展各种网络服务的结构化底层框架
  • 内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则
  • 由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上
五个链
五个链

内核中数据包的传输过程

  1. 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去
  2. 如果数据包就是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出
  3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

三种报文流向:
  • 流入本机: PREROUTING –> INPUT–>用户空间进程
  • 流出本机: 用户空间进程–>OUTPUT–> POSTROUTING
  • 转发: PREROUTING –> FORWARD –> POSTROUTING

防火墙工具

代码语言:javascript
复制
iptables
    命令行工具,工作在用户空间
    用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包
firewalld
    CentOS 7引入了新的前端管理工具
    管理工具:
        firewall-cmd命令行
        firewall-config图形

iptables的组成

iptables由四个表五个链以及一些规则组成 四个表table:

  • filter表: 过滤规则表,根据预定义的规则过滤符合条件的数据包
  • nat表: network address translation 地址转换规则表
  • mangle: 修改数据标记位规则表
  • Raw: 关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度

优先级由高到低: raw–>mangle–>nat–>filter 五个内置链chain

  • INPUT
  • OUTPUT
  • FORWARD
  • PREROUTING
  • POSTROUTING
Netfilter表和链对应关系
Netfilter表和链对应关系
Netfilter表和链对应关系

优先级由高到低: raw -> mangle -> nat -> filter

数据包过滤匹配流程
数据包过滤匹配流程
数据包过滤匹配流程

iptables规则

规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理

代码语言:javascript
复制
匹配条件:默认为与条件,同时满足
    基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
    扩展匹配:通过复杂高级功能匹配
处理动作:称为target,跳转目标
    内建处理动作:ACCEPT(接收),DROP(婉转的拒绝),REJECT(强硬的拒绝),SNAT,DNAT,MASQUERADE,MARK,LOG...
    自定义处理动作:自定义chain,利用分类管理复杂情形

规则要添加在链上,才生效;添加在自定义上不会自动生效

链chain: 内置链:每个内置链对应于一个钩子函数 自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效

iptables规则添加时考量点

  • 要实现哪种功能:判断添加在哪张表上
  • 报文流经的路径:判断添加在哪个链上
  • 报文的流向:判断源和目的
  • 匹配规则:业务需要

链上规则的次序,即为检查的次序,因此隐含一定的法则

  • 同类规则(访问同一应用),匹配范围小的放上面
  • 不同类规则(访问不同应用),匹配到报文频率较大的放上面
  • 将那些可由一条规则描述的多个规则合并为一个
  • 设置默认策略

实验环境准备:

  • Centos7:
    • systemctl stop firewalld.service
    • systemctl disable firewalld.service
  • Centos6:
    • service iptables stop
    • chkconfig iptables off

iptables命令

代码语言:javascript
复制
man 8 iptables

iptables [-t table] {-A|-C|-D} chain rule-specification

iptables [-t table] -I chain [rulenum] rule-specification

iptables [-t table] -R chain rulenum rule-specification

iptables [-t table] -D chain rulenum

iptables [-t table] -S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain target

iptables [-t table] -E old-chain-name new-chain-name

rule-specification = [matches...] [target]

match = -m matchname [per-match-options]

target = -j targetname [per-target-options]

示例1: 从172.18.99.1来的所有全部拒绝访问

代码语言:javascript
复制
[root@centos7 ~]#iptables -A INPUT -s 172.18.99.1 -j DROP
-A 添加 -I 插入 -s 后指定源地址 -j 策略

iptables命令规则格式:

代码语言:javascript
复制
iptables [-t table] SUBCOMMAND chain [-m matchname[per-match-options]] -j targetname[per-target-options]
--------------------------------
-t table(表):raw, mangle, nat, [filter]默认
--------------------------------
SUBCOMMAND(子命令):
    1、链管理:
        -N:new, 自定义一条新的规则链
        -X:delete,删除自定义的空的规则链
        -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
            ACCEPT:接受 
            DROP:丢弃 
        -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
    2、查看:
        -L:list, 列出指定鏈上的所有规则,本选项须置后
        -n:numberic,以数字格式显示地址和端口号
        -v:verbose,详细信息 
            -vv更详细 
        -x:exactly,显示计数器结果的精确值,而非单位转换后的易读值(字节数更精确) 
        --line-numbers:显示规则的序号 
        常用组合:
            --vnL 
            --vvnxL --line-numbers 
        -S selected,以iptables-save 命令格式显示链上规则
    3、规则管理:
    -A:append,追加 
    -I:insert, 插入,要指明插入至的规则编号,默认为第一条 
    -D:delete,删除(1) 指明规则序号(2) 指明规则本身 
    -R:replace,替换指定链上的指定规则编号 
    -F:flush,清空指定的规则链 
    -Z:zero,置零(包数指从头开始)
        iptables的每条规则都有两个计数器 
        (1) 匹配到的报文的个数 
        (2) 匹配到的所有报文的大小之和
--------------------------------
chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
匹配条件
    基本:通用的,PARAMETERS
    扩展:需加载模块,MATCH EXTENTIONS
1、基本匹配条件:无需加载模块,由iptables/netfilter自行提供
    [!] -s, --source  address[/mask][,...]:源IP地址或范围 
    [!] -d, --destination address[/mask][,...]:目标IP地址或范围 
    [!] -p, --protocol protocol:指定协议,可使用数字如0(all) 
        protocol: tcp, udp, icmp, icmpv6,udplite,esp, ah, sctp, mhor  "all"  参看:/etc/protocols 
    [!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、FORWARD、PREROUTING链 
    [!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于FORWARD、OUTPUT、POSTROUTING链
2 扩展匹配条件:需要加载扩展模块(/usr/lib64/xtables/*.so),方可生效
    查看帮助man iptables-extensions
    (1)隐式扩展:在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块
        tcp协议的扩展选项
        [!] --source-port, --sport port[:port]:匹配报文源端口,可为端口范围 
        [!] --destination-port,--dportport[:port]:匹配报文目标端口,可为范围 
        [!] --tcp-flags mask comp
        mask 需检查的标志位列表,用,分隔 例如SYN,ACK,FIN,RST
        comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔

        示例:
        --tcp-flags SYN,ACK,FIN,RST  SYN  表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0 
        --tcp-flags SYN,ACK,FIN,RST SYN,ACK 
        --tcp-flags ALL ALL 
        --tcp_flagsALL NONE
        [!] --syn:用于匹配第一次握手
            相当于:--tcp-flags SYN,ACK,FIN,RST  SYN

        udp协议的扩展选项
        [!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围 
        [!] --destination-port,--dportport[:port]:匹配报文的目标端口;可以是端口范围
        icmp协议的扩展选项 
        [!] --icmp-type {type[/code]|typename}
            type/code 
            0/0   echo-replyicmp应答 
            8/0   echo-request icmp请求
    (2)显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制,要手动加载扩展模块
    [-m matchname[per-match-options]]
    处理动作:
    -j targetname [per-target-options]
    简单:ACCEPT,DROP
    扩展:REJECT:--reject-with:icmp-port-unreachable默认 
    RETURN:返回调用链 
    REDIRECT:端口重定向 
    LOG:记录日志,dmesg 
    MARK:做防火墙标记 
    DNAT:目标地址转换 
    SNAT:源地址转换 
    MASQUERADE:地址伪装
    ... 
    自定义链:
代码语言:javascript
复制
Chain INPUT (policy ACCEPT 21144 packets, 3008K bytes)
 pkts bytes target     prot opt in     out     source               destination         
   21  1954 DROP       all  --  *      *       172.18.99.1          0.0.0.0/0           
   16  1320 REJECT     all  --  *      *       172.18.99.1          0.0.0.0/0            reject-with icmp-port-unreachable
    pkts:包数
    bytes:字节数
    target:处理动作
    prot:协议
    opt:
    in:传入
    out:传出
    source:原地址 
    destination:目标地址

······持续更新中······

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安全技术
  • 防火墙的分类
    • 网络型防火墙
      • 应用层防火墙
      • iptables的基本认识
        • 三种报文流向:
        • 防火墙工具
        • iptables的组成
          • Netfilter表和链对应关系
            • 数据包过滤匹配流程
            • iptables规则
            • iptables命令
            • iptables命令规则格式:
            相关产品与服务
            NAT 网关
            NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档