Ubuntu 防火墙iptables和 ufw

文章目录

    • iptables 和 ufw 的区别
    • Ubuntu 上使用 ufw 配置

iptables 和 ufw 的区别

iptables 和 ufw 是 Linux 系统中用于管理防火墙的工具,但它们的设计目标和使用方式有所不同。
iptables:功能强大,适合高级用户和复杂场景,但配置复杂。
ufw:简单易用,适合普通用户和基本防火墙需求。
如果你只需要基本的防火墙功能,推荐使用 ufw;如果需要更复杂的网络配置,可以使用 iptables。两者可以结合使用,ufw 的底层实际上也是基于 iptables 的。

  1. iptables
    iptables 是 Linux 内核中 Netfilter 框架的用户空间工具,用于配置和管理网络数据包的过滤、网络地址转换(NAT)等。
    特点
    底层工具:
    iptables 是底层的防火墙工具,直接操作内核的 Netfilter 框架。
    提供了非常强大的功能,可以精细控制网络流量。
    复杂性:
    配置复杂,需要用户熟悉网络协议、链(Chains)、表(Tables)和规则(Rules)等概念。
    适合高级用户或需要复杂网络配置的场景。
    灵活性:
    支持多种表(如 filter、nat、mangle 等)和链(如 INPUT、OUTPUT、FORWARD 等)。
    可以实现复杂的网络策略,如端口转发、流量控制、NAT 等。
    持久化:
    iptables 规则默认不会持久化,重启后会丢失。
    需要手动保存规则(如使用 iptables-save)并在启动时加载(如使用 iptables-restore)。

  2. ufw(Uncomplicated Firewall)
    ufw 是一个基于 iptables 的前端工具,旨在简化防火墙配置,适合普通用户使用。
    特点
    简化配置:
    ufw 提供了简单的命令行接口,用户无需深入了解 iptables 的复杂概念。
    适合初学者或需要快速配置防火墙的场景。
    默认规则:
    ufw 默认阻止所有传入连接,允许所有传出连接。
    用户只需开放需要的端口或服务。
    服务支持:
    ufw 支持通过服务名称(如 ssh、http)开放端口,无需记住端口号。
    例如:sudo ufw allow ssh 会开放 SSH 端口(22)。
    持久化:
    ufw 规则会自动持久化,重启后仍然有效。
    日志记录:
    ufw 提供了简单的日志功能,可以记录被阻止的连接。

  3. 主要区别
    特性 iptables ufw
    目标用户 高级用户、系统管理员 普通用户、初学者
    配置复杂度 复杂,需要熟悉网络协议和规则 简单,提供友好的命令行接口
    功能 强大,支持复杂的网络策略 简化,适合基本防火墙需求
    持久化 需要手动保存和加载规则 自动持久化
    服务支持 不支持服务名称,需手动指定端口 支持服务名称(如 ssh、http)
    日志记录 需要手动配置 提供简单的日志功能

  4. 使用场景
    iptables
    需要精细控制网络流量(如 NAT、端口转发、流量限制等)。
    需要实现复杂的网络策略。
    用户熟悉 iptables 的配置和管理。
    ufw
    快速配置基本的防火墙规则。
    用户不熟悉 iptables 或不需要复杂的网络配置。
    适合个人电脑或简单的服务器环境。

  5. 示例
    iptables 示例
    开放 TCP 端口 80:
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    保存规则:
    sudo iptables-save > /etc/iptables/rules.v4
    加载规则:
    sudo iptables-restore < /etc/iptables/rules.v4
    ufw 示例
    开放 TCP 端口 80:
    sudo ufw allow 80/tcp
    启用防火墙:
    sudo ufw enable
    查看状态:
    sudo ufw status

Ubuntu 上使用 ufw 配置

在 Ubuntu 上使用 ufw 配置防火墙并确保服务可用,以下是针对五台服务器的详细步骤。我们将根据每台服务器的角色开放必要的端口,并确保服务器之间的通信正常。
sudo ufw status numbered

sudo ufw status numbered # 查看规则编号
sudo ufw delete 1 # 删除编号为 1 的规则

sudo ufw delete allow 6379/tcp # 删除 Redis 端口规则
sudo ufw delete allow 3306/tcp # 删除 MySQL 端口规则
sudo ufw delete allow 2181/tcp # 删除 ZooKeeper 端口规则
sudo ufw delete allow 9092/tcp # 删除 Kafka 端口规则
sudo ufw delete allow 8080/tcp # 删除 Tomcat 端口规则

