iptables 的 chain 及 table

本贴最后更新于 3291 天前,其中的信息可能已经时异事殊

iptables是linux的防火墙大家都知道,但它能干的东西可能大大超乎你的想象,它可以进行 ttl的修改,nat的转换,甚至于负载均衡,本来想写点什么的但是那个iptables的使用手册已经写的太TM的完善了,那我就找个防火墙的配置讲解一下把:

 

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere                    
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:sieve-filter
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:dc
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:pharos
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

 

先讲讲chain,chain就是要执行的防火墙操作的列表

上面有三个CHAIN的分组 分别是 INPUT,FORWARD,OUTPUT,分别代表的是 INPUT:Ip包发往本机的时候要进行的防火墙操作;FORWARD 目的地不是本机的时候,要进行的防火墙的操作;OUTPUT就是本机发出的包需要进行的防火墙的操作

还有两条chain没有在上述的表格中显示,分别为prerounting,postrounting,顾名思义,就是 进入本机 路由变换前进行的防火墙操作,进行路由转换操作后进行的防火墙操作

chain还可以自定义新增chain,自定义的chain由系统定义的chain里跳入,执行完后跳回原来的chain。

关于chain的执行连接过程如下(偷的一张图,作者大大借用下):

 

在上面的图中绿色部分的就是iptables的表,表有什么用呢?

表就是对系统每个chain的更细的划分,表一共有3张:mangle,nat,filter.mangle表主要处理ttl,tos,mark等信息,nat主要处理ip、端口转换的信息,filter顾名思义就是过滤器,用作防火墙

 

举个栗子,prerounting chain在nat表 里的部分 就是在prerounting的阶段对nat信息进行配置

 

 

好了,有了上面的基础只是,我们就能看懂刚刚列出的表格了~

先看input chain

1)Chain INPUT (policy ACCEPT)
2)target     prot opt source               destination         
3)ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
4)ACCEPT     icmp --  anywhere             anywhere                    
5)ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
6)ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http

第一行 写了chain的名字,policy Accept的意思是如果Chain中的所有条目都没有命中并执行,则默认Accept,放行

第三行 的意思是 匹配 连接的状态(什么是连接的状态?翻那个手册把.....)若连接的状态被防火墙判断为 related或者established的话,就Accept放行。

related指代某个已经放行的通讯相关联的端口通讯(怎么判断相关联?我也不太清楚....)

establish的意思是已经建立连接的话那么就放行(何为已经建立连接?就是本地发出去一堆信息,远程有回应信息   或者 远程发一堆信息 本地有回应信息)

第四行 不讲

第五行 如果是连接到 ssh端口的 状态为NEW的连接,则放行(状态为NEW的意思是,发出去一堆信息,还没有收到回应  或者 收到一堆信息,还没有回应)

第六行 不讲

 

接着看 output chain

1)Chain OUTPUT (policy ACCEPT)
2)target     prot opt source               destination      

第一行标明了如果没有匹配的规则,则放行,也就是说 本地总是可以发信息到外面,一旦发出去,那么连接就变成了new 只要对方有回应 连接就变成establish,在input的列表里establish是放行的

 

综上,这个防火墙的规则可以定义为,只要本地发起的连接,都能通过防火墙,正常通讯,特定放行的几个端口ssh之类的 允许外部发起访问,并放行,其余情况都禁止。好了,讲完了,更多的知识去看那个手册把....

 

 

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 72 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 26 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    26 引用 • 84 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 40 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 364 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 18 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 488 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 529 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 334 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 9 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 471 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 4 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 654 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 599 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 453 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 43 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 536 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 154 关注