防火墙相关概念

  • 从逻辑上分类:
    • 主机防火墙:为单个主机进行防护
    • 网络防火墙:对网络入口进行防护,服务防火墙背后的本地局域网
    • 主机防火墙(个人)和网络防火墙(集体)相辅相成
  • 从物理上分类:
    • 硬件防火墙:硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
    • 软件防火墙:应用软件处理逻辑运行于通用硬件平台上的防火墙,性能低,成本低

iptables:一个客户端代理,将用户的安全设定执行到对应的“安全框架——netfilter”中。
netfilter才是防火墙真正的安全框架(framework),位于内核空间。

iptables在用户空间,netfilter在内核空间。iptables负责将用户空间的安全设定执行到netfilter中去。netfilter/iptables组成Linux平台下的包过滤防火墙(免费)。netfilter是Linux操作系统核心层的一个数据包处理模块;iptables没有守护进程,所以不是真正的服务,而是内核提供的功能,具有如下功能:

  • 网络地址转换
  • 数据包内容修改
  • 数据包过滤的防火墙功能

原理
IPtables根据它的rule匹配而对数据包进行:放行(accept)拒绝(reject)丢弃(drop)等动作。rule存储在内核空间的信息过滤表中,这些规则指定:源地址、目的地址、传输协议(TCP、UDP、ICMP等)和服务类型(Http、FTP和SMTP)等
Netfilter位于内核空间中,是真正的防火墙,设置了“关卡”在Input、Output上(链)。网卡的驱动是在内核空间当中,Netfilter也是在内核空间当中,所以Iptables+netfilter 可以在内核空间当中设置“关卡”, 当用户去访问应用服务时,数据包是通过网卡流经内核空间之后到达用户空间。

防火墙除了软件及硬件的分类,也可对数据封包的取得方式来分类,可分为代理服务器(Proxy)封包过滤机制(IP Filter)

  • 代理服务
    • 是一种网络服务,通常假设在路由上面,可完整的掌控局域网的对外连接。
  • IP Filter
    • 这种方式可以直接分析最底层的封包表头数据来进行过滤,所以包括 MAC地址, IP, TCP, UDP, ICMP 等封包的信息都可以进行过滤分析的功能,用途非常广泛。

其实iptables并不是真正的防火墙,只是用来定义防火墙规则功能的”防火墙管理工具”,将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。

iptables抵挡封包的方式:

  • 拒绝Internet的封包进入Linux主机的某些port
  • 拒绝让某些来源IP的封包进入
  • 拒绝让某些带有特殊标志的封包进入
  • 分析硬件地址MAC来提供服务

五链四表

image.png

五链

iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链,叫规则链。

规则链依据处理数据包的位置不同分类:

  • PREROUTING
    • 在进行路由判断之前所要进行的规则(DNAT/REDIRECT)
  • INPUT
    • 处理入站数据包
  • OUTPUT
    • 处理出站数据包
  • FORWARD
    • 处理转发的数据包
  • POASTROUTING
    • 在进行路由判断之后所要进行的规则(SNAT/MASQUERADE)

不同数据包经过的链的状态

  • 如果我们需要报文转发,则不经过INPUT链、OUTPUT链
  • 只需要:PREROUTING(路由前)、FORWARD(路由)、POSTROUTING(路由后)
  • 常用的应用场景,报文流向:
    • 到本地某个进程的报文:PREROUTING‐‐> INPUT‐‐>OUTPUT ‐‐>POSTROUTING
    • 由本机转发的报文:PREROUTING ‐‐> FORWARD ‐‐> POSTROUTING
    • 由本机的某个进程发出报文(通常为响应报文): OUTPUT ‐‐> POSTROUTING

四表

iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。

  • raw表
    • 关闭nat上启用的连接追踪机制
  • mangle表
    • 拆解报文、修改报文、重新封装报文
  • nat表
    • 网络地址转换
  • filter表
    • 负责过滤功能、防火墙

