iptables 的 chain 及 table

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

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之类的 允许外部发起访问,并放行,其余情况都禁止。好了,讲完了,更多的知识去看那个手册把....

 

 

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 141 回帖 • 2 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 16 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 227 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    22 引用 • 214 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    147 引用 • 974 回帖
  • FlowUs

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

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

    1 引用
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 659 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 668 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 1 关注
  • 印象笔记
    3 引用 • 16 回帖 • 1 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 486 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 703 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 35 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 3 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 760 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 4 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 437 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    431 引用 • 1250 回帖 • 596 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 99 关注