ufw简易使用教程

什么是ufw

全称Uncomplicated Firewall,是一个iptables的接口,可以简单理解为ufw是一个用于管理iptables的工具,由于其命令简洁便于使用、同时支持IPv4、IPv6而受到我本人的欢迎。

为什么要用ufw

来对比一下

#iptables开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

#ufw开放22端口
ufw allow 22/tcp
ufw enable

你说为什么要用ufw
当然是简单啊!

安装ufw

Ubuntu/Debian

sudo apt-get update
sudo apt-get install ufw

CentOS/RHEL

sudo yum install ufw

设置默认规则

注意:从本章节开始所有命令都是在root权限下执行的,请提前切换到root用户!我实在懒得把sudo打出来了
虽然一般来说刚刚安装好的ufw本来就不包含规则,但最好还是先拒绝所有传入的连接再按照自己的需求配置比较好。(此处配置完后千万不要直接执行ufw enable对这两条命令进行应用

ufw default allow outgoing #默认允许所有数据出站
ufw default deny incoming #默认禁止所有数据入站

ufw default命令意为:默认xxx
allowdeny详见下图:
没别的意思
这两个单词不认识实在不应该

基础命令

查看当前规则

你可以使用以下命令查看已生效的规则

ufw status
ufw status numbered  #这条会让列出的规则前面加上数字编号

允许或禁止某端口/某服务传入和传出流量

以允许22端口为例

ufw allow 22
ufw deny 22

真的超级简单。

仅仅允许某端口的TCP/UDP的流量

在端口号后加上/tcp/udp即可

ufw allow 22/tcp
ufw allow 22/udp

通过应用名来允许或禁止某项服务的流量(默认的端口)

ufw allow ssh
ufw deny ssh

上面两条命令等同于

ufw allow 22/tcp
ufw deny 22/tcp

你也可以通过这个方法来禁用

使配置生效

为了使我们输入的配置生效,请使用以下命令

ufw enable

关闭防火墙

ufw disable

删除生效的规则

你可以通过以下格式删除规则

ufw delete allow ssh
ufw delete allow 22

或者根据ufw status numbered给出的列表前的数字编号删除

ufw delete 1 #删除编号为1的规则

高级用法

允许某IP或IP地址段访问某端口

允许某IP或IP地址段访问本机所有端口

ufw allow from 192.168.1.1  #允许某IP访问
ufw allow frome 192.168.1.0/24  #允许某IP段访问

某IP或IP地址段访问本机某特定端口

ufw allow from 192.168.1.1 any port 22  #允许某IP访问
ufw allow from 192.168.1.0/24 any port 22  #允许某IP段访问

禁ping,仅允许特定IP使用ping

检查是否已经关闭了icmp服务

cat /etc/ufw/sysctl.conf | grep net/ipv4/icmp_echo_ignore_all=

如果输出结果为net/ipv4/icmp_echo_ignore_all=1则需要到文件里把它改为net/ipv4/icmp_echo_ignore_all=0

添加规则

/etc/ufw/before.rules中添加规则

-A ufw-before-input -p icmp --icmp-type echo-request -s 此处填写IPv4地址或地址段 -m state --state ESTABLISHED -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -s 此处填写IPv6地址或地址段 -m state --state ESTABLISHED -j ACCEPT

重新加载配置

ufw reload

参考文章


ufw简易使用教程
https://blog.xianyu.one/2022/03/22/Linux/tutorial/ufw/
作者
咸鱼
发布于
2022年3月22日
许可协议