首页 > 其他分享 >安全:nftables:基础知识

安全:nftables:基础知识

时间:2024-09-17 13:46:08浏览次数:1  
标签:chain tcp 基础知识 安全 nftables accept dport table my

一,policy:

1,原文档链接:

https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/assembly_creating-and-managing-nftables-tables-chains-and-rules_getting-started-with-nftables#con_basics-of-nftables-tables_assembly_creating-and-managing-nftables-tables-chains-and-rules

2,链策略

如果此链中的规则没有指定任何操作,则链策略定义 nftables 是否应该接受或丢弃数据包。
您可以在链中设置以下策略之一:

  • accept (默认)
  • drop

 

二,两种链:基本链和常规链的区别

表由链组成,链又是规则的容器。存在以下两种规则类型:

  • 基本链 :您可以使用基本链作为来自网络堆栈的数据包的入口点。
  • 常规链 :您可以将常规链用作 jump 目标来更好地组织规则。

如果要向表中添加基本链,所使用的格式取决于您的防火墙脚本:

  • 在原生语法的脚本中,使用:

    table <table_address_family> <table_name> {
      chain <chain_name> {
        type <type> hook <hook> priority <priority>
        policy <policy> ;
      }
    }
  • 在 shell 脚本中,使用:

    nft add chain <table_address_family> <table_name> <chain_name> { type <type> hook <hook> priority <priority> \; policy <policy> \; }
    为了避免 shell 将分号解释为命令的结尾,请将 \ 转义字符放在分号前面。

       这两个示例都创建 基本链。要创建 常规链,请不要在大括号中设置任何参数。

 

三,链的类型

以下是链类型以及您可以使用的地址系列和钩子的概述:

四,add和insert的区别:

add 命令在链的末尾附加新规则。
如果要在链的开头添加一条规则,请使用 nft insert 命令而不是 nft add

 

例子:

添加表和链

[root@192 ~]# nft add table inet my_table
[root@192 ~]# nft add chain inet my_table my_chain { type filter hook input priority 0 \; }

反斜线(\)用来转义,这样 shell 就不会将分号解释为命令的结尾

查看规则
[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
        }
}

分别用add/insert命令添加规则

[root@192 ~]# nft add rule inet my_table my_chain tcp dport ssh accept
[root@192 ~]# nft insert rule inet my_table my_chain tcp dport http accept

 查看添加后的规则:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 80 accept
                tcp dport 22 accept
        }
}

五,索引和句柄的区别:

使用索引要注意的地方:一是 index 的值是从 0 开始的;二是 index 必须指向一个存在的规则

把规则插入到链的指定位置,有两种方法:

1、 使用 index 来指定规则的索引。
add 表示新规则添加在索引位置的规则后面,
insert 表示新规则添加在索引位置的规则前面。
index 的值从 0 开始增加。

使用insert插入规则的例子:

[root@192 ~]# nft insert rule inet my_table my_chain index 1 tcp dport nfs accept

查看效果:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 80 accept
                tcp dport 2049 accept
                tcp dport 22 accept
        }
}

insert插入规则例子2:

[root@192 ~]# nft insert rule inet my_table my_chain index 0 tcp dport mysql accept

查看效果:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 3306 accept
                tcp dport 80 accept
                tcp dport 2049 accept
                tcp dport 22 accept

add添加规则:

[root@192 ~]# nft add rule inet my_table my_chain index 0 tcp dport 1234 accept

查看效果:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 3306 accept
                tcp dport 1234 accept
                tcp dport 80 accept
                tcp dport 2049 accept
                tcp dport 22 accept
        }
}

 2,使用 handle 来指定规则的句柄。
add 表示新规则添加在索引位置的规则后面,
insert 表示新规则添加在索引位置的规则前面。
handle 的值可以通过参数 --handle 获取

查看句柄:

[root@192 ~]# nft  --handle list ruleset
table inet my_table { # handle 2
        chain my_chain { # handle 1
                type filter hook input priority filter; policy accept;
                tcp dport 3306 accept # handle 5
                tcp dport 1234 accept # handle 6
                tcp dport 80 accept # handle 3
                tcp dport 2049 accept # handle 4
                tcp dport 22 accept # handle 2
        }
}

用add添加规则:

[root@192 ~]# nft add rule inet my_table my_chain handle 6 tcp dport 222 accept

查看效果:

[root@192 ~]# nft  --handle list ruleset
table inet my_table { # handle 2
        chain my_chain { # handle 1
                type filter hook input priority filter; policy accept;
                tcp dport 3306 accept # handle 5
                tcp dport 1234 accept # handle 6
                tcp dport 222 accept # handle 7
                tcp dport 80 accept # handle 3
                tcp dport 2049 accept # handle 4
                tcp dport 22 accept # handle 2
        }
}

用insert命令添加规则:

[root@192 ~]# nft insert rule inet my_table my_chain handle 5 tcp dport 333 accept

查看效果:

