• Linux安全--iptables详解


    目录

    1、iptables介绍

    2、iptables四表五链详解

    3、iptables基本语法

    4、实际操作

    4.1 增加规则

     4.2 删除规则

    4.3 修改规则

     5、命令语法总结

     6、基本匹配条件

    7、iptables进阶用法

    7.1 iprange扩展模块

    7.2 string扩展模块

    8、iptables进行端口转发


    1、iptables介绍

    防火墙分类:从逻辑上分类

    分类说明
    主机防火墙针对单个主机进行防护
    网络防火墙处理网络入口或者边缘,针对网络入口进行防护

    防火墙分类:从物理上分类

    分类说明
    硬件防火墙在硬件级别实现防火墙功能
    软件防火墙应用软件处理逻辑运行于通用硬件平台之上的防火墙

    两个概念:

    内核空间:也叫内核态,操作系统占据的内存区域

    用户空间:也叫用户态,用户进程所在的内存区域

    2、iptables四表五链详解

    说明
    filter表负责过滤功能,防火墙;内核模块:iptable_filter
    nat表网络地址转换功能;内核模块:iptable_nat
    mangle表拆解报文,做出修改;iptable_mangle
    raw表关闭nat表上启用的追踪机制;iptable_raw
    preroutingraw表,mangle表,nat表
    inputmangle表,filter表
    forwardmangle表,filter表
    outputraw表,mangle表,nat表,filter表
    postroutingmangle表,nat表

    表和链的关系:

    rawprerouting,output
    mangleprerouting,input,forward,output,postrouting
    natprerouting,output,postrouting
    filter

    input,forward,outpu

    优先级次序(由高到低): raw > mangle >  nat > filter

    3、iptables基本语法

    处理动作

    动作含义
    ACCEPT允许数据包通过
    DROP直接丢弃数据包,不给任何回应信息
    REJECT拒绝数据包通过,客户端会收到拒绝的信息
    SNAT源地址转换
    DNAT目标地址转换

    常用操作命令

    常用操作命令说明
    -A在指定链尾部添加规则
    -D删除匹配的规则
    -R替换匹配的规则
    -I在指定位置插入规则
    -F删除所有链的规则

    常见设置参数

    常见设置参数说明
    --dport       指定目标TCP/IP端口 
    --sport    指定源TCP/IP端口
    -p  tcptcp协议
    -p  udpudp协议
    -j   DROP拒绝
    -j   ACCEPT允许
    -s 192.168.150.129指定源地址或地址段
    -d 192.168.150.130指定目标地址或地址段

    4、实际操作

    4.1 增加规则

    选项说明:

    -t :指定操作的表

    -I :指定插入规则到哪个链中

    -s :指定“匹配条件”中的源地址

    -j :指定“匹配条件”中的动作

    拒绝所有来自192.168.150.15的所有报文

    iptables -I INPUT -s 192.168.150.15 -j DROP

    效果展示:

     再允许192.168.150.15的所有报文

    iptables -I INPUT -s 192.168.150.15 -j ACCEPT

    效果展示:

     4.2 删除规则

    iptables -D INPUT 1

    4.3 修改规则

    iptabels -R INPUT 1 -s  192.168.150.15 -j ACCEPT

    效果展示:

     

     5、命令语法总结

    iptables -t 表名 -A  链名 匹配条件 -j 动作       #在规则尾部追加

    iptables -t 表名 -I  链名 匹配条件 -j 动作       #在规则首部增加

    iptables -t 表名 -I  链名 规则序号 匹配条件 -j 动作       #在链的指定位置添加

     iptables - t 表名 -D 链名 规则序号         #按照规则序号删除规则

    iptables  -t 表名 -D 链名 匹配条件 -j 动作         #按照匹配条件个动作删除规则

     iptables - t 表名 -P 链名 动作        #修改指定表的指定链的默认策略

    iptables -F         #删除所有规则

    iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作         #修改规则 

     6、基本匹配条件

    # -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

    iptables -t filter -I INPUT -s 192.168.150.15,192.168.150.16 -j DROP

    # -d 用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

    iptables -t filter -I OUTPUT -d 192.168.150.15,192.168.150.16 -j DROP

    # -p 用于匹配报文的协议类型,可以匹配的协议类型tcp,udp,udplite,icmp等等。

    iptables -t filter -I INPUT -p tcp -s 192.168.150.15,192.168.150.16 -j DROP

     # -i 用于匹配报文是哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文的流入的网卡,所以OUTPUT链与POSTROUTING链中不能使用此选项。

    iptables -t filter -I INPUT -p tcp -i ens33 -j DROP

    7、iptables进阶用法

    7.1 iprange扩展模块

    使用iprange扩展模块可以指定“一段连续的ip地址范围”,用于匹配报文的源地址或者目标地址。

    iprange扩展模块有两个扩展匹配条件可以使用:

    • --src-range:源地址范围
    • --dst-range:目标地址范围
    • -m iprange:表示使用iprange扩展模块

    iptables -t filter -I INPUT -m iprange --src-range 192.168.150.15-192.168.150.25 -j DROP

    7.2 string扩展模块

    使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。

    • -m string:表示使用string扩展模块
    • --algo:用于指定匹配算法,可选的算法有bm和kmp,此选项为必选。
    • --string:用于指定需要匹配的字符串

    iptables -t filter -I INPUT -m string --algo kmp --string "bit" -j DROP

    # 网站有敏感字符串,用户访问不让响应

    8、iptables进行端口转发

    实例1:

    将本机的8080端口转发至其他主机,主机IP:192.168.150.16,目标主机IP和端口:192.168.150.15:8088,规则如下;

    iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.150.15:8088

    iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.150.16

    echo 1 > /proc/sys/net/ipv4/ip_forward         #开启iptables forward转发功能。

    实例2:

    访问本机的8080端口转发到本地的80端口

    iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

  • 相关阅读:
    【C++高阶(三)】AVL树深度剖析&模拟实现
    【C语言】深入理解数据表示与存储
    网络-fetch
    JS 数组的各个方法汇总
    Leetcode《图解数据结构》刷题日志【第二周】(2022/10/24-2022/10/30)
    【21天学习挑战赛】Python学习第三篇:os 标准库
    面试中如何介绍mysql的B+树
    RepVGG论文详解
    【计算机毕业设计】092基于微信小程序二手闲置交易市场
    Maven环境搭建以及eclipse-maven3-plugin插件安装
  • 原文地址:https://blog.csdn.net/zcffight/article/details/127882562