简单易用的防火墙工具ufw
简介
LInux原始的防火墙工具iptables由于过于繁琐,所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw。
而UFW支持图形界面操作,只需在命令行运行ufw命令即能看到一系列的操作
UFW 全称为Uncomplicated Firewall,是Ubuntu 系统上默认的防火墙组件, 为了轻量化配置iptables 而开发的一款工具。
UFW 提供一个非常友好的界面用于创建基于IPV4、IPV6的防火墙规则。
Linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。
但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。
ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。(ufw还有图形化的Gufw)
ufw的下载
ufw是ubuntu20.04上的防火墙配置工具,一般是默认安装的,如果你没有安装,则可以使用如下命令来安装。
#ubuntu
sudo apt update
sudo apt install ufw
#centos
yum install -y ufw
启动
一般ufw命令只能在具有sudo权限的用户以及root用户下执行。
在激活的时候,默认是不允许ssh端口连接的,ufw会保持当前的连接,这时候执行
sudo ufw allow ssh
来开启ssh的端口。如果不执行,重启后下次ssh连接就不能正常连接,因为ufw默认允许内部流量出去,但不允许外部流量进来。
sudo ufw enable #启用ufw
sudo ufw disable #禁用
配置
ufw相关的文件和文件夹
/etc/ufw/
:里面是一些ufw的环境设定文件,如 before.rules、after.rules、sysctl.conf、ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就ok。
若开启ufw之后,/etc/ufw/sysctl.conf
会覆盖默认的/etc/sysctl.conf
文件
若你原来的/etc/sysctl.conf
做了修改,启动ufw后,若/etc/ufw/sysctl.conf
中有新赋值,则会覆盖/etc/sysctl.conf的,否则还以/etc/sysctl.conf
为准。
当然你可以通过修改/etc/default/ufw
中的IPT_SYSCTL=
条目来设置使用哪个 sysctrl.conf
默认 IPT_SYSCTL=/etc/ufw/sysctl.conf
/var/lib/ufw/user.rules
这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得ufw reload
重启ufw使得新规则生效。
其他设置
/etc/default/ufw
#是否开启ipv6
IPV6=yes
#默认的入口策略
DEFAULT_INPUT_POLICY="DROP"
#默认的出口策略
DEFAULT_OUTPUT_POLICY="ACCEPT"
#默认的转发策略
DEFAULT_FORWARD_POLICY="DROP"
#默认的应用策略
DEFAULT_APPLICATION_POLICY="SKIP"
#默认情况下,ufw只接触自己的链。将其设置为“yes”,以便ufw也能管理内置链。
#警告:将其设置为“yes”将破坏非ufw管理的防火墙规则
MANAGE_BUILTINS=no
# 指定启用ufw之后生效的sysctl配置文件
IPT_SYSCTL=/etc/ufw/sysctl.conf
常用选项
Usage: ufw COMMAND
Commands:
enable 启动ufc
disable 禁用ufc
default ARG 设置默认规则
logging LEVEL 设置日志级别
allow ARGS 添加允许的规则
deny ARGS 添加拒绝的规则 不返回拒绝的消息,相当于丢弃
reject ARGS 添加拒绝的规则 返回拒绝的消息
limit ARGS 添加30s内访问次数限制的规则
delete RULE|NUM 删除规则
insert NUM RULE 在某一条规则前插入规则
reload 重新加载配置
reset 重置ufw配置
status 查看状态
status numbered 查看状态并以序号的形式展示列表
status verbose 查看详细的状态
version 查看版本信息
Application profile commands:
app list 列出应用程序配置文件
app info PROFILE 显示PROFILE配置文件上的信息
app update PROFILE 更新PROFILE配置文件
app default ARG 设置默认应用程序规则
查看状态
#简单
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 192.168.10.5
22/tcp ALLOW 240e:eb:111:111::/56
5666/tcp ALLOW xx:xxx:xxx::30
5666/tcp ALLOW xxx:xx::31
#详细
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW 192.168.10.5
22/tcp ALLOW 240e:eb:111:111::/56
5666/tcp ALLOW xx:xxx:xxx::30
5666/tcp ALLOW xxx:xx::31
#带序号
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN 192.168.10.5
[ 2] 22/tcp ALLOW IN 240e:eb:111:111::/56
[ 3] 5666/tcp ALLOW IN xx:xxx:xxx::30
[ 4] 5666/tcp ALLOW IN xxx:xx::31
修改默认策略
# 入口拒绝
sudo ufw default deny incoming
# 出口允许
sudo ufw default allow outgoing
设置特定端口
sudo ufw allow http #允许http连接
sudo ufw denty http #阻止http连接
特定端口的值都设置在文件/etc/services
中
设置自定义端口
sudo ufw allow 2222/tcp #允许2222端口的TCP
sudo ufw allow 2222/udp #允许2222端口的UDP
sudo ufw denty 2222/tcp #阻止2222端口的TCP
sudo ufw denty 2222/udp #阻止2222端口的UDP
#如果不带有TCP或者UDP,则默认两种都带上。
sudo ufw allow 2222
sudo ufw allow 2222
sudo ufw denty 2222
sudo ufw denty 2222
设置连续的端口
sudo ufw allow 2200:2222/tcp #允许2200到2222端口的TCP
sudo ufw denty 2200:2222/tcp #阻止2200到2222端口的UDP
设置指定IP连接
sudo ufw allow from xx.xx.xx.xx #允许指定IP访问所有端口
sudo ufw denty from xx.xx.xx.xx #阻止指定IP访问所有端口
设置指定IP访问指定端口
sudo ufw allow from xx.xx.xx.xx to any port 2222 #允许指定IP通过端口2222
sudo ufw denty from xx.xx.xx.xx to any port 2222 #阻止指定IP通过端口2222
设置特定IP访问指定协议的指定端口
sudo ufw allow from xx.xx.xx.xx to any port 2222 proto tcp#允许指定IP通过tcp协议的2222端口
sudo ufw denty from xx.xx.xx.xx to any port 2222 proto tcp #阻止指定IP通过tcp协议的2222端口
对指定网段设置
sudo ufw allow from xx.xx.xx.xx/24 #允许指定网段的连接
sudo ufw denty from xx.xx.xx.xx/24 #阻止指定网段的连接
配置出入
默认的规则都是进来的,我们可以通过in
和out
配置。
sudo ufw allow in 2222 #允许2222端口的流量进来
sudo ufw denty in 2222 #阻止2222端口的流量进来
sudo ufw allow out 2222 #允许2222端口的流量出去
sudo ufw denty out 2222 #阻止2222端口的流量出去
插入规则
sudo ufw insert 1 deny from 192.168.140.3 to any port 80
#在1号规则前面添加一条拒绝192.168.140.3访问80端口的规则
删除规则
sudo ufw delete allow 2222/tcp #删除 allow 2222/tcp这条规则
也可以指定序号删除
sudo ufw status numbered
#执行后的接结果
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
sudo ufw delete 3 #删除第三条规则。
限制30s访问次数
UFW最有用的功能之一是它能够轻松地对特定端口的连接进行速率限制。
可以使用此功能来限制连接到关键端口的数量。
当您限制一个连接时,UFW将不允许在过去30秒内有任何超过6个连接。
防火墙将阻止任何额外的连接。
格式 sudo ufw limit PORT[/PROTOCOL]
#限制22端口的访问速度
sudo ufw limit 22
重置UFW规则
sudo ufw reset
ufw的规则生效顺序
ufw的规则是,序号最小的先生效。
从上到下依次匹配,匹配到了就执行规则,不再匹配后面的规则
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17315109.html