sudo netstat -tuln | grep -E ‘6379|3306|2181|9092|8080’
sudo ss -tuln | grep -E ‘6379|3306|2181|9092|8080’

  1. 确认服务端口
    根据描述,各服务器的服务端口如下:
    MySQL 主备(209 和 210)
    MySQL: 3306(TCP)
    Keepalived VRRP: 112(UDP)
    Java 应用服务器(202 和 211)
    Tomcat: 8088(TCP)
    Nginx: 8066(TCP)
    Redis: 3306(TCP)和 26379(TCP)
    Zookeeper: 2181(TCP)
    Kafka: 9092(TCP)
    UDP 车道服务: 8899(UDP)
    Keepalived VRRP: 112(UDP)
    Redis 哨兵(205)
    Redis: 3306(TCP)和 26379(TCP)

  2. 安装和启用 UFW
    如果未安装 ufw,先安装并启用:
    sudo apt update
    sudo apt install ufw
    sudo ufw enable

  3. 配置 UFW 规则
    根据每台服务器的角色,开放相应的端口。
    MySQL 主备
    允许 MySQL 端口
    sudo ufw allow 3306/tcp
    允许 Keepalived VRRP 端口
    sudo ufw allow 112/udp
    允许 Tomcat 端口
    sudo ufw allow 8088/tcp
    允许 Nginx 端口
    sudo ufw allow 8066/tcp
    允许 Redis 端口
    sudo ufw allow 3306/tcp
    sudo ufw allow 26379/tcp
    允许 Zookeeper 端口
    sudo ufw allow 2181/tcp
    允许 Kafka 端口
    sudo ufw allow 9092/tcp
    允许 UDP 车道服务端口
    sudo ufw allow 8899/udp
    允许 Keepalived VRRP 端口
    sudo ufw allow 112/udp
    Redis 哨兵
    允许 Redis 端口
    sudo ufw allow 3306/tcp
    sudo ufw allow 26379/tcp

  4. 允许 SSH 访问
    确保开放 SSH 端口(默认 22),以便远程管理:
    sudo ufw allow 22/tcp

  5. 检查 UFW 状态
    查看当前的 ufw 规则:
    sudo ufw status verbose
    输出示例:
    Status: active

To Action From


3306/tcp ALLOW Anywhere
112/udp ALLOW Anywhere
8088/tcp ALLOW Anywhere
8066/tcp ALLOW Anywhere
2181/tcp ALLOW Anywhere
9092/tcp ALLOW Anywhere
8899/udp ALLOW Anywhere
22/tcp ALLOW Anywhere

  1. 测试服务可用性
    在配置完规则后,测试服务的连通性,确保所有服务正常运行。可以使用以下工具测试:
    telnet:测试 TCP 端口。
    nc:测试 TCP/UDP 端口。
    nmap:扫描端口状态。
    例如:
    telnet <目标IP> <端口号>
    nc -vz <目标IP> <端口号>
    nmap <目标IP>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(动态规划 最长连续递增子序列)leetcode 674

我上个文章提到了最长递增子序列这个题可以去看看 这个题目翻译人话就是找出最长的递增子串&#xff0c;用一层for循环就行&#xff0c;时间复杂度是O(n) 比起上个题&#xff0c;一个范围多条子序列&#xff08;路径&#xff09;这里一个范围只有一条递增路径&#xff0c;所以…

STM32CubeMx DRV8833驱动

一、DRV8833驱动原理 ​ STBY口接单片机的IO口&#xff0c;STBY置0电机全部停止&#xff0c;置1才能工作。STBY置1后通过AIN1、AIN2、BIN1、BIN2 来控制正反转。 AIN1AIN2电机状态00停止1speed反转speed1正转11停止 其中A端&#xff08;AIN1与AIN2&#xff09;只能控制AO1与…

JSON Schema 入门指南:如何定义和验证 JSON 数据结构

文章目录 一、引言二、什么是 JSON Schema&#xff1f;三、JSON Schema 的基本结构3.1 基本关键字3.2 对象属性3.3 数组元素3.4 字符串约束3.5 数值约束 四、示例&#xff1a;定义一个简单的 JSON Schema五、使用 JSON Schema 进行验证六、实战效果6.1 如何使用 七、总结 一、引…

前端Npm面试题及参考答案

目录 npm 是什么?它的主要作用是什么? npm 包管理工具与 Yarn 有何不同? npm 的 package.json 文件有哪些重要字段? 什么是 npm 依赖?如何在项目中安装、更新和移除依赖? npm 的 node_modules 目录是什么?它的作用是什么? 什么是 npm 脚本?如何在 package.json 中…

零样本思维链(Zero-shot CoT)

Large Language Models are Zero-Shot Reasoners (Kojima et al., 2022) 这篇文章研究了大型语言模型 (LLMs) 在推理任务上的能力&#xff0c;并提出了一种名为 Zero-shot-CoT 的新方法&#xff0c;该方法能够有效地引导 LLM 进行多步骤推理&#xff0c;并在各种推理任务上取得…

day01_Java基础

文章目录 day01_Java基础一、今日课程内容二、Java语言概述&#xff08;了解&#xff09;1、Java语言概述2、为什么要学习Java语言3、Java平台版本说明4、Java特点 三、Java环境搭建&#xff08;操作&#xff09;1、JDK和JRE的概述2、JDK的下载和安装3、IDEA的安装4、IDEA的启动…

设计模式 之 生产消费者模型 (C++)

