iptables 的 chain 及 table

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

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

 

 

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    284 引用 • 4481 回帖 • 654 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    275 引用 • 682 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 2 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1114 回帖 • 151 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 439 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    304 引用 • 777 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    396 引用 • 3416 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 9 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 285 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 40 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 25 关注
  • HHKB

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

    5 引用 • 74 回帖 • 407 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 492 关注
  • JRebel

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

    26 引用 • 78 回帖 • 623 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 3 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    40 引用 • 24 回帖