简介

(netfilter, 位于Linux内核中的包过滤功能体系  ,称为Linux防火墙的“内核态”)

iptables防火墙工作在网络层,针对TCP/IP数据包实施过滤和限制,iptables防火墙基于内核编码实现,具有非常稳定的性能和高效率;

iptables属于“用户态”的防火墙管理体系。

ptables和netfilter的关系:

iptables只是Linux防火墙的管理工具,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。

规则链与规则表

规则表:
  1.filter表——三个链:INPUT、FORWARD、OUTPUT
    作用:过滤数据包  内核模块:iptables_filter.
  2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
    作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
  3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
    作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle
  4.Raw表——两个链:OUTPUT、PREROUTING
    作用:决定数据包是否被状态跟踪机制处理  内核模块:iptable_raw

规则链:
  1.INPUT——进来的数据包应用此规则链中的策略
  2.OUTPUT——外出的数据包应用此规则链中的策略
  3.FORWARD——转发数据包时应用此规则链中的策略
  4.PREROUTING——对数据包作路由选择前应用此链中的规则
  (所有的数据包进来的时侯都先由这个链处理)
  5.POSTROUTING——对数据包作路由选择后应用此链中的规则
  (所有的数据包出来的时侯都先由这个链处理)

规则表之间的顺序
       raw ——> mangle ——> nat ——> filter

规则链之间的顺序
    入站:PREROUTING ——> INPUT: 数据包到达防火墙后首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断数据包发往何处),如果数据包的目标地址是防火墙本机(如:Internet用户访问网关的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等)。
    出站:OUTPUT ——> POSTROUTING:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链(是否修改数据包的地址等)进行处理。
    转发:PREROUTING ——> FORWARD ——> POSTROUTING:来自外界的数据包到达防火墙后首先被PREROUTTING链处理,然后再进行路由选择;如果数据包的目标地址是其他的外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发,拦截,丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。

规则链内的匹配顺序
    按顺序依次检查,匹配即停止(LOG策略例外)
    若找不到相匹配的规则,则按该链的默认策略处理

iptables管理工具的使用

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

注意:

不指定表名时,默认指filter表
   不指定链名时,默认指表内的所有链
   除非设置链的默认策略,否则必须指定匹配条件
   选项、链名、控制类型使用大写字母,其余均为小写

控制类型:

  ACCEPT:允许通过
    DROP:直接丢弃,不给出任何回应
    REJECT:拒绝通过,必要时会给出提示
    LOG:记录日志信息,然后传给下一条规则继续匹配

拒绝发给本机使用ICMP协议的数据包:iptable -t filter -I INPUT -p icmp -j REJECT

  • -A:在链的末尾追加一条规则
  • -I:在链的开头(或指定序号)插入一条规则
  • -L:列出所有的规则条目
  • -n:以数字形式显示地址、端口等信息
  • -v:以更详细的方式显示规则信息
  • --line-numbers:查看规则时,显示规则的序号
  • -D:删除链内指定序号(或内容)的一条规则
  • -F:清空所有的规则
  • -P:为指定的链设置默认规则

规则的匹配条件

通用匹配:

  • 协议匹配:-p 协议名
  • 地址匹配:-s 源地址、-d 目的地址
  • 接口匹配:-i 入站网卡、-o 出站网卡

隐含匹配:

  • 端口匹配:--sport 源端口、--dport 目的端口
  • TCP标记匹配:--tcp-flags 检查范围 被设置的标记
  • ICMP类型匹配:--icmp-type ICMP类型

显示匹配:

  • 多端口匹配:-m multiport --sports 源端口列表

-m multiport --dports 目的端口列表

  • IP范围匹配:-m iprange --src-range IP范围
  • MAC地址匹配:-m mac --mac-source MAC地址
  • 状态匹配:-m state --state 连接状态

SNAT转换:

将内网的192.168.10.0/24网段映射到公网地址,实现共享上网(源地址转换)

iptables -t nat -A POSTROUTING -s 192.168.10.0/ -o eth0 -j SNAT --to-source 218.29.30.31

DNAT转换:

将内网服务器的80端口映射到公网地址的80端口(目标地址转换)

iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport  -j DNAT --to-destination 192.168.10.1

