iptables 订阅
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。 [1] 展开全文
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。 [1]
信息
版    本
Red Hat Linux 7.1
有效状态
ESTABLISHED 、 INVALID
组    件
netfilter 和 iptables
中文名
iptables
优    点
配置有状态的防火墙
外文名
iptables
IPTABLES历史版本
与Linux内核各版本集成的防火墙历史版本:2.0.X内核:ipfwadm2.2.X内核:ipchains2.4.X内核:iptables
收起全文
精华内容
下载资源
问答
  • iptables

    2017-06-23 22:59:51
    iptables
    1. iptables文件位置

      /etc/sysconfig/iptables
    2. 指令

      如果你想配置属于自己的防火墙,那就清除现在filter的所有规则
      > iptables -F        清除预设表filter中的所有规则链的规则
      > iptables -X        清除预设表filter中使用者自定链中的规则
      > iptables -L -n
      > service iptables start restart stop status
    3. 列出INPUT 链所有的规则

      > iptables -L INPUT --line-numbers
    4. 屏蔽单个IP的命令是

      > iptables -I INPUT -s 123.45.6.7 -j DROP
    5. 封整个段即从123.0.0.1到123.255.255.254的命令

      > iptables -I INPUT -s 123.0.0.0/8 -j DROP  
    6. 封IP段即从123.45.0.1到123.45.255.254的命令

      > iptables -I INPUT -s 124.45.0.0/16 -j DROP
    7. 封IP段即从123.45.6.1到123.45.6.254的命令是

      > iptables -I INPUT -s 123.45.6.0/24 -j DROP
    8. 指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽。因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可

    9. 删除指定行规则

      1. 直接解除指定ip的黑名单

        > iptables -D INPUT -s 121.40.167.3 -j DROP
      2. 利用行号删除

        列出所有规则(行号)
        > iptables -nL --line-number
        进行删除(删除多个ip,行号用空格隔开)
        > iptables -D INPUT 4  167
    10. 如果想针对某IP进行单独开放端口可以如下配置

      如果我需要对内网某机器单独开放mysql端口,应该如下配置:

      在tcp协议中,禁止所有的ip访问本机的1521端口。

      > iptables -I INPUT -p tcp --dport 1521 -j DROP
      
      --dport为目标端口,当数据从外部进入服务器为目标端口 
      --sport为数据源端口,数据从服务器出去则为数据源端口
       -s是指定源地址,-d是指定目标地址。
      
      > iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT  
      > iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT  
    11. 将内容保存到 /etc/sysconfig/iptables

      > service iptables save
    12. 重启iptables

      > service iptables restart
      
      centos 7:   
      > systemctl restart iptables.service
    13. 查看iptables状态

      > systemctl status iptables.service
    展开全文
  • Iptables

    千次阅读 2019-03-21 18:49:36
    iptables介绍 linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。 netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则...

    iptables介绍
    linux的包过滤功能,即linux防火墙,它由netfilter 和 iptables 两个组件组成。
    netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
    iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得容易。

    iptables基础
    我们知道iptables是按照规则来办事的,规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

    当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时,客户端报文的目标终点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点,我们说过,netfilter才是真正的防火墙,它是内核的一部分,所以,如果我们想要防火墙能够达到"防火"的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了input关卡和output关卡,而这些关卡在iptables中不被称为"关卡",而被称为"链"。
    在这里插入图片描述
    其实我们上面描述的场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持IP_FORWARD时,我们可以将报文转发给其他服务器,所以,这个时候,我们就会提到iptables中的其他"关卡",也就是其他"链",他们就是 “路由前”、“转发”、“路由后”,他们的英文名是
    PREROUTING、FORWARD、POSTROUTING

    也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,也就是说,根据实际情况的不同,报文经过"链"可能不同。如果报文需要转发,那么报文则不会经过input链发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去的。
    在这里插入图片描述
    所以,根据上图,我们能够想象出某些常用场景中,报文的流向:
    到本机某进程的报文:PREROUTING --> INPUT
    由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
    由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING

    表的概念
    我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了5种表

    filter表:负责过滤功能,防火墙,也就是由filter表来决定一个数据包是否继续发往它的目的地址或者被丢弃;内核模块:iptables_filter

    nat表:network address translation,网络地址转换功能;内核模块:iptable_nat

    mangle表:拆解报文,做出修改,并重新封装 的功能,用于修改IP头部信息,如TTL(time to live);iptable_mangle

    raw表:关闭nat表上启用的连接追踪机制;iptable_raw

    security :提供在数据包中加入SElinux特性的功能。

    最常用的有三张表:filter,nat,mangle
    在这里插入图片描述
    数据经过防火墙的流程
    在这里插入图片描述

    链的作用
    prerouting
    数据包进入路由表之前的操作在此进行

    input
    通过路由表后发现目的地址为本机,则匹配该链中规则

    forward
    通过路由表后发现目的地址非本机,则匹配该链中规则

    output
    由本机产生的,向外转发的匹配该链中的规则

    postrouting
    发送到网卡接口之前,进行该链中规则的匹配

    命令格式
    iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 处理动作或跳转]
    -t 接表名,如果不加-t 默认就是 –t filter

    命令选项
    -L 列出一个或所有链的规则
    -v 显示详细信息,包括每条规则的匹配句数量和匹配字节数
    -x 在v的基础上,禁止自动换算单位(K,M)
    -n 只显示ip地址和端口号,不显示域名和服务名称
    -I 插入到防火墙第一条生效
    -A 添加链是添加到最后一条
    -D 删除指定链中的某一条规则,按规则序号或内容确定要删除的规则
    -F 清空指定链中的所有规则,默认清空表中所有链的内容
    -X 删除指定表中用户自定义的规则链

    条件匹配
    -i 入站请求接口
    -o 出站请求接口
    -s 入站源地址
    -d 目标地址
    -p 指定规则协议,如tcp, udp,icmp等,可以使用all来指定所有协议
    –dport 目的端口,数据包的目的(dport)地址是80,就是要访问我本地的80端口
    –sport 来源端口 数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。

    处理动作
    ACCEPT:允许数据包通过。
    DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
    REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
    SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
    MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
    DNAT:目标地址转换。
    REDIRECT:在本机做端口映射。
    LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
    一般不使用REJECT(拒绝)行为.REJECT会带来安全隐患

    操作样例:
    1 查看iptables规则
    iptables -L -n

    2 清除默认规则
    iptables –F 清除所有规则
    iptables –X 删除用户自定义的链
    iptables –Z 链的计数器清零
    默认情况下,我们的清除规则实际是对filter表的操作,如果是nat表,需要指定表
    iptables –t nat –F

    3 保存修改
    [root@es salt]# /etc/init.d/iptables save

    4 禁止ssh 默认22端口
    iptables -A INPUT -p tcp --dport 22 -j DROP

    5 禁止多端口
    iptables -A INPUT -p tcp --dport 80:3306 -j DROP
    [root@es ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
    列表形式禁止多端口
    iptables -A INPUT -p tcp -m multiport --dport 50,51,60,8888 -j DROP
    注:-m multiport 列表禁止多端口的参数
    [root@es ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
    DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,8888

    6 删除规则
    方法1
    iptables -D INPUT -p tcp --dport 22 -j DROP
    方法2
    [root@es ~]# iptables -L -n --line-number
    Chain INPUT (policy ACCEPT)
    num target prot opt source destination
    1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpts:80:3306
    2 DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,8888

    iptables -D INPUT 1
    [root@es ~]# iptables -L -n --line-number
    Chain INPUT (policy ACCEPT)
    num target prot opt source destination
    1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 multiport dports 50,51,60,8888

    7 禁止10.0.0.0/24网段连入
    iptables -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP
    注:-i 入站请求接口
    -o 出站请求接口
    -s 入站源地址
    -d 目标地址
    [root@es ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP all – 10.0.0.0/24 0.0.0.0/0

    8 除了192.168.56.1其他IP都不能通过eth0连接
    iptables -I INPUT -i eth0 -s ! 192.168.56.1 -j DROP
    注:!和IP之间有空格 有提示 不用理会
    [root@es ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    DROP all – !192.168.56.1 0.0.0.0/0

    9 禁 192.168.56.7 ping 本机
    iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.56.7 -j DROP

    10 对外的WEB服务器,要允许http服务通过,并且不限制IP
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT

    11 允许FTP服务
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    注:FTP服务有些特殊 说以要允许ftp服务通过防火墙需要上面两步
    ESTABLISHED 已经建立连接的数据包允许通过
    RELATED 发出去的数据包允许通过

    12 端口转发
    iptables -t nat -A PREROUTING -d 192.168.52.5 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80
    注: 访问目标地址是192.168.52.5 端口80的访问都转给172.16.1.17:80

    展开全文
  • IPTABLES

    千次阅读 2010-03-17 09:57:00
    IPTABLES Iptables 基础,规则、链、表规则:就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、...
    IPTABLES
    Iptables 基础,规则、链、表
    规则:就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别定义了源地址、目的地址、传输协议(如TCP,UDP,ICMP)和服务类型(HTTP,FTP,SMTP)等,当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept),拒绝(reject),和丢弃(drop)等。配置防火墙主要工作就是添加,修改和删除这些规则。
    链:链(CHAINS)是数据包传播的途径,每一条链其实就是众多规则中的一个检查清单,每一条链可以有一条或数条规则。当一个数据包到达一条链时,iptables就从链中第一条规则开始检查,看该数据包是否满足规则定义的条件。如果满足,系统就会根据这条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables将会按照默认策略来处理数据包。
    表:表(tables)提供了特定的功能,iptables内建了3个表,即filter表、nat表、和mangle表。分别用于实现包过滤,网络地址转换和包重构的功能
    1.  Filter
    Filter表主要是用于过滤数据包,是iptables的默认表,包含了INPUT链(用于处理进入的数据包),FORWORD链(处理转发的数据包),OUTPUT链(处理本地生成的数据包)。在filter表中只允许对数据包进行接受、丢弃操作,而无法对数据包进行修改。
    2.  Nat
    Nat表主要用于网络地址转换,可以实现一对一,一对多,多对多等NAT工作,包含了PREROUTING链(修改即将到来的数据包),OUTPUT链(修改路由之前本地生成的数据包)和POSTROUTING(修改即将出去的数据包)。
    3.  Mangle
    Mangle表主要用于对指定包进行修改,如TTL,TOS等。用的很少。
    IPTABLES传输数据包的过程

    1、  当一个数据包进入网卡时,他首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。
    2、  如果数据包是进入本机的,就会向下到INPUT链。数据包到达INPUT链后,任何进程都会接受。本机上运行的程序也可以发出数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
    3、  如果数据包是要转发出去的,且内核允许,数据包就会经过FORWARD链,然后到POSTROUTING链输出。
    用户可以在各个链定义规则。
    Iptables命令格式:
    iptables [-t ] –命令 匹配 动作
    1、  表选项:filter表,nat表和mangle
    2、  命令选项,用于指定执行方式,包括插入规则、删除规则、添加规则等。
    -P或者—policy      定义默认策略
    -L或者--list         查看iptables规则列表
    -A或者--append     在规则列表最后面添加1条规则
    -I或者--insert       在指定位置插入1条规则
    -D或者--delete      从规则列表中删除1条规则
    -R或者--replace     替换规则列表中的某条规则
    -F或者--flush       删除表中所有规则
    -Z或者--zero       将表中数据包计数器和流量计数器清零
    3、匹配选项,匹配指定数据包与规则匹配所具有的特征,包括源地址、目的地址、传输协议和端口号
       -i或者—in-interface <网络接口名称>    指定数据包从哪个网络接口进入,如ppp0,eth0
       -o或者—out-interface <网络接口名称>   指定数据包从哪个网络接口流出
       -p或者—proto <协议类型>             指定数据包匹配的协议tcp,udp,icmp
       -s或者—source <源地址或子网>        指定数据包匹配的源地址
       --sport <源端口号>                    指定数据包匹配的源端口号
       -d或者—destination <目的地址或者子网>
       --dport <目标端口号>
    4、动作选项,指定当数据包与规则匹配时,应该做什么操作,如接口,丢弃等
       ACCEPT          接受数据包
       DROP            丢弃数据包
       REDIRECT        将数据包重新转向到本机或另外一台主机的某个端口
       SNAT             源地址转换
       DNAT             目的地址转换
       MASQUERADE     IP伪装,即NAT技术
       LOG               日至功能,将符合规则的数据包的相关信息记录在日至中
    Iptables的使用
    1、  定义默认策略
    iptables [-t 表名] <-P> <链名> <动作>
    例如:iptables –P INPUT ACCEPT                定义filterINPUT链默认策略接受所有数据包
          iptables –t nat –P OUTPUT DROP            natOUTPUT链默认策率丢弃所有数据包
    技巧,定义默认规则拒绝所有
          iptables –P INPUT DROP
          iptables –P FORWARD DROP
          iptables –P OUTPUT ACCEPT
    2、  查看iptables 规则
    iptables [-t 表名] <-L> [链名]
    例如查看nat表所有链的规则列表
    Iptables –t nat –L
    3、  增加、插入、删除和替换规则
    Iptables [-t 表名] <-A I D R> 链名 [规则编号] [-i o 网卡名称 ] [-p 协议类型] [-s 源地址或子网] [--sport 源端口号] [-d目的IP地址或子网] [--dport 目的端口号] <-j 动作>
     例如为filterINPUT链添加1条规则
    iptables –t filter –A INPUT –s 192.168.1.200 –j DROP
         例如在filterINPUT链规则列表中第2条规则前插入1条规则
           iptables –t filter –I INPUT 2 –s 192.168.2.0/24 –p tcp –dport 80 –j DROP
         例如删除filterINPUT链规则列表中第3条规则
           iptables –t filter –D INPUT 3
    使用iptables实现NAT
    首先要开启内核路由功能:
    echo “1”> /proc/sys/net/ipv4/ip_forward
    然后实现IP伪装,在nat表中的POSTROUTING链加入一条规则,这条规则是将所有由ppp0口送出的包伪装。
    iptables –t nat –A POSTROUTING –o PPP0 –j MASQUERADE
    查看规则虽然可以用iptables -L 来查看,但是信息并不完全,所以还是用cat /etc/sysconfig/iptables 来查看
    注意:每次添加或者删除规则后,要service iptables save 来保存,否则iptables服务重新启动后,规则会丢失
    展开全文
  • linux下用iptables做本机端口转发方法

    万次阅读 2015-01-15 11:06:02
    下面介绍一下iptables的配置 一 :从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forward 举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口 a.同一端口转发 ...

    本文根据众多互联网博客内容整理后形成,引用内容的版权归原始作者所有,仅限于学习研究使用

    拓扑图

    下来一个一般情况下公司内网和外网的拓扑图

     

    一、概要

    1、防火墙分类

          ①包过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-ACL)检查数据流的源地址,目的地址,源和目的端口,IP等信息。
          ②代理服务器型防火墙

    2、iptables基础

          ①规则(rules):网络管理员预定义的条件
          ②链(chains): 是数据包传播的路径
          ③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
          ④filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
          ⑤nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
          ⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT

    3、其它

       iptables是按照顺序读取规则
       防火墙规则的配置建议
        Ⅰ 规则力求简单
        Ⅱ 规则的顺序很重要
        Ⅲ 尽量优化规则
        Ⅳ 做好笔记

    二、配置

    1、iptables命令格式

         iptables [-t 表] -命令 匹配 操作 (大小写敏感)
       动作选项
         ACCEPT          接收数据包
         DROP             丢弃数据包
         REDIRECT      将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
         SNAT             源地址转换
         DNAT             目的地址转换
         MASQUERADE       IP伪装
         LOG               日志功能

    2、定义规则

       ①先拒绝所有的数据包,然后再允许需要的数据包
          iptalbes -P INPUT DROP
          iptables -P FORWARD DROP
          iptables -P OUTPUT ACCEPT
       ②查看nat表所有链的规则列表
          iptables -t nat -L
       ③增加,插入,删除和替换规则
         iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]
        参数:-A 增加
                   -I 插入
                   -D 删除
                   -R 替换
     

    三、例子

    ①iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
    禁止IP为192.168.1.5的主机从eth0访问本机②iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport 80 -j DROP
    禁止子网192.168.5.0访问web服务③iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP
    禁止IP为192.168.7.9访问FTP服务
    ④iptables -t filter -L INPUT
    查看filter表中INPUT链的规则
    ⑤iptables -t nat -F
    删除nat表中的所有规则
    ⑥iptables -I FORWARD -d wwww.playboy.com -j DROP
    禁止访问www.playboy.com网站
    ⑦iptables -I FORWARD -s 192.168.5.23 -j DROP
    禁止192.168.5.23上网

     

    下面详细介绍一下iptables的配置

    一 :从一台机到另一台机端口转发

    启用网卡转发功能
    #echo 1 > /proc/sys/net/ipv4/ip_forward

    举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口


    a.同一端口转发

    (192.168.0.132上开通1521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)

    iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
    iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE

    b.不同端口转发

    (192.168.0.132上开通21521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21521 -j ACCEPT)

    iptables -t nat -A PREROUTING -p tcp -m tcp --dport21521 -j DNAT --to-destination192.168.0.211:1521
    iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132

    以上两条等价配置(更简单[指定网卡]):
    iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521
    iptables -t nat -A POSTROUTING -j MASQUERADE

    保存iptables
    #service iptables save
    #service iptables restart
     

    二 用iptables做本机端口转发

    代码如下:
       iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

    估计适当增加其它的参数也可以做不同IP的端口转发。

    如果需要本机也可以访问,则需要配置OUTPUT链(********特别注意:本机访问外网的端口会转发到本地,导致访不到外网,如访问yown.com,实际上是访问到本地,建议不做80端口的转发或者指定目的 -d localhost):
      iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080

    原因:
    外网访问需要经过PREROUTING链,但是localhost不经过该链,因此需要用OUTPUT。

    例子1:

    概述:

          有一些核心MYSQL服务器位于核心机房的内网段,经常需要去连接这些服务器,因无法直接通过外网访问,给管理造成了不便。
    思路:

          虽然解决此问题的方法及思路有很多,但当下想使用IPTABLES的端口重定向功能解决此问题,比较简单易用,而且扩展性也比较好,依次类推,可以运用到其他的端口转发方面的应用。
    网络环境:
    公网服务器      :eth0:公网IP    eth1:内网IP - 192.168.1.1
    MYSQL服务器:eth1:内网IP - 192.168.1.2

    实现方法:通过访问公网IP的63306端口来实现到内网MYSQL服务器的3306端口的访问
    在公网服务器上:
    配置脚本:
    iptables -t nat -A PREROUTING -p tcp --dport 63306 -j DNAT --to-destination 192.168.1.2:3306
    iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1

    允许服务器的IP转发功能:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    使用方法:
    mysql -h 公网IP -p 63306 -uroot -p

    例子2:

         由于业务需要,服务器越来越多,内网服务器无外网环境管理甚是不便,所以折腾了一下外网到内网的端口转发以达到轻松管理的目的,贴一下心得。

    S1:
    eth0 10.0.0.1
    eth1 x.x.x.x

    S2:
    eth0 10.0.0.2

    S1 8082端口转发到内网机器22端口

    iptables规则配置如下:

    iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22

    iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x

    说明:
    iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"

    iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to-source "运行iptables机器的内网ip"

     

    另外,网上看到一篇很好的文章,这里转发一下:https://icewing.cc/post/25-iptables-policy.html

    25个最常用的iptables策略

    1、清空存在的策略

    当你开始创建新的策略,你可能想清除所有的默认策略,和存在的策略,可以这么做:

    • iptables -F 或者iptables –flush

    2、设置默认策略

    默认链策略是ACCEPT,改变所有的链策略为DROP:

    • iptables -P INPUT DROP
    • iptables -P FORWARD DROP
    • iptables -P OUTPUT DROP

    3、阻止一个指定的ip

    • BLOCK_THIS_IP=“x.x.x.x"
    • iptables -A INPUT -s ”$BLOCK_THIS_IP“ -j DROP
    • iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
    • iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

    4、允许SSH

    允许所有通过eth0接口使用ssh协议连接本机:

    • iptables -A INPUT -i eth0 -p tcp -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT

    5、允许某个网段通过ssh连接

    • iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 –dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 22 -m state –state ESTABLISHED -j ACCEPT

    6、允许SSH连接指定的网段

    • iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A INPUT -i eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT

    7、允许http和https

    允许所有进来的web流量:http协议80端口,https协议是443端口

    • iptables -A INPUT -i eth0 -p tcp -dport 80 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 80 -m state -state ESTABLISHED -j ACCEPT

     

    • iptables -A INPUT -i eth0 -p tcp -dport 443 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 443 -m state -state ESTABLISHED -j ACCEPT

    8、多个策略联合一起

    允许ssh,http,https:

    • iptables -A INPUT -i eth0 -p tcp -m multiport -dports 22,80,443 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -m multiport -sports 22,80,443 -m state -state ESTABLISHED -j ACCEPT

    9、允许SSH连接其他主机

    • iptables -A OUTPUT -o eth0 -p tcp -dport 22 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A INPUT -i eth0 -p tcp -sport 22 -m state -state ESTABLISHED -j ACCEPT

    10、允许https出去

    • iptables -A OUTPUT -o eth0 -p tcp -dport 443 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A INPUT -i eth0 -p tcp -sport 443 -m state -state ESTABLISHED -j ACCEPT

    11、对web请求做负载均衡(每三个包,均衡到指定服务器,需要扩展iptables)

    • iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 0 -j DNAT -to-destination 192.168.1.101:443
    • iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 1 -j DNAT -to-destination 192.168.1.102:443
    • iptables -A PREROUTING -i eth0 -p tcp –dport 443 -m state -state NEW -m nth -counter 0 -every 3 -packet 2 -j DNAT -to-destination 192.168.1.103:443

    12、允许ping

    • iptables -A INPUT -p icmp -icmp-type echo-request -j ACCEPT
    • iptables -A OUTPUT -p icmp -icmp-type echo-reply -j ACCEPT

    13、允许ping远程

    • iptables -A OUTPUT -p icmp -icmp-type echo-request -j ACCEPT
    • iptables -A INPUT -p icmp -icmp-type echo-reply -j ACCEPT

    14、允许本地回环

    • iptables -A INPUT -i lo -j ACCEPT
    • iptables -A OUTPUT -o lo -j ACCEPT

    15、允许内网访问外部网络

    这个例子eth1 连接外部网络,eth0连接内部网络

    • iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

    16、允许DNS出去

    • iptables -A OUTPUT -p udp -o eth0 -dport 53 -j ACCEPT
    • iptables -A INPUT -p udp -i eth0 -sport 53 -j ACCEPT

    17、允许NIS连接

    NIS端口是动态的,当ypbind启动时它分配端口。

    首先运行 rpcinfo -p 显示得到端口号,这个例子使用端口850,853。

    • iptables -A INPUT -p tcp -dport 111 -j ACCEPT
    • iptables -A INPUT -p udp -dport 111 -j ACCEPT
    • iptables -A INPUT -p tcp -dport 853 -j ACCEPT
    • iptables -A INPUT -p udp -dport 853 -j ACCEPT
    • iptables -A INPUT -p tcp -dport 850 -j ACCEPT
    • iptables -A INPUT -p udp -dport 850 -j ACCEPT

    上面的例子当ypbind重新启动时将失效,有2种解决方案:

    (1) 分配nis服务静态ip

    (2) 使用精妙的脚本

    18、允许指定网段连接Rsync

    • iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 -dport 873 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 873 -m state -state ESTABLISHED -j ACCEPT

    19、允许mysql从指定的网段连接

    • iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 -dport 3306 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 3306 -m state -state ESTABLISHED -j ACCEPT

    20、允许sendmail或者postfix

    • iptables -A INPUT -i eth0 -p tcp -dport 25 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 25 -m state -state ESTABLISHED -j ACCEPT

    21、允许IMAP和IMAPS

    • iptables -A INPUT -i eth0 -p tcp -dport 143 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 143 -m state -state ESTABLISHED -j ACCEPT
    •  
    • iptables -A INPUT -i eth0 -p tcp -dport 993 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 993 -m state -state ESTABLISHED -j ACCEPT

    22、允许POP3和POP3S

    • iptables -A INPUT -i eth0 -p tcp -dport 110 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 110 -m state -state ESTABLISHED -j ACCEPT
    •  
    • iptables -A INPUT -i eth0 -p tcp -dport 995 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 995 -m state -state ESTABLISHED -j ACCEPT

    23、预防DDOS攻击

    • iptables -A INPUT -p tcp -dport 80 -m limit -limit 25/minute -limit-burst 100 -j ACCEPT
    • -m :使用iptables扩展
    • –limit 25/minute : 限制分钟连接请求数
    • –limit-burst:触发阀值,一次涌入数据包数量

    24、端口转发

    来自442的都转到22端口

    • iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 -dport 422 -j DNAT -to 192.168.102.37:22

    你还必须明确允许442端口

    • iptables -A INPUT -i eth0 -p tcp -dport 422 -m state -state NEW,ESTABLISHED -j ACCEPT
    • iptables -A OUTPUT -o eth0 -p tcp -sport 422 -m state -state ESTABLISHED -j ACCEPT

    25、包丢弃日志

    你也许想查看所有丢弃包的日志。首先创建一个新链叫 LOGGING

    • iptables -N LOGGING

    确保所有的连接跳到LOGGING

    • iptables -A INPUT -j LOGGING

    记录这些包通过自定义名字 "log-prefix"

    • iptables -A LOGGING -m limit -limit 2/min -j LOG -log-prefix "IPTables Packet Dropped:" -log-level 7

    最后丢弃这些数据包

    • iptables -A LOGGING -j DROP

    参考

    https://icewing.cc/post/25-iptables-policy.html

    https://www.jianshu.com/p/fd0e5ce233a7

     

    请我喝咖啡

    如果觉得文章写得不错,能对你有帮助,可以扫描我的微信二维码请我喝咖啡哦~~哈哈~~

     

    展开全文
  • 使用 /sbin/iptables -F 要小心,搞不好,你就马上同服务器断开连接了 以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的说明 可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只...
  • iptables防火墙 1、基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火墙 service iptables restart # 永久关闭...
  • Iptablesiptables目录

    2019-09-06 11:25:38
    Iptables】01Iptables概念 【Iptables】02 Iptables实际操作之规则查询 【Iptables】03 Iptables规则管理 【Iptables】04 Iptables匹配条件总结 【Iptables】05 Iptables常用的匹配扩展模块 【Iptables】06 ...
  • iptables工作原理及iptables命令行使用介绍

    千次阅读 多人点赞 2019-02-07 20:22:38
    iptables详解iptables原理技能 iptables原理 技能 最需要掌握的技能就是查看iptables规则来进行trouble shoot了。掌握iptables的根本在于掌握数据包在四表五链的流转过程。 查看iptables规则最实用的命令是: ...
  • iptables 端口转发

    万次阅读 2018-08-22 17:32:24
    iptables 的端口转发则是在内核进行。 1、将本地的端口转发到本机端口 将本机的 7777 端口转发到 6666 端口。 iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666 ...
  • iptables配置

    2016-08-23 07:08:42
    iptables -F iptables -X iptables -Z iptables -L -n iptables -A INPUT -p tcp --dport 22 -s 10.0.8.0/24 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -o lo -j ACCEPT iptables -A O
  • iptables详解及docker的iptables规则iptables处理流程iptables命令ipset的使用ftp服务规则SNAT与DNATfirewall-cmd命令docker的iptables规则docker网络类型数据包处理流程 iptables 处理流程 iptables命令 ipset的...
  • iptables详解

    2019-08-09 14:24:51
    大神级别,用浅显易懂的语言,描述复杂的理论,举例生动形象,并且图文并茂,值得一看,下面是iptables系列的文章: iptables详解(1):iptables概念 iptables详解(2):iptables实际操作之规则查询 iptables详解(3):...
  • iptables基础知识详解

    万次阅读 多人点赞 2018-09-13 11:41:24
    iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你...
  • iptables 详解

    万次阅读 2018-06-14 09:34:32
    iptables 与 firewalld iptables 基础 3.1 链的概念 3.2 表的概念 3.3 链与表的关系 3.4 数据通过的流程 iptables 语法 iptables nat表的应用 1. 防火墙简介 防火墙是一种应用于网络上的...
  • iptables-restore、iptables-save

    千次阅读 2018-09-06 00:16:49
    iptables的配置文件 /etc/sysconfig/iptables iptables-save &gt; /etc/sysconfig/iptablesiptables-save是将规则追加到一个文件,主要是配合iptables-restore命令 测试操作: iptables -I INPUT -p tcp -...
  • 服务器安全之iptables iptables

    千次阅读 2016-09-21 11:56:39
    服务器安全之iptables 感谢老男孩老师为我们讲解iptables  优化之路 iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,902
精华内容 20,360
关键字:

iptables