Ubuntu 防火墙iptables和 ufw
文章目录
- iptables 和 ufw 的区别
- Ubuntu 上使用 ufw 配置
iptables 和 ufw 的区别
iptables 和 ufw 是 Linux 系统中用于管理防火墙的工具,但它们的设计目标和使用方式有所不同。
iptables:功能强大,适合高级用户和复杂场景,但配置复杂。
ufw:简单易用,适合普通用户和基本防火墙需求。
如果你只需要基本的防火墙功能,推荐使用 ufw;如果需要更复杂的网络配置,可以使用 iptables。两者可以结合使用,ufw 的底层实际上也是基于 iptables 的。
-
iptables
iptables 是 Linux 内核中 Netfilter 框架的用户空间工具,用于配置和管理网络数据包的过滤、网络地址转换(NAT)等。
特点
底层工具:
iptables 是底层的防火墙工具,直接操作内核的 Netfilter 框架。
提供了非常强大的功能,可以精细控制网络流量。
复杂性:
配置复杂,需要用户熟悉网络协议、链(Chains)、表(Tables)和规则(Rules)等概念。
适合高级用户或需要复杂网络配置的场景。
灵活性:
支持多种表(如 filter、nat、mangle 等)和链(如 INPUT、OUTPUT、FORWARD 等)。
可以实现复杂的网络策略,如端口转发、流量控制、NAT 等。
持久化:
iptables 规则默认不会持久化,重启后会丢失。
需要手动保存规则(如使用 iptables-save)并在启动时加载(如使用 iptables-restore)。 -
ufw(Uncomplicated Firewall)
ufw 是一个基于 iptables 的前端工具,旨在简化防火墙配置,适合普通用户使用。
特点
简化配置:
ufw 提供了简单的命令行接口,用户无需深入了解 iptables 的复杂概念。
适合初学者或需要快速配置防火墙的场景。
默认规则:
ufw 默认阻止所有传入连接,允许所有传出连接。
用户只需开放需要的端口或服务。
服务支持:
ufw 支持通过服务名称(如 ssh、http)开放端口,无需记住端口号。
例如:sudo ufw allow ssh 会开放 SSH 端口(22)。
持久化:
ufw 规则会自动持久化,重启后仍然有效。
日志记录:
ufw 提供了简单的日志功能,可以记录被阻止的连接。 -
主要区别
特性 iptables ufw
目标用户 高级用户、系统管理员 普通用户、初学者
配置复杂度 复杂,需要熟悉网络协议和规则 简单,提供友好的命令行接口
功能 强大,支持复杂的网络策略 简化,适合基本防火墙需求
持久化 需要手动保存和加载规则 自动持久化
服务支持 不支持服务名称,需手动指定端口 支持服务名称(如 ssh、http)
日志记录 需要手动配置 提供简单的日志功能 -
使用场景
iptables
需要精细控制网络流量(如 NAT、端口转发、流量限制等)。
需要实现复杂的网络策略。
用户熟悉 iptables 的配置和管理。
ufw
快速配置基本的防火墙规则。
用户不熟悉 iptables 或不需要复杂的网络配置。
适合个人电脑或简单的服务器环境。 -
示例
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’
-
确认服务端口
根据描述,各服务器的服务端口如下:
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) -
安装和启用 UFW
如果未安装 ufw,先安装并启用:
sudo apt update
sudo apt install ufw
sudo ufw enable -
配置 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 -
允许 SSH 访问
确保开放 SSH 端口(默认 22),以便远程管理:
sudo ufw allow 22/tcp -
检查 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
- 测试服务可用性
在配置完规则后,测试服务的连通性,确保所有服务正常运行。可以使用以下工具测试:
telnet:测试 TCP 端口。
nc:测试 TCP/UDP 端口。
nmap:扫描端口状态。
例如:
telnet <目标IP> <端口号>
nc -vz <目标IP> <端口号>
nmap <目标IP>
相关文章:
Ubuntu 防火墙iptables和 ufw
文章目录 iptables 和 ufw 的区别Ubuntu 上使用 ufw 配置 iptables 和 ufw 的区别 iptables 和 ufw 是 Linux 系统中用于管理防火墙的工具,但它们的设计目标和使用方式有所不同。 iptables:功能强大,适合高级用户和复杂场景,但配…...
11天 -- Redis 中跳表的实现原理是什么?Redis 的 hash 是什么?Redis Zset 的实现原理是什么?
Redis 中跳表的实现原理是什么? Redis 中的跳表(Skip List)是一种基于有序链表的高效数据结构,通过在链表上增加多级索引来提高数据的查找效率。以下是 Redis 中跳表的实现原理: 1. 基本概念 节点结构:跳…...
JavaWeb——HTML
一、什么是HTML HTML(HyperText Markup Language):超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息还可以定义图片,音频,视频等。标记语言:由标签构成的语言 HTML语言都是预定义好…...
Spring DIIoC
一.IoC 1.简介 什么是IoC?IoC,全称 Inversion of Control,控制反转。IoC是Spring的核心思想,Spring是⼀个“控制反转”的容器。 如果我们需要一个对象,正常来说我们是通过new一个对象,这个时候我们依赖的…...
【前端基础】Day 2 CSS层叠样式表
目录 1.CSS简历 2.CSS 基础选择器 2.1标签选择器 2.2类选择器 2.3 id选择器 2.4通配符选择器 2.5总结 3.CSS字体属性 字体属性总结 4.CSS文本属性 4.1颜色 4.2对齐文本 4.3装饰文本 4.4文本缩进 4.5行间距 4.6文本属性总结 5.CSS的引入方式 5.1内部样式表 …...
建易WordPress
建易WordPress是一家专业的WordPress建站服务提供商,专注于为企业和个人提供一站式的WordPress网站建设、维护、托管、运营推广以及搜索引擎优化(SEO)服务。 服务内容 1. 网站建设 提供模板建站和定制开发两种服务,满足不同客户的需求。模板建站价格为…...
计算机毕业设计SpringBoot+Vue.js汽车资讯网站(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
nuxt常用组件库html-validator、@nuxtjs/i18n、@nuxt/image、@unocss/nuxt使用解析
html-validator 主要用于自动验证nuxt服务器呈现的HTML(SSR和SSG),以检测可能导致水合错误的HTML常见问题,有助于减少水合错误,检测常见的可访问性错误。 安装 npx nuxilatest module add html-validator配置 若自动更新nuxt.config.ts配置文…...
Leetcode-最大矩形(单调栈)
一、题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 输入:matrix [["1","0","1","0","0"],["1","0&…...
Vue核心知识:动态路由实现完整方案
在Vue中实现动态路由,并结合后端接口和数据库表设计,是一个复杂的项目,需要多个技术栈和步骤的配合。以下将详细描述整个实现过程,包括数据库设计、后端接口设计、前端路由配置以及如何实现动态路由的功能。 目录 一、需求分析二…...
【Docker】使用Docker搭建-MySQL数据库服务
零、更换Docker镜像源 因为国内现在封锁了Docker默认拉取镜像的站点(DockerHub),而且国内大部分Docker镜像站已全部下线,导致现在很多朋友在拉取镜像的时候会出现无法拉取的现象,这时候就需要进行更换Docker镜像源。 可…...
DHCP配置和地址
DHCP:动态主机配置协议 DHCP系统组成 DHCP报文结构 DHCP报文类型 DHCP工作流程 DHCP租期更新 DHCP重绑定 自动保留IP 租期设置建议 IP地址释放 DHCP地址池 DHCP配置 DHCP接口地址池配置 DHCP全局地址池配置...
基于trl复现DeepSeek-R1的GRPO训练过程
1. 引入 huggingface开发了强化学习训练Transformer的库trl(参考3),借助这个trl,可以用来做GRPO的强化学习训练。魔搭ModelScope社区的文章(参考2)给出了基于Qwen基座模型Qwen2.5-0.5B-Instruct࿰…...
常用的 pip 命令
pip 是 Python 的包管理工具,可用于安装、卸载、更新和管理 Python 包。以下是一些常用的 pip 命令: 1. 安装包 安装最新版本的包 pip install package_namepackage_name 是你要安装的 Python 包的名称,例如 pip install requests 可以安装…...
基于C#的CANoe CLR Adapter开发指南
一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具,它支持多种编程接口,方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互,充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...
eMMC安全简介
1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言, 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性(Confidentiality)、完整性(Integr…...
从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(六) 导航栏 和 个人信息设置
1.导航栏(navbar) 在components下面 创建NavBar.jsx import { MessageSquare,Settings,User,LogOut} from "lucide-react" import {Link} from "react-router-dom" import { useAuthStore } from "../store/useAuthStore&qu…...
c#实现modbus rtu定时采集数据
以下是使用C#实现Modbus RTU定时采集数据的完整代码示例,包含定时任务、数据采集和异常处理: csharp 复制 using System; using System.IO.Ports; using System.Timers;public class ModbusRtuCollector : IDisposable {private readonly SerialPort _serialPort;private …...
【Python 语法】Python 数据结构
线性结构(Linear Structures)1. 顺序存储列表(List)元组(Tuple)字符串(String) 2. 线性存储栈(Stack)队列(Queue)双端队列(…...
数据库MySQL,在终端输入后,提示不是内部命令等
【解决问题】mysql提示不是内部或外部命令,也不是可运行的程序 一般这种问题是因为没有在系统变量里面添加MySQL的可执行路径 以下是添加可执行路径的方法: 第一步:winR输入services.msc 然后找到MySQL,右击属性并复制MySQL的可执…...
docker和containerd从TLS harbor拉取镜像
私有镜像仓库配置了自签名证书,https访问,好处是不需要处理免费证书和付费证书带来的证书文件变更,证书文件变更后需要重启服务,自签名证书需要将一套客户端证书存放在/etc/docker/cert.d目录下,或者/etc/containerd/c…...
《从0到1:用Python在鸿蒙系统开发安防图像分类AI功能》
在人工智能与移动应用深度融合的当下,类目标签AI功能成为众多行业提升效率和用户体验的关键技术。本文聚焦于HarmonyOS NEXT API 12及以上版本,以图像分类在智能家居安防领域的应用为例,为开发者详细阐述如何利用Python开发类目标签AI功能,助力鸿蒙技术在该领域的创新应用。…...
C语言生成二维码
1. 效果 2. 需要的代码(QRCode) qrcode.cqrcode.h 代码 3. 代码 #include <stdio.h> #include "qrcode.h"int main() {//拓展编码SetConsoleOutputCP(437);QRCode qrcode;uint8_t qrcodeBytes[qrcode_getBufferSize(3)];qrcode_initT…...
Spring Boot 消息队列(以RabbitMQ为例)
文章目录 RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装 Spring Boot 集成 RabbitMQ1. 创建 Spring Boot 项目2. 配置 RabbitMQ3. 定义消息队列和交换机4. 发送消息5. 接收消息6. 测试消息发送和接收 RabbitMQ 简介与安装 1. RabbitMQ 简介 RabbitMQ 是一个开源的消息…...
[Web 安全] PHP 反序列化漏洞 —— POP 链构造思路
关注这个专栏的其他相关笔记:[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 0x01:什么是 POP 链? POP 链(Payload On Purpose Chain)是一种利用 PHP 中的魔法方法进行多次跳转以获取敏感数据的技术。它通常出现在 CTF…...
商城源码的框架
商城源码的框架通常是基于某种Web开发框架或者电子商务平台来构建的。以下是一些常见的商城源码框架: WooCommerce:基于WordPress的电子商务插件,适用于小型到中型的在线商店。 Magento:一个功能强大和灵活的开源电子商务平台&am…...
记录深度学习中有用的终端命令
1 查看 CUDA 版本 如果你安装了 CUDA 开发工具包,你可以使用 nvcc 命令来查看 CUDA 的版本。 打开终端(或命令提示符),运行: nvcc --version 2. 监控 GPU 状态 使用 nvidia-smi 命令,nvidia-smi 是一个…...
深度探索推理新境界:DeepSeek-R1如何用“自学”让AI更聪明?
今天我们要聊从1月初火到现在的AI模型——DeepSeek-R1。它就像一个“自学成材的学霸”,不用老师手把手教,就能在数学、编程、逻辑推理等领域大显身手!仔细阅读了深度求索发表的R1论文,发现它不仅揭秘了它的成长秘籍,还…...
2025春新生培训数据结构(树,图)
教学目标: 1,清楚什么是树和图,了解基本概念,并且理解其应用场景 2,掌握一种建图(树)方法 3,掌握图的dfs和树的前中后序遍历 例题与习题 2025NENU新生培训(树&#…...
keil主题(vscode风格)
#修改global.prop文件,重新打开keil即可 # Keil uVision Global Properties File # This file is used to customize the appearance of the editor# Editor Font editor.font.nameConsolas editor.font.size10 editor.font.style0# Editor Colors editor.backgro…...
