ufw:Linux网络防火墙

news/2024/12/21 16:37:29/

一、命令简介

ufw​(Uncomplicated Firewall)是一个为 Linux 系统提供简单易用的命令行界面的防火墙管理工具。它是基于 iptables ​的,但提供了更简洁的语法和更直观的操作方式,使得配置防火墙变得更加简单,特别适合那些希望快速设置基本防火墙的用户,同时也支持更高级的配置需求。

​​

安装 ufw

sudo apt update
sudo apt install ufw

二、命令参数

命令格式:

sudo ufw 子命令 [选项] [规则]
  • [子命令]​:如 enable​、disable​、allow​、deny​、limit​、delete​ ​等,用于执行特定的防火墙操作。
  • [选项]​:这是子命令的可选参数,用于进一步定义或修改子命令的行为。
  • [规则]​:这是指定防火墙规则的部分,通常包括流量来源、目的地、使用的协议和端口等信息。

子命令

  • enable​: 启用UFW。
  • disable​: 禁用UFW。
  • allow​: 允许特定的连接或服务。
  • deny​: 拒绝特定的连接或服务。
  • reject​: 拒绝特定的连接或服务,并返回一个错误信息给客户端。
  • limit​: 限制特定连接的速率。
  • delete​: 删除一个特定的规则。
  • insert​: 在规则列表中的特定位置插入一条规则。
  • status​: 显示当前的防火墙规则状态。
  • status numbered​: 显示当前防火墙规则的状态,并带上规则的编号。
  • reset​: 重置UFW的规则,即删除所有规则。

选项

  • --dry-run​: 显示规则更改,但不实际应用它们。
  • --force​: 强制执行命令,不进行任何提示。
  • in​: 指定规则应用于进入的连接。
  • out​: 指定规则应用于输出的连接。
  • on​: 指定规则应用于特定的网络接口。

规则

  • ssh​: 允许或拒绝SSH连接。
  • 80/tcp​: 指定TCP端口80的规则。
  • 53/udp​: 指定UDP端口53的规则。
  • from 192.168.1.100​: 指定来自特定IP地址的规则。
  • to any​: 指定目标为任何地址的规则。

三、命令示例

  1. 启用 ufw:

    sudo ufw enable
    
  2. 禁用 ufw:

    sudo ufw disable
    
  3. 允许所有传入流量:

    sudo ufw default allow incoming
    
    • default​:这个关键字用于设置默认的策略,而不是针对特定的服务或端口。

    • allow​:允许。

    • incoming​:这个关键字指定了规则的类型,这里是针对传入的流量。

  4. 拒绝所有传入流量:

    sudo ufw default deny incoming
    
    • deny​:拒绝。
  5. 允许所有传出流量:

    sudo ufw default allow outgoing
    
    • outgoing​:这个关键字指定了规则的类型,这里是针对传出的流量。
  6. 拒绝所有传出流量:

    sudo ufw default deny outgoing
    
  7. 允许来自特定 IP 地址的流量:

    sudo ufw allow from 192.168.1.100
    
  8. 拒绝来自特定 IP 地址的流量:

    sudo ufw deny from 192.168.1.200
    
  9. 允许特定端口的流量(例如,TCP 端口 80):

    sudo ufw allow 80/tcp
    
  10. 拒绝特定端口的流量(例如,UDP 端口 53):

    sudo ufw deny 53/udp
    
  11. 允许特定服务的流量(例如,SSH):

    sudo ufw allow ssh
    
  12. 拒绝特定服务的流量(例如,MySQL):

    sudo ufw deny mysql
    
  13. 限制特定端口的连接尝试(例如,每分钟不超过 20 次):

    sudo ufw limit 22/tcp
    
  14. 删除特定规则的编号(例如,删除编号为 3 的规则):

    sudo ufw delete 3
    
  15. 在特定位置插入规则(例如,在编号 5 的位置插入规则):

    sudo ufw insert 5 allow 2222/tcp
    
  16. 在规则列表的开头添加规则(例如,允许 TCP 端口 443):

    sudo ufw prepend allow 443/tcp
    
  17. 重新加载 ufw 的规则:

    sudo ufw reload
    
  18. 重置 ufw 的规则到默认状态:

    sudo ufw reset
    
  19. 显示 ufw 的当前状态:

    sudo ufw status
    
  20. 显示 ufw 的当前状态,包括规则编号:

    sudo ufw status numbered
    
  21. 显示 ufw 的详细状态:

    sudo ufw status verbose
    
  22. 显示 ufw 的版本信息:

    sudo ufw version
    
  23. 列出所有应用程序配置文件:

    sudo ufw app list
    
  24. 显示特定应用程序配置文件的详细信息(例如,SSH):

    sudo ufw app info ssh
    
  25. 更新特定应用程序配置文件(例如,SSH):

    sudo ufw app update ssh
    
  26. 设置默认的应用程序策略(例如,允许 Dovecot):

    sudo ufw app default allow dovecot
    

