深入理解nftables:强化你的网络安全

这篇具有很好参考价值的文章主要介绍了深入理解nftables:强化你的网络安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是nftables?

nftables是一个用于管理Linux内核网络堆栈的工具,它的强大之处在于其清晰而强大的配置语言,以及对多种网络协议的全面支持。与之前的iptables相比,nftables提供了更灵活、可读性更强和性能更好的解决方案。

安装nftables

首先,确保你的Linux发行版支持nftables,并使用包管理器安装它。安装后,你可以使用以下命令启动nftables服务:

sudo systemctl start nftables

1. 基本概念:

  • 表(Tables):Nftables配置由表组成,表是规则的容器。有四种类型的表:filter、nat、mangle、和raw。通常,我们在filter表中配置防火墙规则。

  • 链(Chains):表包含多个链,链是规则的集合。Nftables中有五种默认链:input、output、forward、prerouting和postrouting。这些链用于不同的网络包处理阶段。

  • 规则(Rules):规则是定义如何处理网络包的指令。规则由条件(匹配条件)和操作(对匹配的包执行的操作)组成。

  • 集合(sets):集合是一种数据结构,用于存储IP地址、端口号等信息,以便在规则中引用。
    当涉及到Nftables时,理解其基本概念和语法是非常重要的。

2. 基本命令:

  • 查看规则集:使用以下命令查看当前规则集:

    sudo nft list ruleset
    
  • 创建新表:创建新的Nftables表,例如,创建一个新的filter表:

    sudo nft add table ip filter
    
  • 创建新链:在表中创建新的链,例如,创建一个新的input链:

    sudo nft add chain ip filter input { type filter hook input priority 0; }
    
  • 添加规则:向链中添加规则,例如,允许SSH流量:

    sudo nft add rule ip filter input tcp dport 22 accept
    
  • 删除规则:从链中删除规则,使用delete命令,例如:

    sudo nft delete rule ip filter input tcp dport 22 accept
    
  • 保存规则:将规则保存到配置文件中以便永久生效:

    sudo nft list ruleset > /etc/nftables.conf
    sudo systemctl restart nftables
    

3. 规则语法:

  • 匹配条件:规则中的条件用于匹配网络包。条件可以包括源地址、目标地址、端口号、协议等信息。例如,ip saddr表示源地址,tcp dport表示目标端口。

  • 操作:规则中的操作定义了匹配的网络包应该如何处理,包括接受、拒绝、重定向等。例如,accept表示接受网络包。

  • 连接跟踪:Nftables支持连接跟踪,可以根据网络连接的状态进行过滤和操作。例如,ct state用于匹配连接状态。

高级nftables用法

连接跟踪

nftables可以用于创建强大的防火墙规则,其中一个关键功能是连接跟踪,允许您跟踪网络连接的状态。连接跟踪对于管理网络流量和实施安全策略非常重要。下面是一个示例规则,演示如何使用连接跟踪:

table ip my_filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        ct state new,established accept
    }
}

上述规则表明,只有新建立的连接和已建立的连接才会被接受,其他一切都会被拒绝。

端口转发:

#!/usr/sbin/nft -f

table ip my_nat {
    chain prerouting {
        type nat hook prerouting priority 0;
        tcp dport 80 redirect to :8080
    }
}

这个规则将端口80的流量重定向到本地端口8080。

限速

nftables还可以用于限制特定类型的流量速率,以防止过多的流量影响网络性能。以下是一个限速的示例规则:

table ip my_filter {
    chain input {
        type filter hook input priority 0; policy drop;

        ip saddr 192.168.1.0/24 limit rate over 1/second accept
    }
}

上述规则表示,只允许来自子网192.168.1.0/24的流量以每秒不超过1个包的速率进入。

多协议族支持

nftables支持多个协议族,包括ip、ip6、inet、arp、bridge等。您可以在不同的协议族中定义规则,以根据网络层协议类型来处理流量。下面是一个多协议族支持的示例:

table inet my_filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        ip saddr 192.168.1.0/24 accept
    }
}

