侧边栏壁纸
博主头像
爱运维 博主等级

行动起来,活在当下

  • 累计撰写 197 篇文章
  • 累计创建 143 个标签
  • 累计收到 21 条评论

目 录CONTENT

文章目录

我所理解的防火墙iptables用法

Administrator
2016-12-29 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

防火墙不是杀毒,不是杀毒。这个很重要

防火墙工作在内核。

首先看看什么是源地址,什么是目标地址:https://www.iyunw.cn/archives/jian-yi-yuan-li-tu-li-jie-yuan-di-zhi-mu-biao-di-zhi-yi-ci-fang-wen-de-guo-cheng/

iptables分为4表5链,分别为

四表:
filter: 过滤,防火墙;INPUT, FORWARD, OUTPUT
nat: 网络地址转换;PREROUTING(DNAT), OUTPUT, POSTROUTING(SNAT)
mangle:拆解报文,做出修改,封装报文;PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
raw:关闭nat表上启用的连接追踪机制;访问量多的一定要关闭(不常用)PREROUTING, OUTPUT

五链(内置):
PREROUTING 数据包进入路由表之前,不能做过滤
INPUT 通过路由表后目的地为本机
FORWARD 通过路由表后,目的地不为本机
OUTPUT 由本机产生,向外转发
POSTROUTING 发送到网卡接口之前,不能做过滤
数据包流入数据顺序:
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
各功能实现:
    filter:INPUT,FORWARD,OUTPUT
    nat:PREROUTING(DNAT),OUTPUT,POSTROUTING(SNAT)
    mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    raw:PREROUTING,OUTPUT




iptable -t 表名 子命令
    
-t 表名:可省,省略时默认为filter

子命令:
           链管理:
               -F:flush,清空规则链;省略链,表示清空指定表上的所有的链;
               -N:new, 创建新的自定义规则链;
               -X:drop, 删除用户自定义的空的规则链;
               -Z:zero,清零,置零规则计数器;
               -P:Policy,为指定链设置默认策略;对filter表中的链而言,默认策略通常有ACCEPT, DROP(丢弃报文)常用, REJECT(拒绝报文); 
               -E: rEname,重命令自定义链
           规则管理:
               -A:append,将新规则追加于指定链的尾部;
               -I:insert,将新规则插入至指定链的指定位置,默认是插入为编号1;
               -D:delete,删除指定链上的指定规则;
                   有两种指定方式:
                       (1) 指定匹配条件;
                       (2) 指定规则编号;
               -R:replace,替换指定链上的指定规则;先指明规则编号,再指明新规则
              规则管理匹配条件:
                   基本匹配:
                   [!] -s:检查报文中源IP地址是否符合此处指定的地址范围;
                   [!] -d:检查报文中目标IP地址是否符合此处指定的地址范围;
                   -p {tcp | udp | icmp}:检查报文中的协议,即ip首部中的protocols所标识的协议;
                        --dport:目标端口,可以是单个端口或连续多个端口
                        --sport:源端口
                        --syn:检查是否为新建tcp请求的第一次请求
                   -i 接口名:数据报文的流入接口;仅能用于PREROUTING, INPUT及FORWARD链上;如eth0等
                   -o 接口名:数据报文的流出接口;仅能用于FORWARD, OUTPUT及POSTROUTING链上;如eth0等                    
          -j target:跳转至指定target,以下为所有target
                   ACCEPT: 接受
                   DROP: 丢弃
                   REJECT: 拒绝
                   RETURN: 返回调用链
                   REDIRECT:端口重定向
                   LOG: 记录日志
                   MARK:做防火墙标记
                   DNAT:目标地址转换
                   SNAT:源地址转换
                   MASQUERADE:地址伪装
           查看:
               -L:list,列出指定链上的所有规则;
                   -n: numberic,以数字格式显示地址和端口号;不反解
                   -v: verbose,显示详细信息;
                       -vv, -vvv
                   --line-numbers:显示规则编号;
                   -x: exactly, 显示计数器计数结果的精确值;
当做NAT时



nat::
    PREROUTING:DNAT (目标地址转换):只修改请求报文目标地址     ;范例端口映射
    POSTROUTING:SNAT  (原地址转换):只修改请求报文原标地址     :常用于共享上网
范例:



1、将filter表的FORWORD链默认规则改为丢弃
iptable -t filter -P FORWORD DROP

2、显示所有链上的规则和编号
iptable -L -n --line-numbers

3、删除FORWORD链的第9条规则
iptables -D FORWORD 9

4、放行所有访问本机的tcp协议,允许本机出去的所有tcp协议
iptables -t filter -A INPUT -d 本机ip -p tcp -j ACCEPT
iptables -t filter -A OUTPUT -s 本机ip -p tcp -j ACCEPT
iptables -P INOUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

5、允许外部ping本机
iptables -A INPUT -d 本机ip -p icmp -j ACCEPT
iptables -A OUTPUT -s 本机ip -p icmp -j ACCEPT

6、删除指定编号的规则
iptables -L -n --line-numbers
iptables -D INPUT 编号
iptables -D OUTPUT 编号

7、允许从eth0进入访问本机ip的所有报文
iptables -A INPUT -d 本机ip -i eth0 -j ACCEPT
iptables -A OUTPUT -s 本机ip -o eth0 -j ACCEPT

8、放行ssh
iptables -A INPUT -d 本机ip -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 本机ip -p tcp --sport 22 -j ACCEPT
iptables -P INOUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

9、将用户访问202.103.96.112映射到内网192.168.0.112
iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112

10、局域网用户192.168.0.0/24访问外网讲原地址转换为我们公网IP58.20.51.66
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66
或者:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE




其他关于扩展匹配我不会。。。也没怎么用。。。

0

评论区