返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • 醉染图书从实践中学习Web防火墙构建9787111657040
  • 正版全新
    • 作者: 张博著 | 张博编 | 张博译 | 张博绘
    • 出版社: 机械工业出版社
    • 出版时间:2020-06-20
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    醉染图书旗舰店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品参数
    • 作者: 张博著| 张博编| 张博译| 张博绘
    • 出版社:机械工业出版社
    • 出版时间:2020-06-20
    • 版次:1
    • 印次:1
    • 页数:257
    • 开本:16开
    • ISBN:9787111657040
    • 版权提供:机械工业出版社
    • 作者:张博
    • 著:张博
    • 装帧:平装-胶订
    • 印次:1
    • 定价:89.00
    • ISBN:9787111657040
    • 出版社:机械工业出版社
    • 开本:16开
    • 印刷时间:暂无
    • 语种:暂无
    • 出版时间:2020-06-20
    • 页数:257
    • 外部编号:1202083493
    • 版次:1
    • 成品尺寸:暂无


    章 iptables使用简介 1
    1.1 iptables防火墙 1
    1.2 基本概念 1
    1.3 安装iptables 5
    1.4 配置和使用 8
    第2章 网络层的安全与防御 20
    2.1 IP标头和TCP段结构 20
    2.2 记录IP标头信息 34
    . 网络层攻击定义 36
    2.4 网络层攻击 37
    2.5 网络层防御 41
    第3章 传输层的安全与防御 42
    3.1 记录传输层标头信息 42
    3.2 传输层攻击定义 45
    3.3 传输层攻击类型 45
    3.4 传输层防御手段 52
    第4章 应用层的安全与防御 55
    4.1 iptables字符串匹配模块 55
    4.2 应用层攻击定义 56
    4.3 应用层攻击类型 56
    4.4 应用层防御手段 62
    第5章 Web防火墙类型 66
    5.1 Web防火墙简介 66
    5.2 Web防火墙历史 67
    5.3 WAF与常规防火墙的区别 68
    5.4 部署方式 68
    5.5 Web防火墙的类型 71
    5.6 各类防火墙的优缺点 72
    第6章 Naxsi Web防火墙 73
    6.1 Naxsi简介 73
    6.2 Naxsi安装 73
    6.3 Naxsi配置指令 76
    6.4 Naxsi基础使用 84
    6.5 Naxsi格式解析 91
    6.6 示例 95
    6.7 Naxsi深入探索 98
    第7章 ngx_dynamic_limit_req_module动态限流 104
    7.1 实现原理 104
    7.2 功能 108
    7.3 配置指令 110
    7.4 扩展功能 115
    第8章 RedisPushIptables模块 120
    8.1 RedisPushIptables简介 120
    8.2 RedisPushIptables与Fail2Ban比较 120
    8.3 安装RedisPushIptables 122
    8.4 动态删除配置 124
    8.5 RedisPushIptables指令 125
    8.6 客户端API示例 125
    第9章 构建自己的WAF 130
    9.1 安装所需软件 130
    9.2 参数配置 131
    9.3 白名单生成 133
    9.4 白名单自动化生成 138
    9.5 整合Fail2ban 144
    9.6 定制开发Naxsi 146
    9.7 Naxsi已知漏洞 151
    9.8 多层防御整合后对比 156
    9.9 可能存在的瓶颈 157
    9.10 恶意IP库 157
    0章 Nginx开发指南 158
    10.1 基本概念 158
    10.2 字符串 161
    10.3 日志时间格式 166
    10.4 数据结构 167
    10.5 内存管理 173
    10.6 日志记录 177
    10.7 结构体 178
    10.8 事件 183
    10.9 进程 186
    10.10 线程 188
    10.11 模块 189
    10.12 HTTP框架 195
    10.13 HTTP框架执行流程 203
    10.14 变量 212
    10.15 负载均衡 216
    1章 Nginx高级主题 220
    11.1 模块转换 220
    11.2 模块编译 222
    11.3 config文件 222
    11.4 Nginx调试 224
    11.5 示例 226
    2章 Redis模块编写 1
    12.1 模块简介 1
    12.2 模块API
    1. RedisPushIptables代码拆解 5
    3章 后门分析与监测 244
    13.1 溯源步骤和攻击示例 244
    13.2 修补漏洞 253
    13.3 监测主机异常 253


    【前言】

    其次是配置内核。配置内核的方法也有很多种,每个make就是一种方法,我们只需要选择其中的一种即可,具体如下:

    l make config:遍历选择所要编译的内核特。

    l make allyesconfig:配置所有可编译的内核特。

    l make allnoconfig:可选的模块都回答no,必选的模块都选择yes。

    l make menuconfig:打开一个窗口,然后在里面选择要编译的项。

    l make kconfig:在KDE桌面环境下安装t开发环境。

    l make gconfig:在Gnome桌面环境下安装GTK开发环境。

    l menuconfig:如果是新安装的系统,则需要安装GCC和Ncurses-devel这两个包才可以打开并使用menuconfig命令配置内核,然后在弹窗中选择要编译的项即可。通过运行make menuconfig会弹出如图1.2所示的窗口。

    图1.2 内核配置

    选择Networking support | Networking options | Network packet filtering framework (Netfilter) | Core Netfilter Configuration命令就可以开启或关闭某个功能。如果没有特别要求就保持默认配置。接着依次执行make、make modules_install和make install命令即可,*后修改grub引导,使用*的内核即可。

    1.3.2 iptables安装方式

    提醒读者,iptables并不提供防火墙的功能,它只是用来与Netfilter沟通的工具。iptables的安装方式有两种,即二进制安装和源码安装。

    1.二进制安装

    二进制安装通常是Linux发行版预编译好的二进制iptables工具,如rpm和deb包,安装起来较为简单,编译时默认并没有把所有选项都加上,而且不是由*的iptables源代码编译而来。Debian和Ubuntu用户安装如下:

    root@debian:~/bookscode/linux-4.20.4# apt-get install iptables -y

    #安装*版

    Redhat和Centos用户安装如下:

    yum install iptables -y #安装*版

    2.源码安装

    源码安装的好处是可以自己定制功能,重要的是可以编译非官方扩展模块,缺点是对普通用户来说使用难度加大了。笔者的内核是4.9.0-3-amd64版本,在写作此书时iptables的*版本为iptables-1.8.2.tar.bz2,有两个依赖包也都是*版本libmnl-1.0.4.tar.bz2和libnftnl-1.1.2.tar.bz2。如果读者的内核版本较低,请不要安装*版本的iptables,建议安装iptables-1.6系列,命令如下:

    root@debian:~/bookscode/ libmnl-1.0.4#./configure #检查安装环境

    root@debian:~/bookscode/ libmnl-1.0.4#make ; make install

    root@debian:~/bookscode/libnftnl-1.1.2#./configure #检查安装环境

    root@debian:~/bookscode/libnftnl-1.1.2# make -j4; make install

    #iptables使用的库

    root@debian:~/bookscode/iptables-1.8.2# ./configure #检查依赖

    Iptables Configuration:

    IPv4 support: yes

    IPv6 support: yes

    Devel support: yes

    IP spport: no

    Large file support: yes

    BPF utils support: no

    nfsynproxy util support: no

    nftables support: yes

    connlabel support: yes

    Build parameters:

    Put plugins into executable (static): no

    Support plugins via dlopen (shared): yes

    Installation prefix (--prefix): /usr/local

    Xtables extension directory: /usr/local/lib/xtables

    Pkg-config directory: /usr/local/lib/pkgconfig

    Host: x86_64-unknown-linux-gnu

    GCC binary: gcc

    root@debian:~/bookscode/iptables-1.8.2# make -j4; make install #编译并安装

    1.4 配置和使用

    本节主要介绍iptables使用管理和运行状态查看的相关内容,以及继任者nftables的相关内容,*后将示范两个iptables在工作环境中的具体应用实例。

    1.4.1 nftables防火墙

    nftables是新的数据包分类框架,旨在代有的{ip、ip6、arp、eb}_tables基础结构。简而言之,nftables的特如下:

    l 在Linux内核3.13或更高的版本中可用。

    l 带有一个新的命令行实用程序nft,其语法与iptables不同。

    l 带有一个兼容层,允许在新的nftables内核框架上运行iptables命令。

    l 提供了通用的集合基础结构,允许构建映和连接,可以使用此新功能在多维树中排列规则,这大大减少需要检查的规则数,直到在数据包上找到*终操作为止。

    l 通过的通用集和映基础结构,更快地分组数据包。

    l 简化双栈IPv4 / IPv6管理,通过新的inet系列,允许注册时看到IPv4和IPv6流量的基链。

    l 更好地支持与更新动态规则集。

    l 为第三方应用程序提供Netlink API,就像Linux Networking和Netfilter子系统一样。

    l 解决了语法不一致的问题,并提供了更好、更紧凑的语法。

    l 避免代码重复和不一致。许多iptables扩展都是特定于协议的,因此没有统一的方法来匹配数据包字段,而iptables支持的每个协议都对应一个Netfilter扩展模块。这会使代码库与代码相似,从而执行类似的任务,有效负载匹配。

    1.4.2 iptables的缺点

    iptables工具以逐个数据包的方式过滤流量,记录可疑的流量活动,执行NAT和事情。它提供了超过100个在过去的15年所献的扩展。然而iptables框架也有局限,并且无法轻易解决。比如,当我们对iptables进行一些更改时,不得不重新编译内核,因为每个匹配或目标都需要一个内核模块。当一个新协议出现时,就需要重新编译内核来支持对iptables规则的改动。

    1.4.3 nftables与iptables的主要区别

    从用户的角度来看,nftables相对于iptables的优点如下:

    (1)语法不同。iptables的命令行工具使用getopt_long()解析命令,其中,命令是由两个横杠(--)或一个横杠(-)构成,例如-p tcp --dport。在这方面,nftables将使用更好、更直观、更紧凑的语法。

    (2)表和链完全可配置。在nftables中,表是没有特定语义的链容器。请注意,iptables附带了具有预定义数量的基链的表,用户只能选择与。因此,即使只需要其中一个链,也会注册所有链;即使根本没有添加任何规则,未使用的基链也会损害能。使用nftables这种新方法,用户可以根据自己的设置注册所需的链。此外,用户还可以按照需要的方式使用链优先级对管道建模,并为表和链选择任何名称。

    (3)不再区分匹配和目标。在nftables中,表达式是规则的基本构建块,因此规则基本上是从左到右线计算表达式的组合:如果*个表达式匹配,则评估下一个表达式,以此类推,直到达到作为规则一部分的*后一个表达式。表达式可以匹配某些特定的有效负载字段,例如数据包、流元数据和任何操作。

    (4)在nftables中,可以在一个规则中指定多个目标;但是在iptables中,用户只能指定一个目标,这是用户通过跳转到自定义链来解决的长期限制,其代价是使规则集结构稍微复杂一些。

    (5)在iptables中,每个链和规则没有内置器;但在nftables中,这些链和规则是可选的,因此可以按需启用器,更好地支持动态规则集更新。

    (6)简化的双栈IPv4 / IPv6管理。通过新的inet系列,允许用户注册时可以看到IPv4和IPv6流量的基链。因此,用户不再需要依赖脚本来复制规则集。

    (7)通用集和地图基础设施。这种新的基础架构紧密集成到nftables核心中,它允许高级配置,如字典、映和间隔来实现面向能的数据包分类。*重要的是,用户可以使用任何受支持的过滤器对流量进行分类。

    (8)支持连接。从Linux内核4.1开始,用户可以连接几个键并将它们与字典和映组合在一起。

    (9)没有内核升级的新支持协议。内核升级是一项耗时且烦琐的任务,特别是如果用户必须在网络中维护多个单一防火墙,出于稳定原因,使用者通常使用较旧的Linux内核版本。使用虚拟机运行nftable的方式,用户可以不用这样升级来支持新协议,相对简单的nft用户空间软件更新足以支持新协议。

    1.4.4 从iptables迁移到nftables

    多数用户所要面对的情景是从现有的iptables规则集迁移到nftables的规则集上。Netfilter团队已经创建了一些工具和机制来简化此举。迁移之后,建议使用新的nftables机制,如集合、映、字典和连接等。

    可以生成iptables或ip6tables命令的转换来了解nftables的等效命令,例如:

    允许新的请求连接本机tcp 22端口,翻译成nftables的语法

    # iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW

    -j ACCEPT

    nft add rule ip filter INPUT tcp dport 22 ct state new counter accept

    允许内网IP使用udp协议,且端口是111和222时才能通信

    # ip6tables-translate -A FORWARD -i eth0 -o eth3 -p udp -m multiport –dports

    111,222 -j ACCEPT

    nft add rule ip6 filter FORWARD iifname eth0 oifname eth3 meta l4proto udp

    udp dport 111,222 counter accept

    也可以一次翻译整个规则集,而不是逐个翻译,例如:

    iptables-save > save.txt #将iptables规则重定向到save.txt文件中

    # Generated by iptables-save v1.8.2 on Wed Apr 17 19:34:55 2019

    *filter

    :INPUT ACCEPT [5166:1752111] #filter表INPUT链默认允许通信

    :FORWARD ACCEPT [0:0] #filter表FORWARD链默认允许通信

    :OUTPUT ACCEPT [5058:628693] #filter表OUTPUT链默认允许通信

    -A FORWARD -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

    #允许连接22端口

    COMMIT

    # Completed on Fri Jan 25 11:22:43 2019

    整个翻译如下:

    iptables-restore-translate -f save.txt

    #一次翻译上述规则,译成nftables的规则

    # Translated by iptables-save v1.8.2 on Wed Apr 17 19:34:55 2019

    add table ip filter

    add chain ip filter INPUT type filter hook input priority 0;

    add chain ip filter FORWARD type filter hook forward priority 0;

    add chain ip filter OUTPUT type filter hook output priority 0;

    add rule ip filter FORWARD tcp dport 22 ct state new counter accept

    重定向给nftables,如下:

    iptables-restore-translate -f save.txt > ruleset.nft

    nft -f ruleset.nft #从文件加载规则

    nft list ruleset #查看nftables规则列表

    table ip filter

    chain INPUT

    type filter hook input priority 0; policy accept;

    chain FORWARD

    type filter hook forward priority 0; policy accept;

    tcp dport ssh ct state new counter packets 0 bytes 0 accept

    chain OUTPUT

    type filter hook output priority 0; policy accept;

    %注意:大约有10%的iptables语句是不支持翻译成nftables语句的。Linux发行版预编译的iptables并不包含iptables-restore-translate和iptables-translate命令,需要自己编译。

    1.4.5 iptables语法

    iptables有着强大的功能,不同的规则组合发挥的效用也不同,每个人面对的情况也不尽相同。灵活地配置规则是运维人员的技能,所以学习其语法是基础。iptables的语法大纲如下:

    iptables [-t table] -A|-C|-D chain rule-specification

    ip6tables [-t table] -A|-C|-D chain rule-specification

    iptables [-t table] -I chain [rulenum] rule-specification

    iptables [-t table] -R chain rulenum rule-specification

    iptables [-t table] -D chain rulenum

    iptables [-t table] -S [chain [rulenum]]

    iptables [-t table] -F|-L|-Z [chain [rulenum]] [options...]

    iptables [-t table] -N chain

    iptables [-t table] -X [chain]

    iptables [-t table] -P chain target

    iptables [-t table] -E old-chain-name new-chain-name

    rule-specification = [matches...] [target]

    match = -m matchname [per-match-options]

    target = -j targetname [per-target-options]

    iptables和ip6tables用于在Linux内核中设置、维护和检查IPv4和IPv6数据包过滤规则表。每个表包含许多内置链,也可能包含许多用户定义的链;每个链都可以匹配一组数据包的规则,每个规则都可指定如何处理匹配的数据包,这叫做target,用于跳转到同一个表中的用户定义链。

    防火墙规则指定数据包和目标条件。如果数据包不匹配,则检查链中的下一个规则;如果数据包匹配,则执行对应的目标动作,下一个规则由目标的值指定,该值可以是 ACCEPT、DROP或RETURN。如果是ACCEPT,则意味着让数据包通过。

    DROP意味着将数据包丢弃,RETURN则返回一个值。如果到达内置链的末尾或者匹配目标RETURN内置链中的规则,则链策略指定的目标将确定数据包的命运,即通过或者丢弃。

    iptables防火墙目前有5个独立的表,-t, --table table选项指定命令应对其执行的数据包匹配表。如果内核配置了自动模块加载,则会尝试加载该表(filter、nat、mangle、raw和security,根据模块选择其一)的相应模块,具体如下:

    l filter:默认表。它包含内置链,以及用于发往本地套接字的数据包INPUT、用于通过盒子路由的数据包FORWARD和用于本地生成的数据包OUTPUT。

    l nat:当遇到创建新连接的数据包时会查询此表。它由4个内置链组成:用于在数据包进入后立即更改数据包的命令PREROUTING、用于更改发往本地套接字的数据包的命令INPUT、用于在路由之前更改本地生成的数据包的命令OUTPUT,以及用于更改数据包的命令POSTROUTING。自内核3.7以后,IPv6 NAT支持可用。

    anle:用于更改专门的数据包。在内核2.4.17之前,它有两个内置链:用于在路由之前更改传入的数据包PREROUTING和用于在路由之前更改本地生成的数据包OUTPUT。从内核2.4.18开始还支持另外3个内置链:用于进入盒子本身的数据包INPUT、用于改变通过盒子路由的数据包FORWARD,以及用于改变的数据包POSTROUTING。

    l raw:该表主要用于配置与NOTRACK目标相结合的连接跟踪豁免。它在具有更高优先级的netfilter挂钩中注册,因此在ip_conntrack或任何IP表之前调用。它提供了两个内置链:用于通过任何网络接口到达的数据包PREROUTING和用于本地进程生成的数据包OUTPUT。

    l security:该表用于强制访问控制MAC网络规则,例如由SECMARK和CONNSE- CMARK目标启用的规则。强制访问控制由Linux安全模块,如SELinux实现。在过滤表之后调用安全表,允许过滤表中的任何自主访问控制规则在MAC规则之前生效。security表提供了3个内置链:用于进入盒子本身的数据包INPUT、用于在路由之前更改本地生成的数据包OUTPUT,以及用于更改通过盒子路由的数据包FORWARD。

    iptables和ip6tables识别的选项可以分为几个不同的组,这些选项指定要执行的操作,除非下面另有说明,否则只能在命令行中指定其中一个。

    l -A, --append chain rule-specification:将一个或多个规则附加到所选链的末尾。当源和/或目标名称解析为多个地址时,将为每个可能的地址组合添加规则。

    l -C, --check chain rule-specification:检查所选链中存在与规范匹配的规则。该命令使用与-D相同的逻辑来查找匹配的条目,但不会更改现有的iptables配置,不会使用其退出代码来指示成功或失败。

    l -D, --delete chain rule-specification:可以理解为iptables -D INPUT -s 1.1.1.1 -j DROP。

    l -D, --delete chain rulenum:从所选链中删除一个或多个规则。该命令有两个版本:规则可以指定为链中的数字或匹配的规则。例如,iptables -D INPUT 1是删除INPUT链的*条规则。

    l -I, --insert chain [rulenum] rule-specification:在所选链中插入一个或多个规则以外给定的规则编号。因此,如果规则编号为1,则将规则插入链的头部;如果未指定规则编号,则是默认值。

    l -R, --replace chain rulenum rule-specification:替换所选链中的规则。如果源和/或目标名称解析为多个地址,则命令失败,那么规则从1开始编号。

    l -L, --list [chain]:列出所选链中的所有规则。如果未选择链,则列出所有链。像iptables命令一样,它适用于指定的表(过滤器是默认值),所以NAT规则由iptables -t nat -n -L列出。请注意它通常与-n选项一起使用,以避免长反向DNS查找。指定-Z(零)选项也是合法的,在这种情况下,链将被原子列出并归零。

    l -S, --list-rules [chain]:打印所选链中的所有规则。如果没有选择链,则所有链都像iptables-save一样打印。与iptables命令一样,它适用于指定的表(过滤器是默认值)。

    l -F, --flush [chain]:刷新选定的链,相当于逐个删除所有规则。

    l -Z, --zero [chain [rulenum]]:将所有链中的数据包和字节器归零,或仅归零给定链,或仅将链中的给定规则归零。同样指定-L, -list(list)选项是合法的,可以在清除之前立即查看器。

    l -N, --new-chain chain:按给定名称创建新的用户定义链,不能重复。

    l -X, --delete-chain [chain]:删除指定的可选用户定义链时,必须是没有对链的引用。如果有,则必须删除或替换相关规则才能删除链。链必须是空的,即不包含任何规则。如果没有给出参数,将尝试删除表中的每个非内置链。

    l -P, --policy chain target:将内置(非用户定义)链的策略设置为给定目标。策略目标必须是ACCEPT或DROP。

    l -E, --rename-chain old-chain new-chain:将用户指定的链重命名。

    l -h:给出命令语法描述。

    以下参数构成规则规范:

    l -4, --ipv4:该选项对iptables和iptables-restore没有影响。如果使用-4选项的规则插入ip6tables-restore,则该选项将被默认忽略,的用途会引发错误。该选项允许将IPv4和IPv6规则放在单个规则文件中,以便与iptables-restore和ip6tables-restore一起使用。

    l -6, --ipv6:如果使用-6选项的规则与iptables-restore一起插入,则将被默认忽略,用途将会引发错误。该选项允许将IPv4和IPv6规则放在单个规则文件中,以便与iptables-restore和ip6tables-restore一起使用。该选项在ip6tables和ip6tables- restore中无效。

    l [!] -p, --protocol protocol:规则或要检查的数据包协议。指定的协议可以是tcp、up、dpte、icmp、icmpv6、esp、ah、sctp、mh或特殊关键字all之一,也可以是数值,表示这些协议之一或不同的协议,还允许来自/ etc / protocols的协议名称。一个“!”协议反转测试前的参数,数字0等于全部。all将与所有协议匹配,并在省略此选项时作为默认值。

    %注意:在ip6tables中,不允许使用除esp之外的IPv6扩展头。esp和ipv6-nonext可以与内核版本2.6.11或更高版本一起使用。数字0等于all意味着用户无法直接测试值为0的协议字段,要匹配HBH表头,即使它是*后一个,也不能使用-p 0,但总是需要-m hbh。

    l [!] -s, --source address[/mask][,...]:来源规范。地址可以是网络名称、主机名、网络IP地址(带/掩码)或纯IP地址。在将规则提交给内核之前,主机名将仅解析一次。

    %注意:使用远程查询(如DNS)指定要解析的任何名称是一个糟糕的主意。掩码可以是ipv4网络掩码(用于iptables)或普通数字,指定网络掩码左侧1的数量。因此,iptables掩码24等于255.255.255.0。一个“!”代表取相反的地址。标志--src是此选项的别名。可以指定多个地址,但这将扩展为多个规则,或者将导致删除多个规则。

    l [!] -d, --destination address[/mask][,...]:目的地规格。有关语法的详细说明,请参阅-s(source)标志的说明。标志--dst是此选项的别名。

    l -m, --match match:指定要使用的匹配项,即测试特定属的扩展模块。匹配集构成了调用目标的条件。首先按照命令行中的指定评估匹配并以短路方式工作,即如果一个扩展产生错误,则评估将停止。

    l -j, --jump target:指定规则的目标,即如果数据包匹配该怎么办。目标可以是用户定义的链(不是此规则所在的链),是立即决定数据包命运的特殊内置目标之一或扩展。

    l -g, --goto chain:-g选项将规则重定向到一个用户自定义的链中,与-j选项不同,从自定义链中返回时是返回到调用-g选项上层的那一个-j链中。

    l [!] -i, --in-interface name:接收仅适用于进入INPUT、FORWARD和PREROUTING链的数据包的接口名称。当“!”在接口名称之前使用参数,意义是反转的。如果接口名称以“ ”结尾,则以--in-interface name名称开头的任何接口都将匹配。如果省略-i选项,则任何接口名称都将匹配。

    l [!] -o, --out-interface name:将通过其发送对于进入FORWARD、OUTPUT和POSTROUTING链的数据包的接口名称。当“!”在接口名称之前使用参数,意义是反转的。如果接口名称以“ ”结尾,则以此名称开头的任何接口都将匹配。如果省略-o选项,则任何接口名称都将匹配。

    l [!] -f, --fragment:该规则仅引用分段数据包的第二个和更多IPv4分段。由于无法告知源端口或目标端口这样的数据包或ICMP类型,因此这样的数据包将不匹配任何指定它们的规则。当“!”参数在“-f”标志之前的时候,规则将仅匹配头部片段或未分段的数据包。此选项是特定于IPv4的,在ip6tables中不可用。

    l -c, --set-counters packets bytes:使管理员在INSERT、APPEND和REPLACE操作期间能够初始化规则的数据包和字节器。

    l -v, --verbose:详细的输出。此选项使list命令显示接口名称、规则选项和TOS掩码。还列出了数据包和字节器,后缀为K、M或G,分别表示1 000、1 000 000和1 000 000 000个乘数。当附加、插入、删除和替换规则时会打印规则的详细信息。-v可以多次指定,以便可能发出更详细的调试语句。例如:

    root@debian:~# iptables -I INPUT -s 1.1.1.1 -j DROP -v

    DROP all opt -- in * out * 1.1.1.1 -> 0.0.0.0/0

    l -w, --wait [seconds]:等待xtables锁定。为了防止程序的多个实例同时运行,将尝试在启动时获得独占锁。默认情况下,如果无法获取锁定,则程序将退出。此选项将使程序等待,直到可以获得独占锁定。

    l -W, --wait-interval microseconds:每次迭代等待的间隔。在运行延迟的应用程序时,等待xtables锁定延长的持续时间可能是不可接受的。此选项将使得每次迭代花费指定的时间量,默认间隔为1s。此选项仅与-w一起使用。

    l -n, --numeric:数字输出。IP地址和端口号将以数字格式打印。默认情况下,程序将尝试将它们显示为主机名、网络名称或服务。

    l -x, --exact:扩大数字。显示数据包和字节器的确切值,而不是仅显示K的舍入数(1 000的倍数)M(1 000K的倍数)或G(1 000M的倍数)。此选项仅与-L命令相关。

    l [!] --fragment-f:仅匹配第二个或更多片段。

    l --set-counters PKTS BYTES:在插入/追加期间设置器。

    l --line-numbers:当列出规则时,将行号添加到每个规则的开头,对应于该规则在链中的位置。

    l --modprobe=command:在链中添加或插入规则时,可以使用命令加载任何必要的模块,如目标、匹配扩展等。

    各种错误消息将打印到标准错误,退出代码为0表示正常运行。看似由无效或滥用的命令行参数引起的错误可导致退出代码为2,而错误则导致退出代码为1。

    1.4.6 显示当前规则

    使用以下命令可查看当前规则和匹配数:

    root@debian:~# iptables -vnL

    Chain INPUT (policy ACCEPT 2003K packets, 1631M bytes)

    pkts bytes target prot opt in out source destination

    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

    pkts bytes target prot opt in out source destination

    Chain OUTPUT (policy ACCEPT 341K packets, 32M bytes)

    pkts bytes target prot opt in out source destination

    上面的结果表明还没有配置规则,没有数据包被阻止。在输入中添加--line-numbers选项,可以在列出规则的时候显示行号,这在添加单独的规则时很有用。



    张博 Nginx和Redis资深开发者,sshfortress保垒机(sshfortress.com)创始人。拥有近8年的C语言编程经验和Linux运维经验,长期从事网络安全和系统安全领域的研究。2013年进入互联网行业,致力于网络安全、系统安全及运维工具的研发,开发了多款用来防御网络攻击的开源软件,包括ngx_dynamic_limit_req_module、ngx_cookie_limit_req_module、RedisPushIptables和NginxExecute等。


    【媒体评论】

    市面上介绍网络安全技术的图书很多,有些过于基础,有些又过于理论化,实操价值不高。本书理论结合实践,从Nginx生态的整体视角阐述和解决问题,很实用,也有价值,填补了国内构建WAF类图书市场的空白。贤弟长期在一线参与实际项目,其作品是他多年实战经验的总结,强烈网络安全行业的从业者阅读。

    ——昆明天问科技CEO 杨家宝

    本书是一部由浅入深地讲述如何构建Web防火墙的佳作。书中循序渐进地介绍了TCP/IP和OSI模型中的网络层、传输层和应用层的安全和防御知识。书中讲解的关于Nginx的实战案例,符合大多数安全人员的需要,值得阅读。

    ——同盾科技高级数据开发 程万胜

    本书由资深运维安全专家打造,系统地介绍了网络安全的相关知识。本书特别注重对读者的动手能力和学习能力的培养,讲解时不但剖析了相关的理论知识,而且还给出了多个实践案例,真正做到了“授人以渔”,值得安全技术爱好者阅读。

    ——杭州九狮科技CEO 周宗章

    本书结合作者多年的网络安全和系统安全从业经验,深入浅出地讲述了WAF的理论基础与实践流程,相信会对读者在Web防火墙构建方面有所启发和帮。

    ——阿里前开发/昆明雷脉科技CEO 雷加洪

    互联网时代,数据安全是所有企业都要面临的一个巨大挑战。如果企业不能适应这个挑战,不能保障企业用户数据的安全,那么用户又如何相信企业呢?本书从Web防火墙构建的角度,地解决企业的网络安全问题,值得每一位网络安全从业者阅读。

    ——全球时刻CTO/IBM前Java资深专家 喻立久



    从理论、应用和实践三个维度介绍Web防火墙构建的相关知识
    由浅入深地剖析OSI模型中不同层级的攻击原理和防御方法
    涵盖环境搭建、攻击类型、攻击示例、攻击过程分析、防御方法……
    系统介绍如何构建Web防火墙,内容新颖、独特
    详细介绍从网络层到应用层的安全与防御知识
    涉及TCP、iptables、Nginx、Redis及逆向分析等内容
    结合实战经验,深度探索Web与网络安全的相关知识
    涉及的防御工具已开源,可作为Web防火墙框架
    提供群,方便互动交流


    【内容简介】


    《从实践中学习Web防火墙构建》深入介绍了Web防火墙的原理和架构,同时全面介绍了Nginx及其相关模块。本书基于Nginx 1.11和Naxsi 0.56编写,带领读者掌握Naxsi安全框架的用法,并将其应用于实践中。

    《从实践中学习Web防火墙构建》共13章。章介绍iptables的基本知识,包括iptables的安装、配置及基本的使用方法;第2章介绍IP标头和TCP段结构,以及网络层的安全与防御;第3章介绍传输层的安全与防御;第4章介绍应用层的安全与防御;第5章介绍Web防火墙的发展史及WAF的种类;第6章介绍Naxsi模块,包括实现原理、配置、使用及规则生成等;第7章介绍动态限流模块ngx_dynamic_limit_req_module的原理及具体应用;第8章介绍RedisPushIptables模块,包括实现原理、安装、指令、API调用方法及应用场景;第9章结合前面介绍的内容,构建自己定制的Web防火墙;0章介绍Nginx的开发,包括基本概念、数据类型及相关函数等;1章介绍Nginx模块中的config文件的编写及调试;2章介绍Redis模块的开发及RedisPushIptables代码拆解;3章介绍逆向分析的思路及Rootkit攻击示例。

    《从实践中学习Web防火墙构建》适合网络安全、Web安、站可靠、Nginx模块、Redis模块和运维等领域的从业人员阅读,也适合作为架构师、软件开发人员及Linux爱好者了解和系统学习安全防御框架原理及实现细节的参考书。


    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购