iptables filter表

10.15 iptables filter表小案例

iptables扩展选项(了解)

其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用-m。

状态检测的包过滤:

  • -m state --state {NEW,ESTATBLISHED,INVALID,RELATED} 指定检测那种状态
  • -m multiport 指定多端口号
    --sport
    --dport
    --ports
  • -m iprange 指定IP段
    --src-range ip-ip
    --dst-range ip-ip
  • -m connlimit 连接限定
    --comlimit-above # 限定大连接个数
  • -m limit 现在连接速率,也就是限定匹配数据包的个数
    --limit 指定速率
    --limit-burst # 峰值速率,最大限定
  • -m string 按字符串限定
    --algo bm|kmp 指定算法bm或kmp
    --string "STRING" 指定字符串本身

规则:放行指定端口

使用脚本设定规则:

创建脚本:
[[email protected] ~]# vi /usr/local/sbin/iptables.sh

#! /bin/bash
ipt="/usr/sbin/iptables"
# 定义一个变量——iptables命令(定义变量时尽量使用绝对路径,避免环境变量的影响)
$ipt -F
# 清空原有规则
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
# 上面三行是定义其默认策略
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# -m是指定检测状态,--state指定数据包状态(配合-m使用),该命令行的目的是使数据处理(通信
)更顺畅
$ipt -A INPUT -s 192.168.8.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
# 上面三行命令是指定放行的包的类型  
 icmp示例
 iptables -I INPUT -p icmp --icmp-type 8 -j DROP

执行该脚本中的规则:
[[email protected] ~]# sh /usr/local/sbin/iptables.sh

注意: 脚本中指定的IP如果和主机IP不同时不要在远程端口直接运行该脚本!

icmp协议示例

[[email protected] ~]#iptables -I INPUT -p icmp --icmp-type 8 -j DROP

说明: 该规则的含义是:只允许本机访问外网,不允许外网访问本机!

10.16-10.18 iptables nat表应用

应用1

环境:
A机器两块网卡ens33(192.168.8.125)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。

准备工作:

  • 准备两台虚拟机
  • A机器添加一块网卡ens37,ens37的网络连接方式选择‘LAN区段模式’(内网交换机连接,该模式下Windows无法与该客户端连接),开机后并设定IP为192.168.100.1
  • B机器关闭原有网卡连接,新增网卡ens37,开机后设定IP为192.168.100.100(网络连接模式选择LAN区段,并和A机器中的ens37网卡选择相同区段)

设置ens37的IP:

  • 方法1:
    直接在命令行使用ifconfig命令
[[email protected] ~]# ifconfig ens37 192.168.100.1/24

注: 该方法只是临时设定IP,重启后会丢失。

  • 方法2: 复制ens33的配置文件,然后在配置问价年内进行设置!

