技术文档收录
ASCII
Tcpdump
Linux
WireGuard 一键安装脚本 | 秋水逸冰
SSH Config 那些你所知道和不知道的事 | Deepzz's Blog
Linux 让终端走代理的几种方法
ubuntu 20.04 server 版设置静态 IP 地址 - 链滴
Linux 挂载 Windows 共享磁盘的方法 - 技术学堂
将 SMB/CIFS 网络硬盘永久的挂载到 Ubuntu 上 - 简书
linux 获取当前脚本的绝对路径 | aimuke
[Linux] Linux 使用 / dev/urandom 生成随机数 - piaohua's blog
Linux 生成随机数的多种方法 | Just Do It
Linux 的 Centos7 版本下忘记 root 或者普通用户密码怎么办?
Git 强制拉取覆盖本地
SSH 安全加固指南 - FreeBuf 网络安全行业门户
Linux 系统安全强化指南 - FreeBuf 网络安全行业门户
Linux 入侵排查 - FreeBuf 网络安全行业门户
sshd_config 配置详解 - 简书
SSH 权限详解 - SegmentFault 思否
CentOS 安装 node.js 环境 - SegmentFault 思否
如何在 CentOS 7 上安装 Node.js 和 npm | myfreax
几款 ping tcping 工具总结
OpenVpn 搭建教程 | Jesse's home
openvpn 一键安装脚本 - 那片云
OpenVPN 解决 每小时断线一次 - 爱开源
OpenVPN 路由设置 – 凤曦的小窝
OpenVPN 设置非全局代理 - 镜子的记录簿
TinyProxy 使用帮助 - 简书
Ubuntu 下使用 TinyProxy 搭建代理 HTTP 服务器_Linux_运维开发网_运维开发技术经验分享
Linux 软件包管理工具 Snap 常用命令 - 简书
linux systemd 参数详解
Systemd 入门教程:命令篇 - 阮一峰的网络日志
记一次 Linux 木马清除过程
rtty:在任何地方通过 Web 访问您的终端
02 . Ansible 高级用法 (运维开发篇)
终于搞懂了服务器为啥产生大量的 TIME_WAIT!
巧妙的 Linux 命令,再来 6 个!
77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了
运维工程师必备:请收好 Linux 网络命令集锦
一份阿里员工的 Java 问题排查工具单
肝了 15000 字性能调优系列专题(JVM、MySQL、Nginx and Tomcat),看不完先收
作业调度算法(FCFS,SJF,优先级调度,时间片轮转,多级反馈队列) | The Blog Of WaiterXiaoYY
看了这篇还不会 Linux 性能分析和优化,你来打我
2019 运维技能风向标
更安全的 rm 命令,保护重要数据
求你了,别再纠结线程池大小了!
重启大法好!线上常见问题排查手册
Docker
「Docker」 - 保存镜像 - 知乎
终于可以像使用 Docker 一样丝滑地使用 Containerd 了!
私有镜像仓库选型:Harbor VS Quay - 乐金明的博客 | Robin Blog
exec 与 entrypoint 使用脚本 | Mr.Cheng
Dockerfile 中的 CMD 与 ENTRYPOINT
使用 Docker 配置 MySQL 主从数据库 - 墨天轮
Alpine vs Distroless vs Busybox – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
再见,Docker!
Python
Pipenv:新一代Python项目环境与依赖管理工具 - 知乎
Python list 列表实现栈和队列
Python 各种排序 | Lesley's blog
Python 中使用 dateutil 模块解析时间 - SegmentFault 思否
一个小破网站,居然比 Python 官网还牛逼
Python 打包 exe 的王炸 - Nuitka
Window
批处理中分割字符串 | 网络进行时
Windows 批处理基础命令学习 - 简书
在Windows上设置WireGuard
Windows LTSC、LTSB、Server 安装 Windows Store 应用商店
中间件
Nginx 中的 Rewrite 的重定向配置与实践
RabbitMQ 的监控
RabbitMq 最全的性能调优笔记 - SegmentFault 思否
为什么不建议生产用 Redis 主从模式?
高性能消息中间件——NATS
详解:Nginx 反代实现 Kibana 登录认证功能
分布式系统关注点:仅需这一篇,吃透 “负载均衡” 妥妥的
仅需这一篇,妥妥的吃透” 负载均衡”
基于 nginx 实现上游服务器动态自动上下线——不需 reload
Nginx 学习书单整理
最常见的日志收集架构(ELK Stack)
分布式之 elk 日志架构的演进
CAT 3.0 开源发布,支持多语言客户端及多项性能提升
Kafka 如何做到 1 秒处理 1500 万条消息?
Grafana 与 Kibana
ELK 日志系统之通用应用程序日志接入方案
ELK 简易 Nginx 日志系统搭建: ElasticSearch+Kibana+Filebeat
记一次 Redis 连接池问题引发的 RST
把 Redis 当作队列来用,你好大的胆子……
Redis 最佳实践:业务层面和运维层面优化
Redis 为什么变慢了?常见延迟问题定位与分析
好饭不怕晚,扒一下 Redis 配置文件的底 Ku
rabbitmq 集群搭建以及万级并发下的性能调优
别再问我 Redis 内存满了该怎么办了
Nginx 状态监控及日志分析
数据库
SQLite全文检索
Mysql 查看用户连接数配置及每个 IP 的请求情况 - 墨天轮
防火墙-iptables
iptables 常用规则:屏蔽 IP 地址、禁用 ping、协议设置、NAT 与转发、负载平衡、自定义链
防火墙 iptables 企业防火墙之 iptables
Linux 防火墙 ufw 简介
在 Ubuntu 中用 UFW 配置防火墙
在 Ubuntu20.04 上怎样使用 UFW 配置防火墙 - 技术库存网
监控类
开箱即用的 Prometheus 告警规则集
prometheus☞搭建 | zyh
docker 部署 Prometheus 监控服务器及容器并发送告警 | chris'wang
PromQL 常用命令 | LRF 成长记
持续集成CI/CD
GitHub Actions 的应用场景 | 记录干杯
GithubActions · Mr.li's Blog
工具类
GitHub 中的开源网络广告杀手,十分钟快速提升网络性能
SSH-Auditor:一款 SHH 弱密码探测工具
别再找了,Github 热门开源富文本编辑器,最实用的都在这里了 - srcmini
我最喜欢的 CLI 工具
推荐几款 Redis 可视化工具
内网代理工具与检测方法研究
环境篇:数据同步工具 DataX
全能系统监控工具 dstat
常用 Web 安全扫描工具合集
给你一款利器!轻松生成 Nginx 配置文件
教程类
手把手教你打造高效的 Kubernetes 命令行终端
Keras 作者:给软件开发者的 33 条黄金法则
超详细的网络抓包神器 Tcpdump 使用指南
使用 fail2ban 和 FirewallD 黑名单保护你的系统
linux 下 mysql 数据库单向同步配置方法分享 (Mysql)
MySQL 快速删除大量数据(千万级别)的几种实践方案
GitHub 上的优质 Linux 开源项目,真滴牛逼!
WireGuard 教程:使用 Netmaker 来管理 WireGuard 的配置 – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
Tailscale 基础教程:Headscale 的部署方法和使用教程 – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
Nebula Graph 的 Ansible 实践
改进你的 Ansible 剧本的 4 行代码
Caddy 2 快速简单安装配置教程 – 高玩梁的博客
切换至 Caddy2 | 某不科学的博客
Caddy2 简明教程 - bleem
树莓派安装 OpenWrt 突破校园网限制 | Asttear's Blog
OpenVPN 路由设置 – 凤曦的小窝
个性化编译 LEDE 固件
盘点各种 Windows/Office 激活工具
[VirtualBox] 1、NAT 模式下端口映射
VirtualBox 虚拟机安装 openwrt 供本机使用
NUC 折腾笔记 - 安装 ESXi 7 - 苏洋博客
锐捷、赛尔认证 MentoHUST - Ubuntu 中文
How Do I Use A Client Certificate And Private Key From The IOS Keychain? | OpenVPN
比特记事簿: 笔记: 使用电信 TR069 内网架设 WireGuard 隧道异地组网
利用 GitHub API 获取最新 Releases 的版本号 | 这是只兔子
docsify - 生成文档网站简单使用教程 - SegmentFault 思否
【干货】Chrome 插件 (扩展) 开发全攻略 - 好记的博客
一看就会的 GitHub 骚操作,让你看上去像一位开源大佬
【计算机网络】了解内网、外网、宽带、带宽、流量、网速_墩墩分墩 - CSDN 博客
mac-ssh 配置 | Sail
如何科学管理你的密码
VirtualBox NAT 端口映射实现宿主机与虚拟机相互通信 | Shao Guoliang 的博客
CentOS7 配置网卡为静态 IP,如果你还学不会那真的没有办法了!
laisky-blog: 近期折腾 tailscale 的一些心得
使用 acme.sh 给 Nginx 安装 Let’ s Encrypt 提供的免费 SSL 证书 · Ruby China
acme 申请 Let’s Encrypt 泛域名 SSL 证书
从 nginx 迁移到 caddy
使用 Caddy 替代 Nginx,全站升级 https,配置更加简单 - Diamond-Blog
http.proxy - Caddy 中文文档
动手撸个 Caddy(二)| Caddy 命令行参数最全教程 | 飞雪无情的总结
Caddy | 学习笔记 - ijayer
Caddy 代理 SpringBoot Fatjar 应用上传静态资源
使用 graylog3.0 收集 open××× 日志进行审计_年轻人,少吐槽,多搬砖的技术博客_51CTO 博客
提高国内访问 github 速度的 9 种方法! - SegmentFault 思否
VM16 安装 macOS 全网最详细
2022 目前三种有效加速国内 Github
How to install MariaDB on Alpine Linux | LibreByte
局域网内电脑 - ipad 文件共享的三种方法 | 岚
多机共享键鼠软件横向测评 - 尚弟的小笔记
本文档发布于https://mrdoc.fun
-
+
首页
在 Ubuntu20.04 上怎样使用 UFW 配置防火墙 - 技术库存网
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [jskcw.com](https://jskcw.com/post/how-to-setup-a-firewall-with-ufw-on-ubuntu-20-04/) 防火墙是一种用于监视和过滤传入和传出网络流量的工具。它通过定义一组安全规则来确定是允许还是阻止特定流量。 Ubuntu 附带了一个名为 UFW(Uncomplicated Firewall)的防火墙配置工具。它是一个用户友好的前端,用于管理 iptables 防火墙规则。它的主要目标是使管理防火墙更容易,或者顾名思义,使管理变得简单。 本文介绍如何使用 UFW 工具在 Ubuntu 20.04 上配置和管理防火墙。正确配置的防火墙是整个系统安全最重要的方面之一。 先决条件 ---- 只有 root 或具有 [sudo 权限的](https://jskcw.com/post/how-to-create-a-sudo-user-on-ubuntu/)用户 才能管理系统防火墙。最佳实践是以 sudo 用户身份运行管理任务。 安装 UFW ------ UFW 是标准 Ubuntu 20.04 安装的一部分,应该存在于您的系统中。如果由于某种原因未安装,您可以通过键入以下内容安装该软件包: ``` sudo apt update ``` 检查 UFW 状态 --------- 默认情况下禁用 UFW。您可以使用以下命令检查 UFW 服务的状态: ``` sudo apt install ufw ``` 输出将显示防火墙状态为非活动状态: ``` sudo ufw status verbose ``` 如果 UFW 被激活,输出将类似于以下内容: ![](https://jskcw.com/uploads/ubuntu-ufw-status_huc83b98c8a7c3ca685cb2bd3747075cbb_24414_768x0_resize_q75_lanczos.jpg) UFW 默认策略 -------- UFW 防火墙的默认行为是阻止所有传入和转发流量并允许所有出站流量。这意味着任何试图访问您的服务器的人都将无法连接,除非您专门打开该端口。在您的服务器上运行的应用程序和服务将能够访问外部世界。 默认策略在`/etc/default/ufw`文件中定义,可以通过手动修改文件或使用`sudo ufw default <policy> <chain>`命令来更改。 防火墙策略是构建更复杂和用户定义的规则的基础。通常,初始 UFW 默认策略是一个很好的起点。 应用配置文件 ------ 应用程序配置文件是 INI 格式的文本文件,用于描述服务并包含服务的防火墙规则。应用程序配置文件是在`/etc/ufw/applications.d`安装包期间在目录中创建的。 您可以通过键入以下内容列出服务器上可用的所有应用程序配置文件: ``` Status: inactive ``` 根据系统上安装的软件包,输出将类似于以下内容: ``` sudo ufw app list ``` 要查找有关特定配置文件和包含的规则的更多信息,请使用以下命令: ``` Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH ``` 输出显示 “Nginx Full” 配置文件打开端口`80`和`443`. ``` sudo ufw app info 'Nginx Full' ``` 您还可以为您的应用程序创建自定义配置文件。 启用 UFW ------ 如果您从远程位置连接到 Ubuntu,则在启用 UFW 防火墙之前,您必须明确允许传入的 SSH 连接。否则,您将无法再连接到机器。 要将 UFW 防火墙配置为允许传入 SSH 连接,请键入以下命令: ``` Profile: Nginx Full Title: Web Server (Nginx, HTTP + HTTPS) Description: Small, but very powerful and efficient web server Ports: 80,443/tcp ``` ``` sudo ufw allow ssh ``` 如果 SSH 在[非标准端口](https://jskcw.com/post/how-to-change-ssh-port-in-linux/)上运行 ,则需要打开该端口。 例如,如果您的 ssh 守护程序侦听 port `7722`,请输入以下命令以允许该端口上的连接: ``` Rules updated Rules updated (v6) ``` 现在防火墙已配置为允许传入的 SSH 连接,您可以通过键入以下内容启用它: ``` sudo ufw allow 7722/tcp ``` ``` sudo ufw enable ``` 您将收到警告,启用防火墙可能会中断现有的 ssh 连接,只需键入`y`并点击`Enter`。 开放端口 ---- 根据系统上运行的应用程序,您可能还需要打开其他端口。打开端口的一般语法如下: ``` Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup ``` 下面是一些关于如何允许 HTTP 连接的方法。 第一个选项是使用服务名称。UFW 检查`/etc/services`文件中指定服务的端口和协议: ``` ufw allow port_number/protocol ``` 您还可以指定端口号和协议: ``` sudo ufw allow http ``` 当没有给出协议时,UFW 为`tcp`和都创建规则`udp`。 另一种选择是使用应用程序配置文件;在这种情况下,“Nginx HTTP”: ``` sudo ufw allow 80/tcp ``` UFW 还支持使用`proto`关键字指定协议的另一种语法: ``` sudo ufw allow 'Nginx HTTP' ``` ### 端口范围 UFW 还允许您打开端口范围。开始和结束端口由冒号 ( `:`) 分隔,您必须指定协议,或者`tcp`或`udp`。 例如,如果您想在和上都允许从`7100`到到的端口,您可以运行以下命令:`7200``tcp``udp` ``` sudo ufw allow proto tcp to any port 80 ``` ### 特定 IP 地址和端口 要允许来自给定源 IP 的所有端口上的连接,请使用`from`后跟源地址的关键字。 以下是将 IP 地址列入白名单的示例: ``` sudo ufw allow 7100:7200/tcp ``` 如果您只想允许给定的 IP 地址访问特定端口,请使用`to any port`关键字后跟端口号。 例如,要允许`22`从 IP 地址为 的机器访问端口`64.63.62.61`,请输入: ``` sudo ufw allow 7100:7200/udp ``` ### 子网 允许连接到 IP 地址子网的语法与使用单个 IP 地址时的语法相同。唯一的区别是您需要指定网络掩码。 下面是一个示例,展示了如何允许访问范围从`192.168.1.1`到`192.168.1.254`到端口`3360`( [MySQL](https://jskcw.com/post/how-to-install-mysql-on-ubuntu-20-04/) ) 的 IP 地址: ``` sudo ufw allow from 64.63.62.61 ``` ### 特定网络接口 要允许特定网络接口上的连接,请使用`in on`后跟网络接口名称的关键字: ``` sudo ufw allow from 64.63.62.61 to any port 22 ``` 拒绝连接 ---- 所有传入连接的默认策略设置为`deny`,如果您没有更改它,UFW 将阻止所有传入连接,除非您专门打开连接。 编写拒绝规则与编写允许规则相同;您只需要使用`deny`关键字而不是`allow`. 假设您打开了端口`80`和`443`,并且您的服务器受到`23.24.25.0/24`网络攻击。要拒绝来自`23.24.25.0/24`您的所有连接,请运行以下命令: ``` sudo ufw allow from 192.168.1.0/24 to any port 3306 ``` 这里是否认只是端口的访问的例子`80`,并`443`从`23.24.25.0/24`您可以使用下面的命令: ``` sudo ufw allow in on eth2 to any port 3306 ``` 删除 UFW 规则 --------- 有两种不同的方法可以通过规则编号和指定实际规则来删除 UFW 规则。 按规则编号删除规则更容易,尤其是当您不熟悉 UFW 时。要先按规则编号删除规则,您需要找到要删除的规则编号。要获取编号规则列表,请使用以下`ufw status numbered`命令: ``` sudo ufw deny from 23.24.25.0/24 ``` ``` sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443 ``` 要删除规则编号`3`,即允许连接到端口的规则编号`8080`,您可以输入: ``` sudo ufw status numbered ``` 第二种方法是通过指定实际规则来删除规则。例如,如果您添加了打开端口的规则,则`8069`可以使用以下命令将其删除: ``` Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 8080/tcp ALLOW IN Anywhere ``` 禁用 UFW ------ 如果出于任何原因您想停止 UFW 并停用所有规则,您可以使用: ``` sudo ufw delete 3 ``` 稍后如果您想重新启用 UTF 并激活所有规则,只需键入: ``` sudo ufw delete allow 8069 ``` 重置 UFW ------ 重置 UFW 将禁用 UFW,并删除所有活动规则。如果您想恢复所有更改并重新开始,这将很有帮助。 要重置 UFW,请键入以下命令: ``` sudo ufw disable ``` IP 伪装 ----- IP 伪装是 Linux 内核中 NAT(网络地址转换)的一种变体,它通过重写源和目标 IP 地址和端口来转换网络流量。使用 IP 伪装,您可以允许专用网络中的一台或多台机器使用一台充当网关的 Linux 机器与 Internet 通信。 使用 UFW 配置 IP 伪装涉及几个步骤。 首先,您需要启用 IP 转发。为此,请打开`/etc/ufw/sysctl.conf`文件: ``` sudo ufw enable ``` 查找并取消注释以下行`net.ipv4.ip_forward = 1`: /etc/ufw/sysctl.conf 接下来,您需要配置 UFW 以允许转发数据包。打开 UFW 配置文件: ``` sudo ufw reset ``` 找到`DEFAULT_FORWARD_POLICY`键,并将值从 更改`DROP`为`ACCEPT`: /etc/default/ufw ``` sudo nano /etc/ufw/sysctl.conf ``` 现在您需要为表中的`POSTROUTING`链`nat`和伪装规则设置默认策略。为此,请打开`/etc/ufw/before.rules`文件并附加以黄色突出显示的行,如下所示: ``` net/ipv4/ip_forward=1 ``` 附加以下几行: /etc/ufw/before.rules ``` sudo nano /etc/default/ufw ``` 不要忘了替换`eth0`的`-A POSTROUTING`行相匹配的公共网络接口的名称: 完成后,保存并关闭文件。 最后,通过禁用和重新启用 UFW 来重新加载 UFW 规则: ``` DEFAULT_FORWARD_POLICY="ACCEPT" ``` 结论 -- 我们已经向您展示了如何在 Ubuntu 20.04 服务器上安装和配置 UFW 防火墙。确保允许系统正常运行所需的所有传入连接,同时限制所有不必要的连接。 有关此主题的更多信息,请访问 [UFW 手册页](https://manpages.ubuntu.com/manpages/focal/man8/ufw.8.html) 。 如果您有任何疑问,请随时在下面发表评论。
Jonny
2022年5月22日 22:51
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
【腾讯云】爆款2核2G4M云服务器一年45元,企业首购最高获赠300元京东卡
【腾讯云】爆款2核2G4M云服务器一年45元,企业首购最高获赠300元京东卡
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期