防火墙(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. list转map 键值对

    Map<Long,Account> map = new HashMap<Long,Account>(); for(int i=0;i<list.size();i++){ ...

  2. [css]通过transform缩放邮件客户端h5页面

    摘要 最近一直在折腾邮件通知的东东,大概逻辑就是如果有新邮件,向收件人的app推送一条服务号消息,并且在单击该消息的时候,需要展示邮件的详情. 技术 这里是使用Exchange EWS API来实现的 ...

  3. for while (list each)的用法

    each是返回数组 指针当前指向的 元素的 索引和值: 索引有四个值: 0, 1, key, value. 0和key是一样的, 1和value是一样的 但是each只是将数组指针 向前移动 一步, ...

  4. poj2391 Ombrophobic Bovines 题解

    http://poj.org/problem?id=2391 floyd+网络流+二分 题意:有一个有向图,里面每个点有ai头牛,快下雨了牛要躲进雨棚里,每个点有bi个雨棚,每个雨棚只能躲1头牛.牛可 ...

  5. [原] Jenkins Android 自动打包配置

    一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...

  6. 黄学长模拟day1 某种密码

    关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 现在有原 ...

  7. 几个主流java连接池

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...

  8. 【C++】递增递减操作符与指针的关系

    可以将递增与递减操作符用于指针和基本变量,将递增操作符用于指针时,将把指针的值增加其指向的数据类型占用的字节数,这种规则适用于对指针递增和递减. int arr[5] = {21,32,23,45,3 ...

  9. isNaN() 确认是否是数字

    isNaN(x): 当变量 x 不是数字,返回 true: 当变量 x 是其他值,(比如,1,2,3),返回false.

  10. UI第四节——UIImageView详解

    - (void)viewDidLoad { // super调用是必须的 [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@&quo ...