table ip6 my_filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        ip6 saddr fd00::/64 accept
    }
}

上述示例中,我们创建了两个不同协议族的表,一个用于IPv4流量,一个用于IPv6流量,以分别处理它们。

共享规则和集合

要在不同协议族之间共享规则和集合,您可以使用define来定义规则或集合,然后在不同协议族的规则中引用它们。例如:

define my_ips = { 192.168.1.0/24, 10.0.0.0/24 }

table ip my_filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        ip saddr $my_ips accept
    }
}

table ip6 my_filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        ip6 saddr fd00::/64 accept
    }
}

上述示例中,我们定义了一个名为my_ips的集合,包含了一些IP地址,然后在不同协议族的规则中引用了这个集合。

Nftables中的IP集合

IP sets是一种非常有用的功能,允许你将一组IP地址组织在一起以用于规则匹配。IP集合可以用于多种目的,例如允许或拒绝一组IP地址的流量,或者用于创建更复杂的规则。

1. 创建IP集合:

要创建一个IP集合,你可以使用nft add set命令。下面是一个示例,创建一个名为my_ip_set的IP集合:

sudo nft add set ip filter my_ip_set {
    type ipv4_addr
}

这将创建一个IPv4地址类型的IP集合,并将其放置在filter表中。

2. 添加IP地址到集合:

要向IP集合添加IP地址,使用add element命令。例如,将IP地址192.168.1.100添加到my_ip_set中:

sudo nft add element ip filter my_ip_set { 192.168.1.100 }

3. 删除IP地址从集合:

要从IP集合中删除IP地址,使用delete element命令。例如,从my_ip_set中删除IP地址192.168.1.100

sudo nft delete element ip filter my_ip_set { 192.168.1.100 }

4. 使用IP集合:

将IP集合用于规则匹配是Nftables的一个强大功能。你可以在规则中使用@符号来引用IP集合。例如,创建一个规则来允许my_ip_set中的IP地址访问SSH端口:

sudo nft add rule ip filter input ip saddr @my_ip_set tcp dport 22 accept

这将允许my_ip_set中的IP地址访问SSH端口。

5. 查看IP集合:

要查看IP集合的内容,可以使用list set命令:

sudo nft list set ip filter my_ip_set

这将列出my_ip_set中包含的所有IP地址。

6. 删除IP集合:

要删除IP集合,使用delete set命令。例如,删除my_ip_set

sudo nft delete set ip filter my_ip_set

Nftables允许你创建端口集合(Port Sets)

要创建一个端口集合,你可以使用nft add set命令。下面是一个示例,创建一个名为my_port_set的端口集合:

sudo nft add set inet filter my_port_set {
    type inet_service
}

这将创建一个端口类型的端口集合,并将其放置在inet地址家族的filter表中。

2. 添加端口到集合:

要向端口集合添加端口,使用add element命令。例如,将端口号80添加到my_port_set中:

sudo nft add element inet filter my_port_set { 80 }

3. 删除端口从集合:

要从端口集合中删除端口,使用delete element命令。例如,从my_port_set中删除端口号80

sudo nft delete element inet filter my_port_set { 80 }

4. 使用端口集合:

将端口集合用于规则匹配是Nftables的一个强大功能。你可以在规则中使用@符号来引用端口集合。例如,创建一个规则来允许my_port_set中的端口号访问:

sudo nft add rule inet filter input tcp dport @my_port_set accept

这将允许my_port_set中的端口号的TCP流量通过。

5. 查看端口集合:

要查看端口集合的内容,可以使用list set命令:

sudo nft list set inet filter my_port_set

这将列出my_port_set中包含的所有端口号。

6. 删除端口集合:

要删除端口集合,使用delete set命令。例如,删除my_port_set

sudo nft delete set inet filter my_port_set

端口集合是Nftables中非常有用的功能,可用于管理和组织端口号,以更灵活地控制网络包的过滤和路由。请根据你的需求使用这些命令,并谨慎测试规则以确保网络安全性和性能。文章来源地址https://www.toymoban.com/news/detail-736427.html

