Ubuntu 24.04.2 LTS管理UFW防火墙

一、环境

自从CentOS宣布停止维护后,运维人员首先还是ubuntu,虽然性能相比之下可能逊色一点,但依然还是最好的选择。不担心停止维护的风险。由于发行商的不同,管理的方式会有所不同。比如,今天要讲的防火墙配置,ubuntu采用的是ufw进行管理,当然也可以直接采用内核级别的iptables进行管理。二者选其一即可,不然有冲突。来看看今天的系统主角:

Linux VM-12-12-ubuntu 6.8.0-59-generic #61-Ubuntu SMP PREEMPT_DYNAMIC Fri Apr 11 23:16:11 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@VM-12-12-ubuntu:/etc/ufw# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
root@VM-12-12-ubuntu:/etc/ufw#

今天着重来讲一下UFW,如果需要了解iptables的配置,也可以查阅之前的文档:Ubuntu 24.04.2 LTS 通过iptables共享上网
注意:iptables 和UFW 同时启用后,可能会有所冲突,如果开启了UFW了,就尽量都用UFW设置,要不就不用,直接用iptables进行管理。

二、配置

UFW不需要,再进行安装,系统已经默认安装了。只需要启动配置即可操作了。
首先查看一下帮助命令:

root-12-12-ubuntu:/etc/ufw# ufw -h

Usage: ufw COMMAND

Commands:
 enable                          enables the firewall
 disable                         disables the firewall
 default ARG                     set default policy
 logging LEVEL                   set logging to LEVEL
 allow ARGS                      add allow rule
 deny ARGS                       add deny rule
 reject ARGS                     add reject rule
 limit ARGS                      add limit rule
 delete RULE|NUM                 delete RULE
 insert NUM RULE                 insert RULE at NUM
 prepend RULE                    prepend RULE
 route RULE                      add route RULE
 route delete RULE|NUM           delete route RULE
 route insert NUM RULE           insert route RULE at NUM
 reload                          reload firewall
 reset                           reset firewall
 status                          show firewall status
 status numbered                 show firewall status as numbered list of RULES
 status verbose                  show verbose firewall status
 show ARG                        show firewall report
 version                         display version information

Application profile commands:
 app list                        list application profiles
 app info PROFILE                show information on PROFILE
 app update PROFILE              update PROFILE
 app default ARG                 set default application policy

root-12-12-ubuntu:/etc/ufw#

基本上,涵盖了日常需要的基本操作。下面列举几个主要的操作:

  • 查看当前状态和防火墙规则
ufw status    #Status: active 服务激活;如果没有配置规则,将不显示防火墙规则
  • 设置默认动作
ufw default allow/deny    #对未配置的端口执行默认允许/拒绝动作
  • 添加允许/拒绝端口的规则
ufw allow 22/tcp    #允许 22 tcp封包;还可以换成 22/udp,表示允许22端口 udp封包
ufw deny 22       #拒绝 22 端口 (udp+tcp)
  • 删除允许/拒绝端口的规则
ufw delete allow/deny 20    #删除规则同添加一致 添加 22/tcp就删除 22/tcp,不能删除 22
  • 启动/关闭/重载防火墙
    通过ssh远程连接建议先设置 22/tcp允许规则再启动防火墙服务
ufw enable/disable/reload

三、转发

  • 打开系统内核转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #增加或修改该字段,值设为1
sysctl -p # 直接生效
  • 开启UFW转发
vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT" # DROP 设置为 ACCEPT
  • UFW的FORWARD配置
vim /etc/ufw/before.rules
# 注意默认规则内容都包含在 *filter...COMMIT 内
# 添加如下内容时注意 *nat...COMMIT 不能放在 *filter...COMMIT 内
#  172.16.0.0是私网保留网段

*nat
:PREROUTING - [0:0]
:POSTROUTING - [0:0]
-A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE
COMMIT

一般不建议直接这样配置,很有可能会破坏系统原有的配置,不如一些云系统。所以尽量先用用iptables去配置生成后,再复制下来进行配置。如以下操作:
先执行:iptables -t nat -A POSTROUTING -s 172.31.25.0/24 -j MASQUERADE
再执行:iptables-save这时候,它会把当前的配置打印到屏幕终端。这时候,复制下来即可。
如示例:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [201:13199]
-A POSTROUTING -s 172.31.25.0/24 -o eth0 -j MASQUERADE
COMMIT

以上配置完成后,重启防火墙ufw reload 即可。

posted @ 2025-05-09 17:15  刘文江  阅读(730)  评论(0)    收藏  举报  来源