iptables防火墙的原理及应用的更多相关文章

  1. iptables防火墙工作原理

    iptables防火墙工作原理 简介:iptables防火墙工作在网络层,针对TCP/IP数据包实施过滤和限制,iptables防火墙基于内核编码实现,具有非常稳定的性能和高效率: iptables属 ...

  2. 编译内核实现iptables防火墙layer7应用层过滤 (三)

    在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...

  3. linux 的iptables防火墙

    .a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A  ???.a看到的 symbolic符合名称都是 相应的,  包含的  .o文件.... linux 2.4内核中 ...

  4. Netfilter/iptables防火墙

    http://os.51cto.com/art/201107/273443.htm [51CTO独家特稿]Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免 ...

  5. CentOS 7设置iptables防火墙开放proftpd端口

    由于ftp的被动模式是这样的,客户端跟服务器端的21号端口交互信令,服务器端开启21号端口能够使客户端登录以及查看目录.但是ftp被动模式用于传输数据的端口却不是21,而是大于1024的随机或配置文件 ...

  6. CentOS 7 设置iptables防火墙开放proftpd端口

    由于ftp的被动模式是这样的,客户端跟服务器端的21号端口交互信令,服务器端开启21号端口能够使客户端登录以及查看目录.但是ftp被动模式用于传输数据的端口却不是21,而是大于1024的随机或配置文件 ...

  7. 2-10~2-11 配置iptables防火墙增强服务 selinux简单讲解

    学习一个服务的过程: 1.此服务器的概述:名字,功能,特点,端口号 2.安装 3.配置文件的位置 4.服务启动关闭脚本,查看端口 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上, ...

  8. Linux(13):期中架构(5)--- 前端部分:keepalived高可用 & HTTPS & iptables防火墙

    keepalived 高可用集群 1. keepalived服务概念说明 # 1.1 keepalived软件的作用? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LV ...

  9. iptables防火墙相关命令详解

    前提基础: 当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发. iptables实现防火墙功能 ...

随机推荐

  1. Winform开发框架中的综合案例Demo

    在实际的系统开发中,我们往往需要一些简单的的案例代码,基于此目的我把Winform开发框架中各种闪光点和不错的功能,有些是我们对功能模块的简单封装,而有些则是引入了一些应用广泛的开源组件进行集成使用, ...

  2. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。

    在Winform界面开发的时候,有时候我们客户喜欢把功能放在列表界面的顶部,这样界面和功能整齐放置,也是一种比较美观的方式,基于这种方式的考虑,改造了代码生成工具的Winform界面生成规则,把增删改 ...

  3. Hibernate各种基本注解及一对一(多)关系映射采坑笔记

    hibernate提供两种方式配置关系映射,一种XMl配置,一种注解.SpringBoot已经自带了hibernate注解方式,我也是特别喜欢使用注解,特此记下常用的知识点. 1.基本注解 @Tabl ...

  4. linux cgroups 简介

    cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统 ...

  5. 【Python】动手分析天猫内衣售卖数据,得到你想知道的信息

    大家好,希望各位能怀着正直.严谨.专业的心态观看这篇文章.ヾ(๑╹◡╹)ノ" 接下来我们尝试用 Python 抓取天猫内衣销售数据,并分析得到中国女性普遍的罩杯数据.最受欢迎的内衣颜色是什么 ...

  6. 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下)

    朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下) [下载本文PDF进行阅读] 接上文,继续剩下的15个模式. 数据管理模式 16.分片模式:将数据存储区划分为一组水平分区或分片 一直有一个说 ...

  7. 简单使用redis实现sso单点登录

    前面几篇分享了nosql只mongodb,今天简单分享另一个nosql神兵redis. 主要模仿sso单点登录,将登录人信息写入redis.话不多说,直接上马,驾. /// <summary&g ...

  8. codeforces#580 D. Kefa and Dishes(状压dp)

    题意:有n个菜,每个菜有个兴奋值,并且如果吃饭第i个菜立即吃第j个菜,那么兴奋值加ma[i][j],求吃m个菜的最大兴奋值,(n<=18) 分析:定义dp[status][last],statu ...

  9. 小小知识点(一)——利用电脑自带的BitLocker对磁盘加密

    1.利用电脑自带的BitLocker可以对固定的或移动的磁盘加密 网上有很多的使用方法步骤,可参考百度经验:https://jingyan.baidu.com/article/636f38bb4fac ...

  10. Is-a

    在知识表示.面向对象程序设计与面向对象设计的领域里, is-a(英语:subsumption,包含架构)指的是类的父子继承关系, 例如类D是另一个类B的子类(类B是类D的父类). 换句话说,通常&qu ...