image.png
规则表的先后顺序:raw→mangle→nat→filter

表链关系

相同规则的集合叫做表,多张表的集合叫做链
不是每条链上都有四张表

  • PREROUTING:raw/mangle/nat
  • INPUT:mangle/filter
  • OUTPUT:raw/mangle/nat/filter
  • POSTROUTING:mangle/nat
  • FORWARD:mangle/filter

实际操作过程中,是通过表作为入口进行操作,通过表定义的规则,操作规则。
开启Linux路由转发功能(默认关闭):
echo 1 > /proc/sys/net/ipv4/ip_forward

规则概念

  • 规则:根据指定的匹配条件来尝试匹配每个经流“关卡”的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理。
  • 匹配条件
    • 基本匹配条件:sip、dip
    • 扩展匹配条件:sport、dport
    • 扩展条件也只是条件的一部分,只不过使用的时候要使用-m参数 声明对应的模块
  • 处理动作
    • 常用动作
    • accpet:接受
    • drop:丢弃
    • reject:拒绝
    • snat:源地址转换,解决内网用户使用同一个公网地址上网的问题
    • masquerade:是snat的一种形式,使用动态的、临时会变的ip上网
    • dnat:目标地址转换
    • redirect:在本机做端口映射
    • log:记录日志,/var/log/messages文件记录日志信息,然后将数据包交给下一条规则。

iptables用法

常用格式

  1. iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
  2. iptables –[A|I 链] [-i|o 网络接口] [-p 协议] [-s 来源ip/网域] [-d 目标ip/网域] j[ACCEPT|DROP]
参数 作用
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链末尾加上新的规则
-I num 在规则链头部加上新的规则
-D num 删除某一条规则
-s 匹配源地址IP/MASK,加“!”表示出这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp、udp、icmp
—dport num 匹配目标端口号
—sport num 匹配来源端口号

查看规则

[root@localhost ~]# iptables [-t tables] [-L] [-nv] 参数: -t:指定表名,默认是filter表 -L:指定链名,默认是所有链 -v:显示详细信息 -x:展开数字

  1. [root@server1 ~]# iptables -t filter -vxL INPUT
  2. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  3. pkts bytes target prot opt in out source destination
  4. 111 9720 ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
  5. 0 0 ACCEPT all -- lo any anywhere anywhere
  6. 1 52 INPUT_direct all -- any any anywhere anywhere
  7. 1 52 INPUT_ZONES_SOURCE all -- any any anywhere anywhere
  8. 1 52 INPUT_ZONES all -- any any anywhere anywhere
  9. 0 0 DROP all -- any any anywhere anywhere ctstate INVALID
  10. 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
  11. # 字段解释
  12. policy:当前链的默认策略,当所有规则都没有匹配成功时执行的策略
  13. packets:当前链默认策略匹配到包的数量
  14. bytes:当前链默认策略匹配到的包的大小
  15. pkts:对应规则匹配到的包的数量
  16. bytes:对应规则匹配到包的大小
  17. target:对应规则执行的动作
  18. prot:对应的协议,是否针对某些协议应用此规则
  19. opt:规则对应的选项
  20. in:数据包由哪个接口流入
  21. out:数据包由哪个接口流出
  22. source:源ip地址
  23. destination:目的ip地址