需求:

  • 需求1: 可以让B机器连接外网

    [[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
    该命令是更改内核设置,打开路由转发功能,默认值是0.
    [[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 
    [[email protected] ~]# iptables -t nat -nvL
    Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0

    说明: -o 选项后面跟设备名称,表示出口网卡,MASQUERADE是伪装、冒充的意思。

    [[email protected] ~]# route add default gw 192.168.100.1

    [[email protected] ~]# vim /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 119.29.29.29

    然后使用ping命令检测,网络通畅!
    注: 此时B机器可以连通外网,但是外网机器无法访问B机器,A机器的作用就类似于一个路由器!

    • 步骤四:配置DNS(编辑DNS配置文件)
    • 步骤三:为B设置网关为A机器ens37的IP:
    • 步骤二:在A机器的nat表中增加一条规则
    • 步骤一:A机器打开路由转发
  • 需求2: C机器只能和A通信,让C机器可以直接连通B机器的22端口(端口映射)
    [[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
    该命令是更改内核设置,打开路由转发功能,默认值是0.
    规则1:
    [[email protected] ~]# iptables -t nat -A PREROUTING -d 192.168.8.125 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
    
    规则2:
    [[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.8.125
    [[email protected] ~]# route add default gw 192.168.100.1

    Finish!

    • 步骤三:为B设置网关为A机器ens37的IP:
    • 步骤二:在A机器的nat表中增加2条规则(执行该步骤前先清除nat表原有规则)
    • 步骤一:A机器打开路由转发

应用2

iptables限制syn(同步)速度

原理: 每5s内tcp三次握手大于20次的属于不正常访问。

[[email protected] ~]# iptables -A INPUT -s ! 192.168.0.0/255.255.255.0 -d 192.168.8.125 -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name httpuser --rsource  

[[email protected] ~]# iptables -A INPUT -m recent --update --seconds 5 --hitcount 20 --name httpuser --rsource -j DROP

说明: 其中192.168.0.0/255.255.255.0 为不受限制的网段,192.168.8.125为本机IP。
该iptables策略,可有效预防syn攻击,也可以有效防止机器人发垃圾帖。

应用3

iptables针对一个网段设置规则:

[[email protected] ~]# iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP

iptables中DNAT、SNAT和MASQUERADE

  • DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映射。
  • SNAT(Source Network Address Translation,源地址转换)通常被叫做源映射。

iptables中DNAT和SNAT工作原理:
在任何一个IP数据包中,都会有Source IP Address与Destination IP Address这两个字段,数据包所经过的路由器也是根据这两个字段是判定数据包是由什么地方发过来的,它要将数据包发到什么地方去。而iptables的DNAT与SNAT就是根据这个原理,对Source IP Address与Destination IP Address进行修改。

数据包在iptables中要经过的链(chain):


上图是系统对数据包进行判定转发的过程,在这里,系统会根据IP数据包中的destination ip address中的IP地址对数据包进行分发。如果destination ip adress是本机地址,数据将会被转交给INPUT链。如果不是本机地址,则交给FORWARD链检测。

这也就是说,我们要做的DNAT要在进入判定转发转发过程之前进行,也就是在PREROUTING链中做,比如我们要把访问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”,这调规则的作用其实就是将已经达到这台Linux网关(防火墙)上的数据包上的destination ip address从202.103.96.112修改为192.168.0.112然后交给系统路由进行转发。
同理,SNAT要在数据包流出这台机器之前的最后一个链也就是POSTROUTING链来进行操作:“iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66”,这个语句就是告诉系统把即将要流出本机的数据的source ip address修改成为58.20.51.66。这样,数据包在达到目的机器以后,目的机器会将包返回到58.20.51.66也就是本机。如果不做这个操作,那么你的数据包在传递的过程中,reply的包肯定会丢失。

  • MASQUERADE(伪装)

假如当前系统用的是ADSL/3G/4G动态拨号方式,那么每次拨号,出口IP都会改变,SNAT就会有局限性。
“iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE”
重点在MASQUERADE这个设定值就是将动态IP伪装成为(-o)的那块装置上的IP,不管现在eth0的出口获得了怎样的动态IP,MASQUERADE会自动读取eth0设定的IP地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。

10.19 iptables规则备份和恢复

备份(另存为)

命令:iptables-save

[[email protected] ~]# iptables-save > /tmp/ipt.txt

恢复

[[email protected] ~]# iptables-restore < /tmp/ipt.txt

原文地址:http://blog.51cto.com/yuanhaohao/2067668

时间: 2024-11-13 06:58:06

iptables filter表的相关文章

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

iptables filter表案例及iptables nat应用

iptables filter表案例 iptables小案例需求 只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.1.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 由于这个需求有多条规则,所以最好写成脚本的形式,操作示例如下: # vi /usr/local/sbin/iptables.sh              加入如下内容,保存退出. 脚本内容: ipt="/usr/sbin/iptables" $i

10.15 iptables filter表小案例;10.16—10.18 iptables nat

扩展: 1. iptables应用在一个网段: http://www.aminglinux.com/bbs/thread-177-1-1.html 2. sant,dnat,masquerade: http://www.aminglinux.com/bbs/thread-7255-1-1.html 3. iptables限制syn速率: http://www.aminglinux.com/bbs/thread-985-1-1.html 10.15 iptables filter表小案例 ipta

10.15 iptables filter表案例 10.16/10.17/10.18 iptable

七周四次课 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 打开端口转发, 调整内核参数 增加一条规则 所添加的规则 B机器设置默认网关 设置公共DNS C设备与A通信,通过端口转换的形式,将原有iptables清空 上面为进来的包进行转换,下面为出去的包进行转换 原文地址:http://blog.51cto.

十(4)iptables语法、iptables filter表小案例、iptables nat表应用

                                    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚到达防火墙时改变包的目标地址 OUTPUT链:改变本地产生的包的目标地址 POSTROUTING链:作用是在包将离开防火墙时改变包源地址 1.查看iptables规则 iptables -nvL  (此时默认查看filter表,

10.15-10.18 iptables filter表案例 iptables nat表应用

七周四次课(3月22日) 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展1. iptables应用在一个网段  http://www.aminglinux.com/bbs/thread-177-1-1.html2. sant,dnat,masquerade   http://www.aminglinux.com/bbs/thread-7255-1-1.html3. iptables限制syn速率  http://www.

Linux学习笔记(三十二)iptables filter表案例、 iptables nat表应用

一.iptables filter表案例 需求:将80.20.21端口放行,对22端口指定特定的ip才放行 以下为操作方法: vim  /usr/local/sbin/iptables.sh    //加入如下内容 #! /bin/bashipt="/usr/sbin/iptables"   //定义一个变量,写iptables的绝对路径 $ipt -F                //清空规则 $ipt -P INPUT DROP        //添加默认的INPUT规则 $ip

三十二、iptables filter表小案例、iptables nat表应用

一.iptables filter表小案例 需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 这个需求写一个脚本,内容如下: # vi /usr/local/sbin/iptables.sh #! /bin/bash ipt="/usr/sbin/iptables"      //ipt:定义了一个变量,应写绝对路径. $ipt -F $ipt -P

iptables filter表案例、iptables nat表应用

iptables filter表案例 案例: 需求:把80端口22端口21端口放行,22端口指定一个IP段,只有这个IP段的ip访问的时候才可以访问到,其他段的都拒绝. 我们先编写一个shell脚本 vim /usr/local/sbin/iptables.sh 加入如下内容 #! /bin/bash ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP $ipt -P OUTPUT ACCEPT $ipt -P FORWARD ACC