zoukankan      html  css  js  c++  java
  • iptables常用语法与案例

    常用命令语法:
    [root@www ~]# iptables [-t tables] [-L] [-nv]
    选项与参数:
    -t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用默认的
    filter
    -L :列出目前的 table 的规则
    -n :不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多!
    -v :列出更多的信息,包括通过该规则的封包总位数、相关的网络接口等
    范例:列出 filter table 三条链的规则
    [root@www ~]# iptables -L -n
    Chain INPUT (policy ACCEPT) <==针对 INPUT 链,且预设政策为可接受
    target prot opt source destination <==说明栏
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
    <==第 1 条规则
    ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
    常用语法:
    [root@www ~]# iptables [-AI 链名] [-io 网络接口] [-p 协议]
    > [-s 来源 IP/网域] [-d 目标 IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
    选项与参数:
    -AI 链名:针对某的链进行规则的 "插入" 或 "累加"
    -A :新增加一条规则,该规则增加在原本规则的最后面。例如原本已经
    有四条规则,使用 -A 就可以加上第五条规则!
    -I :插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。
    例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 号
    链 :有 INPUT, OUTPUT, FORWARD 等,此链名称又与 -io 有关,请看底
    下。
    -io 网络接口:设定封包进出的接口规范
    -i :封包所进入的那个网络接口,例如 eth0, lo 等接口。需与 INPUT 链
    配合;
    -o :封包所传出的那个网络接口,需与 OUTPUT 链配合;
    -p 协定:设定此规则适用于哪种封包格式
    主要的封包格式有: tcp, udp, icmp 及 all
    -s 来源 IP/网域:设定此规则之封包的来源项目,可指定单纯的 IP 或包括
    网域,
    例如:IP : 192.168.0.100网域: 192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
    若规范为『不许』时,则加上 ! 即可,例如:
    -s ! 192.168.100.0/24 表示不许 192.168.100.0/24 之封包来源;
    -d 目标 IP/网域:同 -s ,只不过这里指的是目标的 IP 或网域。
    -j :后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)
    及记录(LOG)
    关于端口的语法
    [root@www ~]# iptables [-AI 链] [-io 网络接口] [-p tcp,udp]
    > [-s 来源 IP/网域] [--sport 端口范围]
    > [-d 目标 IP/网域] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
    选项与参数:
    --sport 端口范围:限制来源的端口口号码,端口口号码可以是连续的,例如
    1024:65535
    --dport 端口范围:限制目标的端口口号码
    事实上就是多了那个 --sport 及 --dport 这两个玩意儿,重点在那个 port 上面啦!
    不过你得要特别注意,因为仅有 tcp 与 udp 封包具有端口,因此你想要使用 --dport,
    --sport 时,得要加上 -p tcp 或 -p udp 的参数才会成功
    状态语法
    [root@www ~]# iptables -A INPUT [-m state] [--state 状态]
    选项与参数:
    -m :一些 iptables 的外挂模块,主要常见的有:
    state :状态模块
    mac :网络卡硬件地址 (hardware address)
    --state :一些封包的状态,主要有:
    INVALID :无效的封包,例如数据破损的封包状态
    ESTABLISHED:已经联机成功的联机状态;
    NEW :想要新建立联机的封包状态;
    RELATED :这个最常用!表示这个封包是与我们主机发送出去的封包有关
    范例:只要已建立或相关封包就予以通过,只要是不合法封包就丢弃
    [root@www ~]# iptables -A INPUT -m state --state INVALID -j DROP
    设置默认策略
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
     保存iptables规则 service iptables save
    配置步骤
    1.规则归零:清除所有已经存在的规则 (iptables -F...)
    2. 预设政策:除了 INPUT 这个自定义链设为 DROP 外,其他为预设 ACCEPT;
    3. 信任本机:由于 lo 对本机来说是相当重要的,因此 lo 必须设定为信任装
    置;
    4. 回应封包:让本机主动向外要求而响应的封包可以进入本机
    (ESTABLISHED,RELATED)
    5. 信任用户:这是非必要的,如果你想要让区网的来源可用你的主机资源时
    1. 清除规则
    iptables -F
    iptables -X
    iptables -Z
    # 2. 设定政策
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    # 3~5. 制订各项规则
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    #iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
    # 6. 写入防火墙规则配置文件
    /etc/init.d/iptables save

    iptables查看、添加、删除规则案例
    1、查看
    iptables -nvL –line-number
    -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
    -n 不对ip地址进行反查,加上这个参数显示速度会快很多
    -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
    –line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
    2、添加
    添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
    当前规则:
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.4          0.0.0.0/0
    添加一条规则到尾部:
    [root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP
    再插入一条规则到第三行,将行数直接写到规则链的后面:
    [root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP
    查看:
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.3          0.0.0.0/0
    4    DROP       all  --  192.168.1.4          0.0.0.0/0
    5    DROP       all  --  192.168.1.5          0.0.0.0/0
    可以看到192.168.1.3插入到第三行,而原来的第三行192.168.1.4变成了第四行。
    3、删除
    删除用-D参数
    删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
    [root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
    有时候要删除的规则太长,删除时要写一大串,既浪费时间又容易写错,这时我们可以先使用–line-number找出该条规则的行号,再通过行号删除规则。
    [root@test ~]# iptables -nv --line-number
    iptables v1.4.7: no command specified
    Try `iptables -h' or 'iptables --help' for more information.
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.3          0.0.0.0/0
    删除第二行规则
    [root@test ~]# iptables -D INPUT 2
    4、修改
    修改使用-R参数
    先看下当前规则:
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.5          0.0.0.0/0
    将第三条规则改为ACCEPT:
    [root@test ~]# iptables -R INPUT 3 -j ACCEPT
    再查看下:
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
    第三条规则的target已改为ACCEPT。
  • 相关阅读:
    Python 之 面向对象(一)
    Python 之 基础知识(五)
    javaweb 之 代理模式
    Python 之 基础知识(四)
    Python 之 基础知识(三)
    如何在非 sudo 用户下运行 docker 命令?
    Leetcode 55
    Leetcode 11
    Leetcode 466
    几个内存操作函数使用
  • 原文地址:https://www.cnblogs.com/--smile/p/11055067.html
Copyright © 2011-2022 走看看