规则操作

  • 清除所有规则

    1. [root@server1 ~]# iptables -t filter -F INPUT
  • 增加规则

    1. [root@server1 ~]# iptables -A INPUT -s 192.168.80.1 -j DROP

    删除规则

    方法1,根据规则的编号进行删除规则
    iptables -t filter -D INPUT 3
    方法2,根据具体的匹配条件去删除规则
    iptables -t filter -D INPUT [匹配条件] [处理动作]
    -D只是删除某一条规则,-F是清除整条链上的规则

  1. [root@server1 ~]# iptables -vxL INPUT --line-numbers
  2. Chain INPUT (policy ACCEPT 4 packets, 299 bytes)
  3. num pkts bytes target prot opt in out source destination
  4. 1 162 11052 DROP all -- any any 192.168.80.124 anywhere
  5. [root@server1 ~]# iptables -t filter -D INPUT 1
  6. [root@server1 ~]# iptables -vxL INPUT --line-numbers
  7. Chain INPUT (policy ACCEPT 14 packets, 1020 bytes)
  8. num pkts bytes target prot opt in out source destination
  9. [root@server1 ~]# iptables -A INPUT -s 192.168.80.0/24 -j ACCEPT
  10. [root@server1 ~]# iptables -vxL INPUT --line-numbers
  11. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  12. num pkts bytes target prot opt in out source destination
  13. 1 74 4884 ACCEPT all -- any any 192.168.80.0/24 anywhere
  14. [root@server1 ~]# iptables -t filter -D INPUT -s 192.168.80.0/24 -j ACCEPT
  15. [root@server1 ~]# iptables -vxL INPUT --line-numbers
  16. Chain INPUT (policy ACCEPT 74 packets, 4884 bytes)
  17. num pkts bytes target prot opt in out source destination

修改单个规则

  1. [root@server1 ~]# iptables -A INPUT -s 192.168.80.0/24 -j ACCEPT
  2. [root@server1 ~]# iptables -vxL INPUT --line-numbers
  3. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  4. num pkts bytes target prot opt in out source destination
  5. 1 82 5464 ACCEPT all -- any any 192.168.80.0/24 anywhere
  6. [root@server1 ~]# iptables -t filter -R INPUT 1 -s 192.168.80.0/24 -j REJECT

修改链的默认规则

  1. 语法:
  2. iptables -t filter -P INPUT [处理动作]

保存与恢复

  1. iptables-save > /etc/sysconfig/iptables
  2. iptables-restore < /etc/sysconfig/iptables

转发本地端口

  1. [root@server1 ~]# iptables -t nat -A PREROUTING -p tcp --dport 6666 -j REDIRECT --to-port 22

自定义链

当默认链的规则非常多的时候,不方便管理。比如有五十条针对http的规则,有两条针对ssh规则的,有
一条针对icmp,为了方便管理可以将五十条的http规则重新写到一个自定义链中

  • 使用自定义链

    1. 创建自定义链
    2. iptables -t filter -N http_chain
    3. 引用自定义链
    4. iptables -I INPUT -p tcp --dport 80 -j http_chain
    5. 创建规则(和五链使用方法一样)
    6. iptables -t filter -A http_chain -s 192.168.80.1 -j REJECT
    7. iptables -t filter -A http_chain -s 10.1.0.0/16 -j REJECT
  • 删除自定义链

    1. 删除引用
    2. [root@localhost ~]# iptables -t filter -D INPUT -p tcp --dport 80 -j http_chain
    3. 删除链上所有规则
    4. [root@localhost ~]# iptables -F http_chain
    5. 删除链
    6. [root@localhost ~]# iptables -X http_chain

    匹配条件

  • 基本匹配条件

    • -s:指定源IP
    • -d:指定目的IP
    • -p:指定协议类型
    • -i:指定网卡流入,PREROUTING/INPUT/FORWARD
    • -o:指定网卡流出,OUTPUT/POSTROUTING
  • 扩展条件
    • -m:扩展模块
    • tcp/udp
      • —dport:指定目标端口
      • —sport:指定源端口
    • iprange:匹配报文的源/目的地址所在范围
      • —src-range
      • —dst-range
    • string:指定匹配报文中的字符串
      • —algo:指定匹配算法,可以是bm/kmp
      • —string:指定需要匹配的字符串
    • time:指定匹配报文时间
      • —timestart
      • —timestop
      • —weekdays
      • —monthdays
      • —datestart
      • —datestop
    • connlimit:限制每个ip连接到server端的数量,不指定ip默认就是针对每个ip地址
      • —connlimit-above:最大连接数
    • limit:对报文到达的速率继续限制,限制包的数量
      • 10/second
      • 10/minute
      • 10/hour
      • 10/day
      • —limit-burst:空闲时可以放行包的数量,默认是5
    • state模块:用于针对tcp连接进行限制
      • —state NEW:连接中第一个包的状态是NEW
      • ESTABLISHED:NEW状态后面的包是ESTABLISHED
      • RELATED:与命令连接中的报文有关系,比如说ftp服务有两个进程:命令进程和数据进程
      • INVALID:如果一个包没有办法被识别,或者这个包没有任何装填,我们能够主动屏蔽状态为INVALID的报文
      • UNTRACKED:表示报文为未被追踪的状态。

