zoukankan      html  css  js  c++  java
  • iptables

    前言:

    iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter

    一、iptables整体图

    所以,根据上图,我们能够想象出某些常用场景中,报文的流向:

    到本机某进程的报文:PREROUTING –> INPUT

    由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING

    由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING

    二、表和链

    一共有4张表5张链

    每个”链”中的规则都存在于哪些”表”中。

    PREROUTING      的规则可以存在于:raw表,mangle表,nat表。

    INPUT          的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。

    FORWARD         的规则可以存在于:mangle表,filter表。

    OUTPUT         的规则可以存在于:raw表mangle表,nat表,filter表。

    POSTROUTING      的规则可以存在于:mangle表,nat表。

    表(功能)<–>   链(钩子):

    raw     表中的规则可以被哪些链使用:PREROUTING,OUTPUT

    mangle  表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

    nat     表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)

    filter  表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT

    三、常用规则

    filter:常用三个链:

    INPUT(policy Accept)

    FORWARD(policy DROP)

    OUPUT(policy Accept)

    1、查看filter表所有链

    iptables -t filter -L -n
    

    -t:指定表,filter,filter表为默认表,可不写

    -L:列出

    -n:添加行号

    2、添加规则

    iptables -t filter -A INPUT -j DROP -p tcp --dport 8081 
    -j DROP: 将表丢弃
    -- dport: 指定8081端口
    - p:指定TCP 协议

    3、删除第一条规则

    iptables -t filter -D INPUT 1
    

    4、FORWARD

    iptables -t filter -I FORWARD -j ACCEPT
    

    5、OUTPUT

    将发往192.168.0.144的TCP包全部丢弃

    iptables -t filter -A OUTPUT -j DROP -p tcp -d 192.168.0.144

    开放18086端口

    iptables -I INPUT -p tcp --dport 18080 -j ACCEPT
    

    6、REJECT  拒绝

    例:拒绝来自85主机的tcp类型的请求

    iptables -t filter -I INPUT -s 192.168.2.85 -d 192.168.2.93 -p tcp -j REJECT
    

    7、ACCEPT 允许

    -s: 匹配源地址  # 源 IP,可以有多个,使用逗号隔开,有多少个地址就有多少条规则
     
    -d:匹配目的地址  目的 IP,可以有多个,使用逗号隔开,有多少个地址就有多少条规则

    -i:匹配入站网卡地址

    #以下两行允许某些调用 localhost 的应用访问

    iptables -A INPUT -i lo -j ACCEPT #规则1
    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #规则2

    #以下两行分别允许所有来源访问 TCP 80,443 端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT #规则5
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT #规则6

    四、增删改查

    查找:

    1.INPUT——进来的数据包应用此规则链中的策略

    2.OUTPUT——外出的数据包应用此规则链中的策略  

    iptables -t nat -nvL OUTPUT  //查找nat表中的出去的规则

    iptables -A INPUT -i lo -j ACCEPT 允许来自于lo接口的数据包

    iptables -A OUTPUT -o lo -j ACCEPT 允许向lo接口发送数据包

    2、增加 append

    命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
    示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP

    3、删除

    1、 具体匹配规则删除

    命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作
    示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP

    2、 按--line按删除规则,-D表示删除对应链中的规则

    命令语法:iptables -t 表名 -D 链名 规则序号
    示例:iptables -t filter -D INPUT 3

    五、NAT常用规则

    NAT表三个链:PREROUTING,POSTROUTING,OUTPUT

    1、利用iptables将目的地址为192.168.1.189的80端口的数据包更改目的地址为内网机器的IP1.1.1.2,目的端口为80.

    iptables -t nat -A PREROUTING -d 192.168.1.189 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:80
     
    iptables -t nat -A PREROUTING -d 192.168.1.189 -j DNAT --to-destination 1.1.1.2   将所有流量转发到内网主机
    

    2、# 配置源地址转换 SNAT

    #将 192.168.2.0/24 转换成 192.168.1.63
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.63 #规则11
    

    3、# 配置目的地址转换 DNAT

    #将 192.168.1.63 的 80 端口请求转发到 192.168.2.2 的 80 端口
    iptables -t nat -A PREROUTING -d 192.168.1.63 -p tcp --dport 80 -j DNAT --to 192.168.2.2:80 #规则12
    

     4、列出所有规则

    iptables -t nat -L
    

    5、目的地址转换

    例子:访问本机的数据包,如果目的端口是7788,则转到192.168.0.11的7799端口

    iptables -t nat -A PREROUTING -P tcp --dport 7788 -j DNAT --to 192.168.0.11:7799
    

    6、源地址转换

    例子:发往192.168.0.11的7799端口的数据包SNAT到本机

    iptables -t nat -A Postrouting -p tcp -d 192.168.0.11 --dport 7799 -j SNAT --to 192.168.0.12
  • 相关阅读:
    整合Spring与Hibernate
    基本正则
    vue权限指令
    vue数字动态转换大写
    element ui 表格动态生成多级表头、一级表头,可无限嵌套
    vuex和vue-router全家桶
    element表格内容过多title提示
    HBuilder打包App方法
    mui底部选项卡切换页面
    mui框架的地步选项卡公用加载对应页面demo
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/15784362.html
Copyright © 2011-2022 走看看