Linux:网络防火墙

    netfilter:Frame

    iptables:    生成防火墙规则,并附加到netfilter上实现数据报文过滤  NAT  mangle等规则生成的工具

TCP有限状态机

    LISTEN:等待客户端发起请求

    SYN_SENT:客户端发送SYN

    SYN_RECEIVED:服务器端收到SYN报文

    ESTABLISHED:已经建立连接

    FIN_WAIT1:等待对方的确认

    CLOSE_WAIT:服务器响应客户机的FIN,等待关闭

    LAST_ACK:服务器向客户机发送FIN,等待客户机的最后一次确认

    CLOSING:等待关闭连接,客户机最后一次向服务器发送ACK,确保服务器可以收到ACK的过程

    CLOSED:双方收到FIN的ACK确认,断开连接

防火墙:硬件,软件:规则(匹配标准、处理办法)

    工作在网络的边界,对进、出的数据报文按照预先定义好的规则进行检查,一旦发现按照相应规则处理

Framework:

    默认规则:

       开放:堵

       关闭:通

规则:匹配标准

    IP:源IP、目标IP

    TCP:sport/dport,SYN= FIN= RST= ACK=

    UDP:sport/dport

    ICMP:icmp-type                 ping   echo-request   echo-reply

数据报文过滤

Linux 2.0

    ipfw/firewall

Linux 2.2

    ipchain/firewall

Linux 2.4

    iptables/netfilter

hook function:钩子函数

    input

    output

    forward

    prerouting

    postrouting

规则链:

       PREROUTING

       INPUT

       FORWARD

       OUTPUT

       POSTROUTING

filter(过滤)表

    INPUT

    FORWARD

    OUTPUT

nat(地址转换)表

    PREROUTING

    POSTROUTING

    OUTPUT

mangle(修改报文首部)表

    PREROUTING

    INPUT

    FORWARD

    OUTPUT

    POSTROUTING

raw表

    PREROUTING

    OUTPUT

数据包匹配流程

PREROUTING:raw---mangle---nat

    INPUT:mangle----filter

    FORWARD:mangle--------filter

    OUTPUT:raw---mangle---nat----filter

    POSTROUTING:mangle----postrouting

用户可以自定义链,但只能是在被调用时才可以使用,如果自定义链中没有存在任何匹配规则,还应该有返回机制

用户可以删除自定义链,但不允许删除非空链

默认链无法删除

每个规则都有两个内置的计数器

    记录被匹配的报文个数

    记录被匹配的报文的大小

规则=匹配标准+处理动作

iptables [ -t table ] COMMAND CHAIN [num] 匹配标准 -j 处理办法

匹配标准:

    通用匹配

    扩展匹配(必须启用netfilter模块)

       隐含扩展:不用特别指明由哪个模块进行的扩展,此时使用-p {tcp|udp|icmp}

       显式扩展:必须指定使用哪个模块,通过iptables的-m选项完成

通用匹配:

    -s,--src   指定源IP

    -d,--dst   指定目的IP

    -p { tcp | udp | icmp }  指定协议

    -i  INTERFACE  指定数据报文流入的接口,一般用在PREROUING  INPUT  FORWARD链

    -o  INTERFACE  指定数据报文流出的接口,一般用在OUTPUT  POSTROUTING  FORWAD链

扩展匹配

隐含扩展

    -p tcp

       --sport PORT:源端口

       --dport PORT:目的端口

       --tcp-flags mask compare

           --tcp-flags  SYN,FIN,ACK,RST SYN,ACK   将检查SYN/FIN/RST/ACK这4个标志位,只允许SYN,ACK为1

       --syn  匹配SYN标志位为1的数据

-p icmp

       --icmp-type

           类型0:echo-reply

           类型8:echo-request
    - p udp

       --sport

       --dport

处理办法:

    ACCEPT 允许通过

    DROP   丢弃

    REJECT 丢弃

    DNAT   转换目的IP

    SNAT   转换源IP

    REDIRECT   端口重定向

    MASQUERADE    作PAT

    LOG    记录日志

    MARK   打标记

COMMAND命令:

管理规则

       -A CHAIN:附加一条规则,添加在链的尾部

       -I CHAIN [num]:插入一条规则,插入在对应CHAIN的第num条

       -D CHAIN num:删除指定链中的第num条规则

       -R CHAIN num:替换指定的规则 

