zoukankan      html  css  js  c++  java
  • iptables基础知识详解

    iptables命令是Linux上最常用的防火墙代理,可以很好得控制进出流量以及限速等。

    iptables不是真正意义上得防火墙,我们应该把它理解为一个代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"里面,【netfilter】,这个框架才是真正的防火墙。

    netfilter位于内核空间

    iptables是一个命令行工具,位于用户空间

       

    首先,我们介绍几个基本概念。

    netfilter

    Linux操作系统核心层的内部的一个数据包处理模块,它有如下几个功能:

    • 网络地址转换(NAT
    • 数据包内容修改
    • 数据包过滤【防火墙功能】

       

    rules

    规则是网络管理员预定义的条件,一般形式为"如果符合XXX的条件,就XXX这样处理"。

    规则存储在内核空间的信息包过滤表中,这些规则分别指定了/目的地址,传输协议,服务类型等。

    当数据包与规则匹配时,就按照定义的方法进行处理【放行,拒绝,丢弃】。

    配置防火墙主要就是配置这些规则。

       

    内核要想实现报文的【放行,拒绝,丢弃】,就要在内核设置关卡,符合条件放行,不符合阻止,这些所谓的关卡就叫链,主要包括【inputoutput】。

    而报文并不是每次的目标主机都是本机,当主机支持 IP_FROWARD时,我们可以把报文转发给其他服务器,也就是其他链,"路由前","转发","路由后"。

    如图:

    链为什么叫链呢?

    我们前文已经说过,防火墙的作用就是对经过关卡的报文匹配规则,然后执行相对应的动作。但是关卡上的规则可能不止一条,有可能有很多条,每个经过此关卡的报文,都要将这些所有的规则都匹配一遍,所以,我们将这些关卡称之为链

    链名

    功能

    INPUT

    处理输入数据包

    OUTPUT

    处理输出数据包

    PORWARD

    处理转发数据包

    PREROUTING

    用于目标地址转换DNAT

    POSTOUTING

    用于源地址转换SNAT

       

    表:

    我们把具有相同功能的规则的集合叫做

    表名

    功能

    内核模块

    主要用于

    filter

    负责过滤功能

    iptables_filter

    防火墙

    nat

    网络地址转换

    iptable_nat

    网关路由器

    mangle

    拆解报文,修改,重新封装

    iptable_mangle

    服务质量(QOS

    raw

    关闭nat表上启用的连接追踪机制

    iptable_raw

    高级功能,如:网址过滤

    所有的规则都保存在这四张表中。

       

    表的优先级为: raw -> mangle -> nat -> filter

       

    动作:

    accept

    接收数据包

    DROP

    丢弃数据包

    REDIRECT

    重定向、映射、透明代理

    SNAT

    源地址转换

    DNAT

    目标地址转换

    MASQUERADE

    IP伪装(NAT),用于ADSL

    LOG

    日志记录

       

    接下来,我们介绍一下iptables的使用:

       

    • 基本命令

         

      • 清除已有的规则

        iptables -F

        iptables -X

        iptables -Z

           

      • 查看已有的规则

        iptables -vnL

        iptables -L -n --line-numbers(删除前查看序号)
         

      • 删除已有的规则

        iptables -D INPUT 8

           

    • 开放指定端口
      • iptables -A OUTPUT -j ACCEPT                      #允许所有本机向外的访问
      • iptables -A INPUT -p tcp --dport 22 -j ACCEPT     #允许访问22端口
      • iptables -A INPUT -j reject                       #禁止其他未允许的规则访问
      • iptables -A FORWARD -j REJECT                     #禁止其他未允许的规则访问

           

    • 屏蔽指定端口
      • iptables -I INPUT -s 123.45.6.7 -j DROP           #屏蔽单个IP的命令
      • iptables -I INPUT -s 123.45.6.0/24 -j DROP        #IP段即从123.45.6.1123.45.6.254的命令

           

    • 相对复杂的命令

      iptables -A INPUT -i br-ext -p tcp --dport 5355 -j DROP -m comment --comment 'huwangxingdong'

                                链                接口              协议                  目的端口  丢弃         备注

         

    • 选项

    -t<>

    指定要操纵的表;

    -A

    向规则链中添加条目;

    -D

    从规则链中删除条目;

    -i

    向规则链中插入条目;

    -R

    替换规则链中的条目;

    -L

    显示规则链中已有的条目;

    -F

    清除规则链中已有的条目;

    -Z

    清空规则链中的数据包计算器和字节计数器;

    -N

    创建新的用户自定义规则链;

    -P

    定义规则链中的默认目标;

    -h

    显示帮助信息;

    -p

    指定要匹配的数据包协议类型;

    -s

    指定要匹配的数据包源ip地址;

    -j<目标>

    指定要跳转的目标;

    -i<网络接口>

    指定数据包进入本机的网络接口;

    -o<网络接口>

    指定数据包要离开本机所使用的网络接口。

       

  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/liufarui/p/10970468.html
Copyright © 2011-2022 走看看