[root@192 ~]# nft  --handle list ruleset
table inet my_table { # handle 2
        chain my_chain { # handle 1
                type filter hook input priority filter; policy accept;
                tcp dport 333 accept # handle 8
                tcp dport 3306 accept # handle 5
                tcp dport 1234 accept # handle 6
                tcp dport 222 accept # handle 7
                tcp dport 80 accept # handle 3
                tcp dport 2049 accept # handle 4
                tcp dport 22 accept # handle 2
        }
}

 3,在 nftables 中,句柄值是固定不变的,除非规则被删除,这就为规则提供了稳定的索引。
    而 index 的值是可变的,只要有新规则插入,就有可能发生变化。
    一般建议使用 handle 来插入新规则。

 

六,刷新链和删除链的区别:

删除链

和删除表一样通过delete参数

 nft delete chain 族类型 表名 链名

刷新来自链的规则

清空指定表中特定链的所有规则,但保留该链的结构和配置

nft flush chain 族类型 表名 链名

例子:

删除前:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 333 accept
                tcp dport 3306 accept
                tcp dport 1234 accept
                tcp dport 222 accept
                tcp dport 80 accept
                tcp dport 2049 accept
                tcp dport 22 accept
        }
}

清空链

[root@192 ~]# nft flush chain inet my_table my_chain

查看效果:

[root@192 ~]# nft list ruleset
table inet my_table {
        chain my_chain {
                type filter hook input priority filter; policy accept;
        }
}

删除链:

[root@192 ~]# nft delete chain inet my_table my_chain

查看效果:

[root@192 ~]# nft list ruleset
table inet my_table {
}

 

 

标签:chain,tcp,基础知识,安全,nftables,accept,dport,table,my
From: https://www.cnblogs.com/architectforest/p/18416711

相关文章

  • JAVA 基础知识点(一)
    摘要:本文所介绍知识点去粗取精,有助记忆。1.1 关键词定义:关键词是指被Java语言赋予特殊含义的单词。关键词特点:(1)关键词的字母全部小写;           (2) 代码编辑器对关键词都有高亮显示;如public,class,static。packagecom.itheima.test;importj......
  • MySQL安全加固 (四)
    目录 1.用户权限管理 2.密码策略 3.审计日志 4.网络安全 1.用户权限管理操作:定期审查用户权限,确保最小权限原则(即用户只拥有完成其工作所需的最低权限)。示例: 查看用户权限SHOWGRANTSFOR'username'@'host'; 撤销不必要的权限REVOKEINSERT,UP......
  • ChatGPT中Java相关问答(包括Java基础知识和一些面试题)
    分享一个自己学习Java时的记录ChatGPT中的对话:ChatGPT链接包括如下问题HowtolearnJavainordertobecomeasoftwaredevelopmentengineer,pleasegivedetailsofthestudyprogramaswellasthereferencestudymaterials.详细解释java中的this引用解释一下类、......
  • 聊聊企业驻场外包信息安全管理
    目前许多公司出于降本增效的考虑,大量使用服务外包的形式,通常根据外包人员是否入驻服务企业营业场所又可将外包分为驻场和非驻场两类。按照服务类型分又可以划分为安全服务类、开发测试类、咨询规划类、业务支持类等。一:驻场外包人员风险:数据泄露风险:外包人员可能由于培训不足缺......
  • day04 必备基础知识
    day04必备基础知识今日概要进制单位编码1.进制1.1烽火狼烟古代打仗用烽火狼烟来进行传递信号生活中灯泡的亮与暗用来指示信息(用电来抓耗子,灯亮表示抓到了)用亮灯用1表示,则上述的情景为:110010010100100001计算机本质上都有由晶体管和二极管组成(类比为灯......
  • day03 基础知识
    day03基础知识今日概要switchcase语句,条件判断。for循环语句,循环。goto语法,不太建议使用。字符串格式化,“拼接”数据。运算符1.switch语句packagemainfuncmain(){ //表达式 /* switch1+1{ case1: fmt.Println("等于1") case2: fmt.Println......
  • 【58同城-注册安全分析报告】
    前言由于网站注册入口容易被黑客攻击,存在如下安全问题:暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机器学习能力提......
  • /etc/sudoers文件中的哪些配置会影响系统安全?
    /etc/sudoers文件中的配置对系统安全有很大影响用户权限配置:允许哪些用户使用sudo执行特权命令。如果配置不当,可能导致未经授权的用户获得管理员权限。例如:rootALL=(ALL:ALL)ALL%adminALL=(ALL)ALL%sudoALL=(ALL:ALL)ALL在这个例子中,root用户、admi......
  • 软考高级--网络规划设计师(六)--网络安全
    文章目录一、网络安全体系1.15种安全服务1.28种安全机制1.38种安全机制与5种安全服务的关系二、网络攻击与防御2.1被动攻击和主动攻击2.2信息安全基本属性2.3TCP/IP漏洞与防御2.4ARP欺骗三、防火墙与访问控制3.1防火墙3.2网闸3.3访问控制技术3.3.1访问控制......
  • 【嵌入式linux开发】旭日x3派部署自己训练的yolov5模型(安全帽识别、视频流推理、yolov
    旭日x3派部署自己训练的模型(安全帽识别、视频流推理、yolov5-6.2)windows,框架pytorch,python3.7效果模型训练模型转换1、pt模型文件转onnx2、检查onnx模型3、准备校准数据4、onnx转bin上板视频流推理1、图片推理2、视频流推理效果模型训练进官网可克隆yolov5......