文章目录 设计模式 之 生产消费者模型 &#xff08;C&#xff09;引言生产消费者模型的基本概念为什么需要生产消费者模型应用场景&#xff1a;C 实现生产消费者模型代码示例代码详细解释共享资源和同步机制生产者函数 producer()消费者函数 consumer()主函数 main() 注意事项总…

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…

数据结构课程设计(java实现)---九宫格游戏,也称幻方

【问题描述】 九宫格&#xff0c;一款数字游戏&#xff0c;起源于河图洛书&#xff0c;与洛书是中国古代流传下来的两幅神秘图案&#xff0c;历来被认为是河洛文化的滥觞&#xff0c;中华文明的源头&#xff0c;被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大…

GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作

GPT-4.5 怎么样&#xff1f;如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作 今天我们来说说上午发布的GPT-4.5&#xff0c;接下来我们说说GPT4.5到底如何&#xff0c;有哪些功能&#xff1f;有哪些性能提升&#xff1f;怎么快速使用到GPT-4.…

【vscode-解决方案】vscode 无法登录远程服务器的两种解决办法

解决方案一&#xff1a; 查找原因 命令 ps ajx | grep vscode 可能会看到一下这堆信息&#xff08;如果没有大概率不是这个原因导致&#xff09; 这堆信息的含义&#xff1a;当你使用 vscode 远程登录服务器时&#xff0c;我们远程机器服务端要给你启动一个叫做 vscode serv…

一、对4*3按键模块编程分析

一、4*3键盘模块实物分析 说明&#xff1a; 1、横着4排&#xff0c;竖着3列&#xff0c;加起来共7组&#xff0c;所以对外引出7根线。 2、根据排针终端引脚又可分两类。即横排和竖列对应的引脚。 二、代码编写构想&#xff1a; 1、使用7个gpio输入中断&#xff0c;检测7个…

自然语言处理NLP入门 -- 第十节NLP 实战项目 2: 简单的聊天机器人

一、为什么要做聊天机器人&#xff1f; 在互联网时代&#xff0c;我们日常接触到的“在线客服”“自动问答”等&#xff0c;大多是以聊天机器人的形式出现。它能帮我们快速回复常见问题&#xff0c;让用户获得及时的帮助&#xff0c;并在一定程度上减少人工客服的压力。 同时&…

linux(1)文件管理

文章目录 文件目录系统相对路径绝对路径命令解析器文件管理 文件目录系统 bin&#xff1a; 二进制文件目录&#xff0c;存储可执行文件 dev&#xff1a;设备目录&#xff0c;所有的硬件都会抽象成文件存储&#xff0c;比如鼠标键盘 home&#xff1a;存储普通用户的家目录 li…

CSS—选择器详解:5分钟动手掌握选择器

个人博客&#xff1a;haichenyi.com。感谢关注 1. 目录 1–目录2–引言3–种类4–优先级 引言 什么是选择器&#xff1f; CSS选择器是CSS&#xff08;层叠样式表&#xff09;中的一种规则&#xff0c;用于指定要应用样式的HTML元素。它们就像是指向网页中特定元素的指针&#…

大模型微调入门(Transformers + Pytorch)

目标 输入&#xff1a;你是谁&#xff1f; 输出&#xff1a;我们预训练的名字。 训练 为了性能好下载小参数模型&#xff0c;普通机器都能运行。 下载模型 # 方式1&#xff1a;使用魔搭社区SDK 下载 # down_deepseek.py from modelscope import snapshot_download model_…

DeepSeek实战

DeepSeek 接入实战&#xff1a;从零开始快速上手 引言 在当今的 AI 领域&#xff0c;DeepSeek 作为一个强大的自然语言处理&#xff08;NLP&#xff09;平台&#xff0c;提供了丰富的 API 接口&#xff0c;帮助开发者快速实现智能对话、文本生成、语义分析等功能。本文将带你…

Android NDK打包封装教程与优化技巧

关于NDK打包封装的问题。首先,用户可能不太清楚NDK的基本概念,所以我应该先解释NDK是什么以及它的作用。然后,用户可能想知道如何在Android项目中使用NDK,所以需要分步骤说明配置过程,包括安装NDK、配置CMake或ndk-build,创建JNI接口,编写C/C++代码,编译和打包。 接下…

【告别双日期面板!一招实现el-date-picker智能联动日期选择】

告别双日期面板&#xff01;一招实现el-date-picker智能联动日期选择 1.需求背景2.DateTimePicker 现状图3.日期选择器实现代码4.日期选择器实现效果图5.日期时间选择器实现代码6.日期时间选择器实现效果图 1.需求背景 在用户使用时间查询时&#xff0c;我们经常需要按月份筛选…

Linux(ftrace)__mcount的实现原理

Linux 内核调试工具ftrace 之&#xff08;_mcount的实现原理&#xff09; ftrace 是 Linux 内核中的一种跟踪工具&#xff0c;主要用于性能分析、调试和内核代码的执行跟踪。它通过在内核代码的关键点插入探针&#xff08;probe&#xff09;来记录函数调用和执行信息。这对于开…