案例练习

iptables实例练习

  1. 删除已有规则

在开始创建iptables规则之前,你也许需要删除已有规则。命令如下:

  1. iptables -F
  2. (or)
  3. iptables flush
  1. 设置链的默认状态

链的默认政策设置为”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT链设置成”DROP”(拒绝),命令如下:

  1. iptables -P INPUT DROP
  2. iptables -P FORWARD DROP
  3. iptables -P OUTPUT DROP

当INPUT链和OUTPUT链都设置成DROP时,对于每一个防火墙规则,我们都应该定义两个规则。例如:一个传入另一个传出。当然,如果你相信你的内部用户,则可以省略上面的最后一行。例如:默认不丢弃所有出站的数据包。在这种情况下,对于每一个防火墙规则要求,你只需要制定一个规则——只对进站的数据包制定规则。

  1. 阻止指定的IP地址

例:丢弃来自IP地址x.x.x.x的包

  1. iptables -A INPUT -s x.x.x.x -j DROP

注:当你在log里发现来自某ip地址的异常记录,可以通过此命令暂时阻止该地址的访问以做更深入分析

例:阻止来自IP地址x.x.x.x eth0 tcp的包

  1. iptables -A INPUT -s x.x.x.x -i eth0 -p tcp -j DROP
  1. 允许所有SSH连接请求

例:允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包

  1. iptables -A INPUT -i eth0 -dport 22 -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -sport 22 -p tcp -m state --state ESTABLISHED -j ACCEPT
  1. 仅允许来自指定网络的SSH请求

例:仅允许来自于192.168.100.0/24域的用户的ssh连接请求

  1. iptables -A INPUT -i eth0 -dport 22 -s 192.168.100.0/24 -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -sport 22 -p tcp -m state --state ESTABLISHED -j ACCEPT
  1. 允许http和https的连接请求

例:允许所有来自web -http的连接请求

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

例:允许所有来自web - https的连接请求

  1. iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
  1. 使用multiport将多个规则结合在一起

允许多个端口从外界连入,除了为每个端口都写一条独立的规则外,我们可以用multiport将其组合成一
条规则。如下所示:
例:允许所有ssh,http,https的流量访问

  1. iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
  1. 允许从本地发起的SSH

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

    请注意,这与允许ssh连入的规则略有不同。本例在OUTPUT链上,我们允许NEW和ESTABLISHED状态。
    在INPUT链上,我们只允许ESTABLISHED状态。ssh连入的规则与之相反。

  2. 仅允许从本地发起一个到指定网络域的SSH请求

例:仅允许从内部连接到网域192.168.100.0/24

  1. iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state
  2. NEW,ESTABLISHED -j ACCEPT
  3. iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
  1. 允许从本地发起的HTTPS连接请求

下面的规则允许输出安全的网络流量。如果你想允许用户访问互联网,这是非常有必要的。在服务器上,这些规则能让你使用wget从外部下载一些文件

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

注:对于HTTP web流量的外联请求,只需要将上述命令中的端口从443改成80即可。

  1. 负载均衡传入的网络流量

使用iptables可以实现传入web流量的负载均衡。
例:使用iptables nth将HTTPS流量负载平衡至三个不同的ip地址。

  1. iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.80.101:443
  2. iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.80.102:443
  3. iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.80.103:443
  1. 允许外部主机Ping内部主机

    1. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
    2. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
  2. 允许内部主机ping外部主机

    1. iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
    2. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
  3. 允许回环访问

