zoukankan      html  css  js  c++  java
  • iptables(linux防火墙)详解

    一.基本格式
    1. iptable [-t 表] 命令选项 [连名] 匹配条件 [-j 动作]
    2.常用命令选项如下:
    -A 【append】在指定的连的结尾添加规则
    -D 【delete】删除指定连中的规则,可以按规则号或规则内容匹配
    -I 【insert】插入一条新规则,默认是在最前面
    -R 【replace】替换某一条规则
    -L 【list】列出所有规则
    -F 【flush】清空所有规则
    -N 【new】自定义一条规则连
    -X 【--delete-chain】删除用户自定义规则连
    - P 【policy】设置默认策略
    -n 【numeric】以数字方式显示,如:显示ip,但不显示主机名
    -v 【verbose】显示详细信息
    -V 【version】查看iptable的版本信息
    --line-number 查看规则连是,显示列表号
    -Z 清空计数器值
    二.举例
    # iptable -t filter -F【清空filter表中所有规则】
    # iptable -t filter -Z【清空filter表中的计数器值】
    #iptable -t filter -X 【清除filter表中自定义连】
    # iptable - t filter -P INPUT DROP 【设置INPUT连默认策略为DROP】
    # iptable -t filter -P OUTPUT DROP
    # iptable -t filter -P FORWROD DROP
    # iptable -t filter -A INPUT -p tcp -j ACCEPT 【在INPUT连最后添加一条允许tcp协议的数据包进入的规则】
    # iptable -t filter -R INPUT 1 -p tcp -j DROP 【替换INPUT连的第1条规则为拒绝tcp数据包进入】
    # iptable -t nat -vnL --line-number 【以详细的、数字的格式列出nat表中的所有规则】
    # iptable -t nat -D POSTROUTING 1 【删除nat表POSTROUTING连中的第1条规则】
    三.条件匹配
    1.协议匹配:用于检查数据包使用的协议,符合规则就允许,反之拒绝。允许使用的协议名在/etc/protocols文件
    中。
     常用的协议有tcp,udp,icmp,ip和all。【 -p协议名】
    # iptable -I INPUT -p icmp -j REJECT 【拒绝进入防火墙本身的icmp数据包】
    # iptable -A FORWARD -p udp -j ACCEPT 【允许转发udp的所有数据包】
    2. 地址匹配:用于检查数据包的地址是否符合规则,包括源地址和目的地址。【-s 源地址, -d 目的地址】
    # iptable -A FORWARD -s 10.0.0.0/8 -j DROP 【拒绝转发来自10.0.0.0/8 网段的数据包】
    # iptable -A FORWARD -d 80.0.0.0/8 -j DROP 【 拒绝转发目的是80.0.0.0/8 网段的数据包】
    3.端口匹配:用于检查数据包的tcp或udp端口,需要和“-p 协议类型” 一起使用【-sport 源端口,-dport 目的
    端口】
    # iptables -A FORWARD -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT 【允许转发来自10.0.0.0/8网段,目的端
    口是80的数据包】
    # iptables -I FORWARD -s 10.0.0.0/8 -p tcp --sport 21 -j ACCEPT【允许转发来自10.0.0.0/8网段,源端口是
    21的数据包】
    2018/5/8 iptable防火墙详解
    http://www.t086.com/article/5151 2/2
    4.接口匹配:用于检查数据包从防火墙那个接口进入或出去,来判断是否允许。
    # iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -p tcp --dport 80 -j ACCEPT
    【允许转发从eth0进入,来自10.0.0.0/8网段,使用tcp协议,目的端口椒80的数据包】
    # iptables -A INPUT -i eth0 -s 80.0.0.0/8 -j DORP 【拒绝从eth0进入,来自80.0.0.0/8的数据包】
    5.SNAT转换:一般linux充当网关服务器时使用
    SNAT只能用在nat表的POSTROUTING连,用于对源地址进行转换。要结合--to使用。
    # iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to 202.106.1.1
    【将来自10.0.0.0/8网段的所有数据包的源地址转为202.106.1.1】
    # iptables -t nat -A POSTROUTING -i eth0 -s 80.0.0.0/8 -p tcp --dport 25 -j SNAT --to 202.106.1.1
    6.DNAT转换:只能用在nat表中的PREROUTING连,用于对目的地址或端口进行转换。
    # iptables -t nat -A PREROUTING -i eth1 -d 202.106.1.1 -p tcp --dport 80 -j DNAT --to 10.0.0.10
    【将从eth1 进入,目的地址是202.106.1.1,使用tcp 协议,目的端口是80的数据包的目的地址转为10.0.0.1】
    7.MASQUERADE:伪装,是SNAT的特例。
    # iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE
    【将来自10.0.0.0/8网段,从eth1出去的数据包的源地址伪装为eth1接口地址】
    四.拓展模块
    1.按来源MAC地址匹配
    # iptables -t filter -A FORWARD -m --mac-source 00:02:b2:03:a5:f6 -j DROP
    【拒绝转发来自该MAC地址的数据包】
    2.按多端口或连续端口匹配
     20:表示20以后的所有端口
     20:100表示20到100的端口
     :20表示20之前的所有端口
     -m multiport [--prots, --sports,--dports]
    # iptables -A INPUT -p tcp - m multiport --dports 21,20,25,53,80 -j ACCEPT 【多端口匹配】
    # iptables -A INPUT -p tcp -dport 20: -j ACCEPT
    # iptables -A INPUT -p tcp -sport 20:80 -j ACCEPT
    # iptables -A INPUT -p tcp -sport :80 -j ACCEPT
    3.还可以按数据包速率和状态匹配
    -m limit --limit匹配速率如: -m limit --limit 50/s -j ACCEPT
    -m state --state状态如: -m state --state INVALID,RELATED -j ACCEPT
  • 相关阅读:
    FZU-Problem 2150 Fire Game
    LeetCode120——Triangle
    Coder-Strike 2014
    AP INVOICES IMPORT API(NOT request)
    NYOJ-277-车牌号
    软件測试方法
    C++中字符数组和字符串string
    【机器学习算法-python实现】PCA 主成分分析、降维
    主题讲座:移动互联网时代的创业机会
    ubuntu环境eclipse配置
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257237.html
Copyright © 2011-2022 走看看