防火墙(firewall),也称为防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网。它是一项信息安全的防护系统,依照特定的规则,允许或者是限制传输的数据通过。

  • 简介

  防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中,而

netfilter/iptables IP信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

虽然netfilter/iptables IP信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter和iptables组成的。

  netfilter组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

  iptables组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。

  • 系统优点

  netfilter/iptables的最大优点是它可以配置有状态的防火墙。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。这里有四种有效状态,名称分别为ESTABLISHED、INVALID、NEW和related.

  状态ESTABLISHED指出该信息包属于已建立的连接,该链接一直用于发送和接收信息包并且完全有效。

  状态INVALID指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。

  状态NEW意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。

  最后,状态RELATED表示该信息包正在启动新的连接,以及它与已建立的连接相关联。

netfilter/iptables的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。你可以定制自己的规则来满足你的特定需求,从而只允许你想要的网络流量进入系统。

  • 命令说明

iptables是用来设置、维护和检查linux内核的ip包过滤规则的。

  可以定义不同个表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对和其相对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作“target”,也可以跳向同一个表内的用户定义的链。

  targets

  防火墙的规则指定所检查包的特征和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则则由目标值去确定。该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除],QUEUE[排队],或者 RETURN[返回]。

  ACCEPT 表示让这个包通过。

  DROP表示将这个包丢弃。

  QUEUE表示把这个包传递到用户空间。

  RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。

  tables

  当前有三个表。(哪个表是当前表取决于内核配置选项和当前模块)

  iptables命令的-t选项指定要操作的匹配的表。如果内核被配置为自动加载模块,这时若没模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:

  filter,这是默认的表,包含了内建的链INPUT、FORWARD和OUTPUT。

  nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:prerouting、output、postrouting。

  mangle这个表用来对指定的包进行修改。他有两个内建的规则:prerouting和output。

ip数据包流向流程

iptables语法

iptables [- t table] {-A|-D|-R|-E|...|   action   } chain rule-specification

iptables后跟着需要操作的表名称,接着是链名称,但是需要指定对链操作的动作,再然后就是队则的指定,即各种命令选项的集合。

转自:百度百科 iptables

iptables中表,链,netfilter位置关系

5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARDING:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发

POSTROUTIONG:发送到网卡接口之前

图片转自:http://www.linuxidc.com/Linux/2012-08/67505.htm

http://lyp0909.blog.51cto.com/508999/509408

linux下的防火墙iptables的更多相关文章

  1. linux下如何修改iptables开启80端口

    linux下如何修改iptables开启80端口   最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问就访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了 ...

  2. linux下关闭防火墙命令

    今天使用linux虚拟机搭建jenkins,但是在虚拟机内部使用浏览器可以访问jenkins主页,在物理机上却无法访问jenkins主页,查找原因后是因为linux虚拟机没有关闭防火墙,关闭防火墙后, ...

  3. (转)SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开?

    SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开? 原文:http://blog.csdn.net/hhcccchh/article/details/12995539 SELin ...

  4. linux下开启防火墙,打开端口

    service iptables start时提示:“iptables: No config file.                                  [WARNING]” 此时打 ...

  5. (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?

    转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html 本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之 ...

  6. Linux基础命令---防火墙iptables

    iptables iptables指令用来设置Linux内核的ip过滤规则以及管理nat功能.iptables用于在Linux内核中设置.维护和检查IPv4数据包过滤规则表.可以定义几个不同的表.每个 ...

  7. 洞悉linux下的Netfilter&iptables:什么是Netfilter?

    本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了.趁有时间,好好把这方面的东西总结一番.一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共 ...

  8. Linux中的防火墙----iptables

    防火墙,它是一种位于内部网络与外部网络之间的网络安全系统.一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过. 防火墙根据主要的功能可分为网络层防火墙.应用层防火墙.数据库防火墙. 网 ...

  9. 嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单

    iptables是linux系统下的一个功能强大的模块,不仅可以用作防火墙,还可以实现NAT等众多路由功能.iptables的容器有很清晰的层次关系: 1. iptables是表的容器,iptable ...

随机推荐

  1. 扩展struts2的结果集StrutsResultSupport 自定义Result处理JSON

    以前在采用Struts2开发的项目中,对JSON的处理一直都在Action里处理的,在Action中直接Response,最近研读了一下Struts2的源码,发现了一个更加优雅的解决办法,自己定义一个 ...

  2. [bug] 未能加载文件或程序集“SIPEPS, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

    摘要 在弄ucma的web项目中总会出现这个问题.尝试了很多方法,最后这样解决了. 解决方案 使web以64位的方式运行.

  3. Android布局属性大全

    RelativeLayout http://wenku.baidu.com/view/2e39724333687e21af45a97e.html?from=related&hasrec=1 h ...

  4. webpack 前端构建

    一.建立简单的项目目录 1.创建 manager 根目录(作为项目根目录)2.执行 npm init,在根目录manager下自动生成 package.json文件3.npm install webp ...

  5. C# DateTime和String转换

    "; DateTime.ParseExact(time,"yyyyMMdd",System.Globalization.DateTimeFormatInfo.Curren ...

  6. VTK初学一,a_Vertex图形点的绘制

    系统:Win8.1 QT版本:2.4.2,Mingw VTK版本:6.3 2. main.cpp #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #incl ...

  7. Vno博客样式分享

    不知不觉有一年多没有更新博客了,还是几位园友因为喜欢这套博客样式发了消息,否则我都快忘记自己还有一个博客了,哈哈. 言归正传,这套博客样式是当时闲来无事copy的iOS界喵神的博客Vno,确实很漂亮, ...

  8. dwz 在dialog里打开dialog

    需要在打开dialog里再弹出一个dialog的话,需要在打开第一个dialog的地方指定rel,这样就可以弹出第二个dialog而不是替换掉第一个dialog <a class="a ...

  9. C#之类与对象

    这段代码告诉我们要把#define DEBUG放在文件的开头位置,不然会导致编译错误,最后还要#endif 以上代码告诉我们可以对自己创建的类设计自己的构造方法,然后可以通过具体的Main()函数来通 ...

  10. MFC线程内获取主窗口句柄

    CWnd* h_q = AfxGetApp()->GetMainWnd(); //获取主窗口的句柄