到了这里,关于深入理解nftables:强化你的网络安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 保护你的数据安全,了解网络安全法!

    网络安全法是中国自2017年6月1日起实施的一项法律,旨在保障网络安全和信息安全,维护国家安全和社会稳定。网络安全法覆盖了众多方面,包括网络基础设施安全、网络运营安全、个人信息保护、网络安全监管等,具有重要的法律意义和社会意义。在本文中,我们将从多个

    2024年02月03日
    浏览(44)
  • 网络安全之你的浏览器记录真的安全吗?

      密码是每个人最私密的东西,轻易是不会展示给他人的,那么我如何能知道你电脑上浏览器里保存的密码呢?浏览器是大家在网上冲浪最常用的软件,在登录一些网站填写账号密码后,浏览器为了方便大家使用,会提示是否保存密码,如果选择了是,那么密码就保存在浏览

    2024年01月22日
    浏览(45)
  • 深入理解 HTTP 和 HTTPS:提升你的网站安全性(下)

    🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入

    2024年02月04日
    浏览(61)
  • 保护好你的WIFI无线网络安全的具体措施

    1.查看家中WiFi 网络已使用哪些安全保护措施 当您的朋友第一次到您家做客,使用您家WiFi 网络时,是否需要输入密码?如果不需要,那么您的网络就不够安全。即便他们需要输入密码,您也有多种方式保护自家网络,而这些方法之间也有优劣之分。您可以通过查看WiFi 网络设置

    2024年02月06日
    浏览(45)
  • 【网络奇缘】- 计算机网络|深入学习物理层|网络安全

    ​ 🌈个人主页:  Aileen_0v0 🔥系列专栏:  一见倾心,再见倾城  ---  计算机网络~ 💫个人格言:\\\"没有罗马,那就自己创造罗马~\\\" 回顾链接: 这篇文章是关于深入学习原理参考模型-物理层的相关知识点, “学不可以已” 话不多说,开始学习之旅⛵吧~   ​ 目录 ​物理层 定义 传

    2024年02月05日
    浏览(42)
  • IP地址更改的方法及注意事项,让你的网络更安全稳定

    在互联网时代,IP地址是我们上网时的身份标识,它可以追踪我们的上网行为和地理位置。然而,有时我们可能需要更改IP地址,以保护个人隐私,解决网络问题或绕过某些限制。那么,IP地址更改在哪里呢?虎观代理小二二将为你提供详细的解答。 首先,我们来看一下常见的

    2024年02月02日
    浏览(52)
  • 虚拟网络设备与网络安全:深入分析与实践应用

    在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中的重要组成部分,通过提供灵活的配置和强大的隔离能力🛡️,

    2024年04月10日
    浏览(63)
  • 深入探索:Kali Linux 网络安全之旅

    目录 前言 访问官方网站 导航到下载页面 启动后界面操作 前言 \\\"Kali\\\" 可能指的是 Kali Linux,它是一种基于 Debian 的 Linux 发行版,专门用于渗透测试、网络安全评估、数字取证和相关的安全任务。Kali Linux 旨在提供一系列用于测试网络和系统安全性的工具,以及为安全专业人员

    2024年02月12日
    浏览(42)
  • 深入解析 SOCKS5 代理与网络安全

    一、SOCKS5 代理技术概述 SOCKS5(Socket Secure 5)代理是 SOCKS 协议的最新版本,它允许客户端在客户端与代理服务器之间建立一个安全通道,并通过此通道发送请求并访问远程服务器。与 HTTP/HTTPS 代理相比,SOCKS5 代理在网络传输方面更为灵活,并且支持 UDP 协议。 二、SOCKS5 代理

    2024年02月16日
    浏览(48)
  • 深入探索Socks5代理与网络安全

    简介 Socks5代理是一种网络协议,用于在客户端和服务器之间进行数据传输,它可以在网络层和传输层实现代理功能。与其他代理协议相比,Socks5代理更加灵活和安全,为爬虫任务和网络安全提供了重要支持。 Socks5代理的工作原理 Socks5代理通过Socket进行通信,实现了在客户端

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包