管理链

       -F [CHAIN]:清空指定链的所有规则,如果省略CHAIN,则实现删除对应表中的所有链

       -P CHAIN { ACCEPT | DROP }:设置指定链的默认策略

       -N NEW_CHAIN:自定义新的空链

       -X NEW_CHAIN:删除自定义的空链

       -Z:将指定链中的所有规则中的计数器置零

       -E OLD-CHAIN-NAME NEW-CHAIN-NAME:重命名自定义的链

查看

         -L  显示指定表中的所有规则

           -n:以数字格式显示主机地址、端口号

           -v:显示详细信息(计数器)

           -x:显示计数器的精确值

           --line-numbers:显示规则号码

iptables基础练习:

    、查看nat表中的所有规则

      iptables -t nat -nL

    、查看filter表中所有的规则

      Iptables -filter -nL

    、将nat表中的所有链的默认策略修改为DROP

    、在INPUT链中添加一条拒绝源IP为172.16.1./24进入本机的规则

    、在INPUT链中添加一条允许源IP为172.16.1./24进入本机的规则

    、在INPUT链中最前方加入一条允许192.168.1.1访问本机10.1.1.1的规则

    、在INPUT链中的第2个位置插入一条规则,允许从本机eth0网卡进入数据,

    、替换INPUT链中第2条规则

    、删除INPUT链中第3条规则

    、清空INPUT链中所有的规则

iptables不是服务,但有服务脚本,服务脚本的主要作用在于管理保存的规则

装载及移除iptables/netfilter相关的内核模块

iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack

也可以打开/etc/sysconf/iptables

# iptables -A INPUT -p tcp --dport  -j ACCEPT
# iptables -A OUTPUT -p tcp --sport -j ACCEPT

Linux_iptables的更多相关文章

  1. linux_iptables 详解

    iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...

  2. Linux_IPtables防火墙详解

    目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...

  3. Linux运维相关目录

随机推荐

  1. 菜鸟学SSH(二)——Struts2国际化手动切换版

    国际化(internationalization,i18n)和本地化(localization,l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化.程序在不修改内部代 ...

  2. 如何理解java泛型类

    //泛型代码 public class Pair<T>{ private T first=null; private T second=null; public Pair(T fir,T  ...

  3. python-enumerate方法

    enumerate方法用于循环list或tuple,循环的时候可以得到索引值和当前索引的对象: letters = ['a', 'b', 'c', 'd', 'e'] for i, letter in ...

  4. (原创)拨开迷雾见月明-剖析asio中的proactor模式(一)

    使用asio之前要先对它的设计思想有所了解,了解设计思想将有助于我们理解和应用asio.asio是基于proactor模式的,asio的proactor模式隐藏于大量的细节当中,要找到它的踪迹,往往有 ...

  5. 【Acm】算法之美—Fire Net

    题目概述:Fire Net Suppose  that we have a square city with straight streets. A map of a city is a square ...

  6. jetty debug 启动 jettyconfig配置文件

    jetty 代码启动 debug很简单  run----->>>debug as  代码启动配置文件 start 方法 @Test public void serverStrart( ...

  7. django模型创建

    定义模型 模型,属性,表,字段之间的关系 一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段 定义属性:见下文 创建模型类 元选项 在模型类中定义Meta类,用于设置元 ...

  8. wcf消息契约

    1.最多一个参数和一个返回值,返回值和参数的类型都是消息类型. 下面的代码为定义一个消息契约的实例 [MessageContract]    public class MyMessage    {   ...

  9. Android DrawLayout + ListView 的使用(一)

    想做一个APP,设计中有侧边栏这个功能,所以现在开始学习下侧边栏的实现. 在官方的UI空间中已经给出了DrawerLayout这个侧滑的菜单空间. 因为在使用DrawerLayout的时候遇到了些问题 ...

  10. poj3073

    比赛状态堪忧,笑看自己找不着北.. 把心态放好吧- - 反正窝从一開始就仅仅是为了多学习才上道的 至少已经从学习和智商上给窝带来了一些帮助 智商带不动,好辛苦----(>_<)---- 说 ...