防护墙服务

iptables的基本认识
       Netfilter组件:
内核空间,集成在linux内核中
扩展各种网络服务的结构化底层框架
内核中选取五个位置放了五个Hook(勾子)function(INPUT、OUTPUT、FORWARD、PREROUTING、POST ROUTING),而这五个hoot function 向用户开放,用户可以通过一个命令工具(iptables)向其写入规则。

由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上。

三种报文流向:

流入本机:PREROUTING —> INPUT —>用户空间进程
流出本机:用户空间进程 —>OUTPUT —>POSTROUTING
转发:PREROUTING —> FORWARD –> POSTROUTING

防火墙工具

       iptables:

命令行工具,工作在用户空间
用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信
息包 .
      firewalld:
CentOS 7引入了新的前端管理工具
管理工具:
firewall-cmd 命令行
firewall-config 图形
iptables的组成
iptables由四个表和五个链以及一些规则组成
四个表table:filter, nat, mangle, raw
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包 ;
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表
Raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
优先级由高到低的顺序为:raw–>mangle—>nat–>filter
五个内置链chain:

             INPUT OUTPUT FORWARD PREROUTI


Netfilter表和链对应关系:
防护墙服务



数据包过滤匹配流程:

防护墙服务



内核中数据包的传输过程
内核中数据包的传输过程 :

当一个数据包进入网卡时,数据包首先进入PREROUTING链, 内核根据

数据包目的IP判断是否需要转送出去;

如果数据包就是进入本机的,数据包就会沿着图向下移动,到达 INPUT

链。数据包到达INPUT链后,任何进程都会收到它。本 机上运行的程序

可以发送数据包,这些数据包经过OUTPUT链 ,然后到达POSTROTING

链输出 ;

如果数据包是要转发出去的,且内核允许转发,数据包就会向右 移动,

经过FORWARD链,然后到达POSTROUTING链输出。



iptables规则

规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规
则定义的处理动作作出处理
匹配条件:默认为与条件,同时满足
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
扩展匹配:通过复杂高级功能匹配
处理动作:称为target,跳转目标。
内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNAT
,MASQUERADE,MARK,LOG…
自定义处理动作:自定义chain,利用分类管理复杂情形
规则要添加在链上,才生效;添加在自定义上不会自动生效
链chain:
内置链:每个内置链对应于一个钩子函数
自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织
管理机制;只有Hook钩子调用自定义链时,才生效.
iptables添加要点
iptables规则添加时考量点:

要实现哪种功能:判断添加在哪张表上

报文流经的路径:判断添加在哪个链上

报文的流向:判断源和目的

匹配规则:业务需要

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

同类规则(访问同一应用),匹配范围小的放上面

不同类规则(访问不同应用),匹配到报文频率较大的放上面

将那些可由一条规则描述的多个规则合并为一个

设置默认策略

实验环境准备:

Centos7: systemctl stop firewalld.service

systemctl disable firewalld. service

Centos6:service iptables stop; chkconfig iptables off

iptables命令
规则格式:iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-targetoptions]
-t table:
raw, mangle, nat, [filter]默认
SUBCOMMAND:
        1、链管理:

-N:new, 自定义一条新的规则链

-X:delete,删除自定义的空的规则链

-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:

ACCEPT:接受

DROP:丢弃

REJECT:拒绝

-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, mh or

“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,–dport port[:port]:匹配报文目标 端口,可为范围

[!] –tcp-flags mask comp mask 需检查的标志位列表,用,分隔。

例如: SYN,ACK,FIN,RST comp 在mask列表中必须为1的标志

位列表,无指定则必须 为0,用,分隔。

          允许访问SSH服务:

            防护墙服务

          

         允许访问HTTPD服务的防火墙策略
防护墙服务


          示例:

–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_flags ALL NONE

[!] –syn:用于匹配第一次握手

相当于:–tcp-flags SYN,ACK,FIN,RST SYN

       udp

[!] –source-port, –sport port[:port]:匹配报文的 源端口;

可以是端口范围

[!] –destination-port,–dport port[:port]:匹配报 文的目标端口;

可以是端口范围

      icmp

[!] –icmp-type {type[/code]|typename}

type/code

0/0 echo-reply icmp应答

8/0 echo-request icmp请求

(2)显式扩展:必须使用-m选项指明要调用的扩展模块的扩展 机制,要手动

加载扩展模块:

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

防护墙服务

防护墙服务





原创文章,作者:shenjialong,如若转载,请注明出处:http://www.178linux.com/85174

(0)
上一篇 2017-08-20 23:54
下一篇 2017-08-21 08:40

相关推荐

  • shell脚本编程和文件查找及压缩

    shell脚本编程 read:使用read来把输入值分配一个或多个shell变量     -p 指定要显示的提示     -t TIMEOUT     read 从标准输入中读取值,给每个单词分配一个变量   &nbsp…

    Linux干货 2016-08-18
  • 学习新技术的10个建议

    我们生活在一个振奋人心的时代。我们可以越来越方便廉价地获得大量学习资源。这些资源的传播载体由最初的教室被变成了博客,技术论坛等。坐拥如此众多的学习资源,我们没有任何理由不去好好利用。随之而来的问题便是如何在这知识的海洋中选择自己的前进方向。在这篇文章中,我将简要概括一些技术学习的建议,希望可以给你带来一些启发。 尽管我的建议主要涉及的是软件开发方面,但是这些…

    Linux干货 2015-03-20
  • 进程与计划任务详解

    时光匆匆,王老师代两周的课就这样结束了,刚适应王老师的讲课风格。王老师讲课进度非常快,能按照自己的思路把上课的内容每一个地方都贯彻下去。我觉得这样是非常好的,但是笔记方面还是南老师做的详细,各有各的风格吧。今天我们将要给大家介绍进程与计划任务,对我们的以后工作有非常大的帮助,因为我们以后工作尽可能的都自动化管理,不需要我们每天都去敲那些命令。所以我相信今天的…

    2017-09-09
  • bash特性

    bash特性之一:命令别名      获取当前用户可用的别名的定义:  bash的特性之二:命令历史      命令语法格式:      history [-c] [-d OFFSET] [n]&nb…

    Linux干货 2016-11-06
  • Linux基础知识—Vim编辑器/crond周期性任务计划

    vim文本编辑 vim是vi文本编辑的增强版本,因其编辑功能强大、且支持各种语言开发环境关键字自动增亮功能,也可称为是开发工具。在Centos7/RHEL7开始,默认将vi定义成vim –color=auto,已经取代了vi的地位。下面总结下关于vim工具的使用 vim有三种模式,每个模式下有其特定的功能;我们可自由在三者之间切换使用: COMM…

    Linux干货 2016-11-01
  • linux系统上的特殊权限SUID,SGID,STICKY

    特殊权限:SUID SGID STICKY     linux的安全上下文:     1.进程以用户的身份运行,进程是发起此用户的代理,因此以此用户的身份和权限完成所有的操作。     2.权限匹配模型:     1)判断进程的属主,是否以被访问的文件属主。如果是,则应用属主权限…

    Linux干货 2016-08-05