四、规则生效顺序

存在多条规则时,如果规则间有冲突,则前者优先生效。

To                         Action      From
--                         ------      ----
22                         ALLOW       192.168.10.0/24  #第1条始终有效,因为它在最前面。
22                         DENY        Anywhere         #与前面的规则冲突,只能部分生效,DENY对规则1描述的网段不生效。
22 (v6)                    DENY        Anywhere (v6)	#生效
  • 第一条规则始终有效
  • 第二条规则,与第一条规则冲突的部分无效,不冲突的部分有效。
  • 第三条规则有效。

练习: 限制端口 22 每分钟只能尝试连接 5 次,但不限制来自192.168.10.0/24 网段的连接?

  1. 限制默认连接次数。编辑 /etc/ufw/ufw.conf​ 文件,设置参数 LIMIT = "5/minute"​,保存。执行 sudo ufw reload​ 重载 ufw 配置。
  2. 允许特例。

sudo ufw allow from 192.168.10.0/24 to any port 22# 限制端口连接频率
sudo ufw limit proto tcp to any port 22

注意:添加规则的顺序很重要。 因为规则列表的顺序就是ufw生效顺序。应先添加特例,再添加默认行为。


http://www.ppmy.cn/news/1534371.html

相关文章

HTML5实现唐朝服饰网站模板源码

文章目录 1.设计来源1.1 网站首页-界面效果1.2 唐装演变-界面效果1.3 唐装配色-界面效果1.4 唐装花纹-界面效果1.5 唐装文化-界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcL…

SpringBoot集成-RocketMQ快速入门

1.MQ概述 MQ全称为Message Queue,即消息队列 ,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程的软件系统,遵循FIFO原则。 1.1MQ常见产品 ActiveMQ ActiveMQ是使用Java语…

水波荡漾效果+渲染顺序+简单UI绘制

创建场景及布置 创建新场景Main,在Main场景中创建一个plane物体,命名为WaterWavePla,具体数值及层级面板排布如下: 编写脚本 创建一个文件夹,用于存放脚本,命名Scripts,创建一个子文件夹Effect,存放特效相关脚本,创建…

第二十三节:学习拦截器或者使用AOP实现用户token参数请求检测(自学Spring boot 3.x的第六天)

这节记录下如何使用aop或者使用interceptor实现用户请求的是否带token,本文只是简单检查用户请求是否带参数token,并不对token的正确性进行验证。通常要从后台缓存中进行token校验。 第一种方式:拦截器方式 第一步:新建一个拦截器…

论文翻译 | LLaMA-Adapter :具有零初始化注意的语言模型的有效微调

摘要 我们提出了一种轻量级的自适应方法,可以有效地将LLaMA微调为指令遵循模型。lama - adapter采用52K自指导演示,在冻结的LLaMA 7B模型上只引入1.2M可学习参数,在8个A100 gpu上进行微调花费不到一个小时。具体来说,我们采用了一…

Windows 环境上安装 NASM 和 YASM 教程

NASM 和 YASM NASM NASM(Netwide Assembler)是一个开源的、可移植的汇编器,它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码,并且支持多种输出格式,包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用…

linux和windows系统使用k8s控制节点的kubernetes资源

一般linux获取master控制节点的授权: [rootharbor ~]# vim /etc/hosts 192.168.1.30 harbor 192.168.1.50 master 192.168.1.51 node-0001 192.168.1.52 node-0002 192.168.1.53 node-0003 192.168.1.54 node-0004 192.168.1.55 node-0005#下…

Linux之Docker虚拟化部署

上传docker安装包 解压安装包 将解压后的docker文件夹移动到/usr/local/文件夹下 docker 启动命令/usr/local/docker/dockerd 但是启动报错,意思是没有docker用户组 创建docker用户组,执行完会生成套接字文件 将套接字文件加入该用户组管理 第二个错误原…