例:在服务器上允许127.0.0.1回环访问。

  1. iptables -A INPUT -i lo -j ACCEPT
  2. iptables -A OUTPUT -o lo -j ACCEPT
  1. 允许内部网络与外部网络的通信

防火墙服务器上的其中一个网卡连接到外部,另一个网卡连接到内部服务器,使用以下规则允许内部网络与外部网络的通信。此例中,eth1连接到外部网络(互联网),eth0连接到内部网络(例如:192.168.1.x)。

  1. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
  1. 允许出站的DNS连接

    1. iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
    2. iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
  2. 允许NIS连接

如果你使用NIS管理用户帐户,你需要允许NIS连接。如果你不允许NIS相关的ypbind连接请求,即使SSH连接请求已被允许,用户仍然无法登录。NIS的端口是动态的,先使用命令rpcinfo –p来知道端口号,此例中为853和850端口。

rpcinfo -p | grep ypbind
例:允许来自111端口以及ypbind使用端口的连接请求

  1. iptables -A INPUT -p tcp --dport 111 -j ACCEPT
  2. iptables -A INPUT -p udp --dport 111 -j ACCEPT
  3. iptables -A INPUT -p tcp --dport 853 -j ACCEPT
  4. iptables -A INPUT -p udp --dport 853 -j ACCEPT
  5. iptables -A INPUT -p tcp --dport 850 -j ACCEPT
  6. iptables -A INPUT -p udp --dport 850 -j ACCEPT

注:当你重启ypbind之后端口将不同,上述命令将无效。有两种解决方案:
1)使用你NIS的静态IP
2)编写shell脚本通过“rpcinfo - p”命令自动获取动态端口号,并在上述iptables规则中使用。

  1. 允许来自指定网络的rsync连接请求

例:允许来自网络192.168.101.0/24的rsync连接请求

  1. iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED
  2. -j ACCEPT
  3. iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
  1. 允许来自指定网络的MySQL连接

很多情况下,MySQL数据库与web服务跑在同一台服务器上。有时候我们仅希望DBA和开发人员从内部网络(192.168.100.0/24)直接登录数据库,可尝试以下命令:

  1. iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state
  2. NEW,ESTABLISHED -j ACCEPT
  3. iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
  1. 允许Sendmail,Postfix邮件服务

Sendmail和postfix都使用了25端口,因此我们只需要允许来自25端口的连接请求即可。

  1. iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
  1. 允许IMAP和IMAPS

例:允许IMAP/IMAP2流量,端口为143

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

例:允许IMAPS流量,端口为993

  1. iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
  1. 允许POP3和POP3S

例:允许POP3访问

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

例:允许POP3S访问

  1. iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
  1. 防止DoS攻击

    1. iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

    上述例子中:
    -m limit: 启用limit扩展
    –limit 25/minute: 允许最多每分钟25个连接(根据需求更改)。
    –limit-burst 100: 只有当连接达到limit-burst水平(此例为100)时才启用上述limit/minute限制。

  2. 端口转发

例:将来自422端口的流量全部转到22端口。
这意味着我们既能通过422端口又能通过22端口进行ssh连接。启用DNAT转发。

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

除此之外,还需要允许连接到422端口的请求

  1. iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
  1. 记录丢弃数据表

第一步:新建名为LOGGING的链
iptables -N LOGGING
第二步:将所有来自INPUT链中的数据包跳转到LOGGING链中
iptables -A INPUT -j LOGGING
第三步:为这些包自定义个前缀,命名为”IPTables Packet Dropped”
iptables -A LOGGING -m limit —limit 2/min -j LOG —log-prefix “IPTables Packet Dropped: “ —log-
level 7
第四步:丢弃这些数据包
iptables -A LOGGING -j DROP