zoukankan      html  css  js  c++  java
  • 防火墙和iptables

    iptables的基本语法格式

    iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

    说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。

    注意:-t 表名 不指定的话 默认为filter表。

     iptables命令选项

    -A 在指定链的末尾添加(append)一条新的规则
    -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
    -I 在指定链中插入(insert)一条新的规则,默认在第一行添加

    -i 指定数据包流入接口,若接口名后加"+",表示匹配该接口开头的所有接口

    -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
    -L 列出(list)指定链中所有的规则进行查看
    -E 重命名用户定义的链,不改变链本身
    -F 清空(flush)
    -N 新建(new-chain)一条用户自己定义的规则链
    -X 删除指定表中用户自定义的规则链(delete-chain)
    -P 设置指定链的默认策略(policy)
    -Z 将所有表的所有链的字节和数据包计数器清零
    -n 使用数字形式(numeric)显示输出结果
    -v 查看规则表详细信息(verbose)的信息
    -V 查看版本(version)
    -h 获取帮助(help)

    Options:
    [!] --proto  -p proto                      指定要检查哪个协议的数据包:可以是协议代码也可以是协议名称,
                                               如tcp,udp,icmp等。协议名和代码对应关系存放在/etc/protocols中
                                               省略该选项时默认检查所有协议的数据包,等价于all和协议代码0
    [!] --source -s address[/mask][...]        指定检查数据包的源地址,或者使用"--src"
    [!] --destination -d address[/mask][...]   指定检查数据包的目标地址,或者使用"--dst"
    [!] --in-interface  -i input name[+]       指定数据包流入接口,若接口名后加"+",表示匹配该接口开头的所有接口
    [!] --out-interface -o output name[+]      指定数据包流出接口,若接口名后加"+",表示匹配该接口开头的所有接口
      --jump        -j target                  为规则指定要做的target动作,例如数据包匹配上规则时将要如何处理
      --goto        -g chain                   直接跳转到自定义链上
      --match       -m match                   指定扩展模块
      --numeric     -n                         输出数值格式的ip地址和端口号。默认会尝试反解为主机名和端口号对应的服务名
      --table       -t table                   指定要操作的table,默认table为filter
      --verbose     -v                         输出更详细的信息
      --line-numbers                           当list规则时,同时输出行号
      --exact       -x                         默认统计流量时是以1000为单位的,使用此选项则使用1024为单位

    防火墙处理数据包的四种方式

    ACCEPT 允许数据包通过
    DROP 直接丢弃数据包,不给任何回应信息
    REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
    LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

    添加规则

    #iptables -I INPUT -p icmp -j REJECT  //向链中插入一条规则(默认插入在第一条),对流入的所有icmp数据包,进行拒绝通过。

    #iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP  //向链的尾部插入一条规则,对流入eth1网卡的所有源地址为192.168.0.0/16的数据包,进行丢弃。

    封堵网段

    # iptables -I INPUT -s 10.20.30.0/24 -j DROP   //对流入的 源地址属于10.20.30.0/24网段的所有数据包,进行丢弃。

    # iptables -I FORWARD -s 10.20.30.0/24 -j DROP  //对转发链 源地址属于10.20.30.0/24网段的所有数据包,进行丢弃。

    #iptables -I INPUT -s 192.168.1.3 -j DROP  //丢弃指定IP的数据包。

    #iptables -A INPUT -i eth2 -s 192.168.1.2 -j  

    限制ssh远程登录

    #iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT  //入方向,对属于202.13.0.0/16网段的SSH数据包,允许通过。

    #iptables -A INPUT -p tcp --dport 22 -j DROP  //入方向,拒绝所有ssh数据包通过。

    限制端口开放

    #iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT   //入方向,允许TCP开启20到1024提供服务。
    #iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEP  //出方向,允许TCP开启20到1024提供服务。

    #iptables -A INPUT -i eth1 -p tcp --dport 21 -j DROP  //丢弃所有通过 tcp 协议访问本机 21 端口的数据包

    #iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --sport 1024:65535 --dport ssh -j DROP //丢弃来自192.168.1.0/24网段的1024:65535 端口的访问本机 ssh 端口的数据包

    允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包

    #iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT 
    #iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

    限制ping 

    iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP  //禁止所有主机ping本机

    iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 
    iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT   //允许本机ping其他主机

    查看iptables的链和规则

    #iptables -L  //列出filter表中所有链的规则(默认为filter表)

    #iptables -L  INPUT //列出filter表中INPUT链的规则

    #iptables -L -V  //查看更详细的信息

     红框中的内容为链的名称及其默认策略,filter 表中所有链的默认策略都是 ACCEPT。红框下面的行代表什么呢?
    target:代表进行的动作,ACCEPT 是放行,REJECT 是拒绝,DROP 则是丢弃数据包。
    port:代表使用的协议,主要有 tcp、udp 和 icmp 三种。
    opt:额外的选项说明。
    source:规则针对的来源 IP。
    destination:规则针对的目标 IP。
    因为默认情况下没有添加自定义的规则,所以上图中这些行下面都是空的。

     清除本机防火墙规则

    #iptables -F  //清空所有制定的规则

    #iptables -X  //删除指定表中用户自定义的规则链(delete-chain)

    #iptables -Z  //将所有表的所有链的字节和数据包计数器清零

    保存iptables规则

    #iptables-save > /etc/sysconfig/iptables

     或者

    #service iptables save

    参考资料:

    1.iptables详解 - 永志 - 博客园 (cnblogs.com)

    2.防火墙和iptables - 骏马金龙 - 博客园 (cnblogs.com)

  • 相关阅读:
    第四章:(2)原理之 Dubbo 框架设计
    大三学习进度29
    大三学习进度27
    大三学习进度31
    大三学习进度24
    大三学习进度29
    大三学习进度26
    大三学习进度28
    大三学习进度25
    大三学习进度32
  • 原文地址:https://www.cnblogs.com/wushuai2018/p/14908388.html
Copyright © 2011-2022 走看看