Debian 11防火墙 ufw
如何在Debian 11配置防火墙ufw
防火墙是用于监控和过滤传入和传出网络流量的工具。 它通过定义一组确定是允许还是阻止特定流量的安全规则来工作
如果没有安装的ufw,首先进行安装;
apt install ufw然后就可以愉快的使用了:
# 1. 查看防火墙状态, 效果类似firewall-cmd --list-all
ufw status;
# 2. 开启防火墙
ufw enable
# 3. 开放端口
ufw allow <port>/<protocol>
例: ufw allow 8080/tcp
# 4. 关闭端口
ufw deny <port>/<protocol>
例: ufw deny 8080/tcp
# 5. 关闭防火墙
ufw disable防火墙是用于监控和过滤传入和传出网络流量的工具。 它通过定义一组确定是允许还是阻止特定流量的安全规则来工作。
Debian 11安装了一个称为UFW的防火墙配置工具。它是用于管理iptables防火墙规则的用户友好型前端。它的主要目标是使防火墙的管理变得更容易,简单。
只有root或具有sudo权限的用户可以管理系统防火墙。最佳做法是以sudo用户运行管理任务系统防火墙。
ufw是Debian 11标准安装的一部分,它应该已安装于您的系统中。
如果由于某种原因未安装,则可以通过apt软件管理器安装UFW,sudo apt update命令将会安装UFW
&& sudo apt install ufw
UFW默认情况下处于禁用状态。 您可以运行命令sudo ufw status verbose检查UFW服务的状态。
sudo ufw status verbose命令将会打印防火墙的状态。Status: inactive表示防火墙状态为非活动状态。Status: active表示UFW已激活。
UFW防火墙的默认行为是阻止所有传入连接,并允许所有出站流量。这意味着除非您打开指定的端口,否则任何尝试访问您的服务器的人都将无法连接。
默认策略在/etc/default/ufw文件中定义,可以通过手动修改该文件或使用sudo ufw default <policy> <chain>命令来更改。
防火墙策略是建立更复杂的用户自定义规则的基础。通常,最初的UFW默认策略是一个很好的起点。
sudo ufw status verbose应用配置文件
应用程序配置文件是INI格式的文本文件,描述了服务的防火墙规则。在安装软件期间,会在/etc/ufw/applications.d目录中创建应用程序配置文件。
您可以运行命令sudo ufw app list列出服务器上所有可用的应用程序配置文件。sudo ufw app info命令可以查找指定配置文件包含的防火墙规则详细信息。
sudo ufw app info 'Nginx Full'命令将会查找Nginx服务的防火墙规则的配置信息。您也可以为应用创建自定义配置文件。
sudo ufw app list
sudo ufw app info 'Nginx Full'启用UFW
在启用UFW防火墙之前,必须明确允许SSH的连接。否则,您将无法连接到计算机。
sudo ufw allow ssh命令将UFW防火墙配置为允许SSH的连接。如果SSH不是监听默认端口22。则需要打开该端口。
如果您的ssh服务监听端口7722,请运行命令sudo ufw allow 7722/tcp允许该端口的连接。当已将防火墙配置为允许SSH的连接时,您可以运行命令来启用它。
sudo ufw enable将会启用Debian 11防火墙,并提示你命令可能会中断SSH的连接是否要进行该操作。
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y。只需键入y并按Enter回车。
sudo ufw allow ssh # 明确允许SSH连接
sudo ufw allow 7722/tcp # SSH在其它端口
sudo ufw enable #启用UFW打开端口
根据系统上运行的应用程序,您可能还需要打开其他端口。打开端口语法是ufw allow port_number/protocol。如果未给出协议,则UFW会同时为tcp和udp创建规则。
以下是关于如何允许HTTP连接的几种方法。第一种选择是使用服务名称。UFW将检查/etc/services文件中服务指定的端口和协议。命令是sudo ufw allow http。
另一个选择是使用应用程序的配置文件。比如命令sudo ufw allow 'Nginx HTTP'将会应用Nginx的防火墙配置文件,打开端口80和443。
UFW还允许您打开指定的端口范围。起始端口和结束端口用冒号:分隔,并且您必须指定协议tcp或udp。
例如,如果要允许7100到7200端口在TCP协议的连接,请运行命令sudo ufw allow 7100:7200/tcp 。
指定端口号最常用的方式,例如命令sudo ufw allow 80将会打开80端口。UFW还支持使用proto关键字指定协议。
sudo ufw allow http #如果http服务存在
sudo ufw allow 'Nginx HTTP' #如果Nginx服务存在
sudo ufw allow 80 #tcp和udp 80
sudo ufw allow 80/tcp #仅tcp 80
sudo ufw allow 7100:7200/tcp #端口范围
sudo ufw allow proto tcp to any port 80
允许源IP地址接口/网卡
要允许来自指定源IP的连接,请使用from关键字,后跟源地址。如果要仅允许指定的IP地址访问指定的端口,请使用to any port关键字,后跟端口号。
除了允许指定的IP地址之外你还可以指定IP地址的范围,或者是子网。允许IP地址子网的语法与使用单个IP地址时的语法相同。唯一的区别是您需要指定子网掩码。
在允许指定的网络接口上的连接时,请使用in on关键字,后跟接口的名称。
下面是一个示例,展示如何允许从192.168.1.1到192.168.1.254的IP地址,即192.168.1.0/24网段。连接到MySQL端口3360。
sudo ufw allow from 192.168.1.100 #仅允许单IP地址
sudo ufw allow from 192.168.1.100 to any port 3306 #仅允许单IP地址连接3306
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw allow in on eth2 to any port 3306拒绝连接
所有传入连接的默认策略均设置为deny,如果您未更改默认策略,除非打开指定端口的连接,否则UFW会阻止所有传入连接。
撰写拒绝规则与撰写允许规则相同。您只需要使用deny关键字而不是allow。
假设您打开了端口80和443,并且服务器受到23.24.25.0/24网络的攻击。要拒绝来自23.24.25.0/24的所有连接。请运行命令sudo ufw deny from 23.24.25.0/24。
命令将会拒绝23.24.25.0/24网段的连接,如果你仅需要拒绝指定IP地址的连接,则不需要添加子网掩码。
你还可以拒绝指定的IP地址连接到指定端口的连接,例如命令sudo ufw deny proto tcp from 23.24.25.100 to any port 80,443。将会拒绝23.24.25.100访问端口80和443。
sudo ufw deny from 23.24.25.100 #拒绝指定的IP连接
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删除防火墙规则
有两种方法删除UFW规则,第一种是通过规则编号,第二种是指定实际规则来删除UFW规则。按规则编号删除ufw防火墙规则比较容易,尤其是您不熟悉UFW时。
如果你要通过规则编号删除规则,您需要找到要删除的规则的编号。要获取规则编号的列表,请运行命令sudo ufw status numbered,命令将会展示所有规则的编号。
假设要删除的ufw规则编号是3,该规则号允许连接到端口8080。你可运行命令sudo ufw delete 3。
第二种方法是通过指定实际规则来删除规则。例如,如果您添加打开8069端口的规则,则可以运行命令sudo ufw delete allow 8069将其删除。
sudo ufw status numbered #已编号的防火墙规则
sudo ufw delete 3 #根据编号删除
sudo ufw delete allow 8069 通过规则删除规则禁用防火墙
如果出于某些原因要停止UFW并停用所有规则,则可以运行命令sudo ufw disable禁用防火墙。
以后,如果您想重新启用ufw并激活所有规则,运行命令sudo ufw enable即可。
重置UFW将禁用UFW,并删除所有活动规则。如果您不想还原所有更改并重新开始,这将很有帮助。要重置UFW,可以运行命令sudo ufw reset。
sudo ufw disable #禁用
sudo ufw enable #开启
sudo ufw reset #重置IP伪装
IP伪装是Linux内核中NAT网络地址转换的一种变体,它通过重写源IP地址和目标IP地址端口来转换网络流量。
借助IP伪装,您可以使用一台Linux计算机充当网关,允许私有网络中的一台或多台计算机与互联网通信。
例如VMware或者Virtualbox此类虚拟软件就是通过一个NAT适配器充当网关,转发多台虚拟机网络数据,连接到互联网。
使用UFW配置IP伪装涉及几个步骤。首先,您需要启用IP转发ip_forward。
请使用你喜欢的编辑器编辑/etc/ufw/sysctl.conf文件,在本教程中将使用vim编辑器打开文件。
sudo vim /etc/ufw/sysctl.confnet/ipv4/ip_forward=1/etc/ufw/sysctl.conf
您还需要配置UFW以允许转发数据包。打开UFW配置文件/etc/default/ufw。找到DEFAULT_FORWARD_POLICY键,然后将值从DROP更改为ACCEPT。
sudo vim /etc/default/ufwDEFAULT_FORWARD_POLICY="ACCEPT"现在,您需要在nat表中设置POSTROUTING链的默认策略和伪装规则。请打开/etc/ufw/before.rules文件。追加以下几行到文件.
sudo vim /etc/ufw/before.rules#NAT table rules 启用nat 表
*nat
# 允许POSTROUTING 链
:POSTROUTING ACCEPT [0:0]
# 转发eth0接口的数据包,请将eth0更改为你对应的接口
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT/etc/ufw/before.rules
注意不要删除COMMIT关键词,它永远是在最后一行。别忘了在-A POSTROUTING行中替换eth0以匹配你的计算机可以连接到互联网的接口名称。
完成后,保存并关闭文件。最后,通过命令sudo ufw disable禁用和命令sudo ufw enable重新启用UFW重新加载UFW规则。
我们已向您展示了如何在Debian 11服务器安装和配置防火墙。在限制所有不必要的连接的同时,请确保允许系统正常运行所需的所有传入连接。
有关此主题的更多信息,请访问UFW手册页。如果您有任何疑问,请随时在下面发表评论。
一、防火墙相关命令介绍
1.查看防火墙状态sudo ufw status,也可以看到开放的端口
2.关闭防火墙sudo ufw disable,打开防火墙sudo ufw enable,
3.开放端口sudo ufw allow 端口号
4.关闭端口sudo ufw deny 端口号
5.重启防火墙sudo ufw reload
二、端口开启无法依然无法访问问题排查
1.查看开启的端口是否有程序监听
netstat -ap | grep 端口
2.如果端口有程序监听,排查程序是否需要配置远程访问(例如redis、mysql都需要配置远程访问)
ufw防火墙:
ufw是为了方便使linux的防火墙更佳方便使用以及管理,再一般安装ufw与其他linux类型防火墙的默认安装是一致的,使用iptable做后台。
1.安装ufw防火墙
sudo apt-get install ufw2.开启ufw防火墙
sudo ufw enable
sudo ufw default deny运行上面两条命令后,防火墙开启并且再系统启动是会自动启动,同时关闭所有外部网络对本级的访问请求,但是本机可正常访问外部网络
3.关闭ufw防火墙
sudo ufw disable4.查看防火墙状态
sudo ufw status5.启用/禁用某端口(默认向内)
sudo ufw allow (启用)端口号(包含tcp和udp协议包) 21
端口号/协议 21/tcp
服务名称sudo ufw delete allow(禁用) 端口号(包含tcp和udp协议包) 21
端口号/协议 21/tcp
服务名称 smtpufw同时也可检查 /etc/services文件,了解服务的名字及对应的端口和协议。我们使用该服务的名称即可。
6.开放/关闭指定IP所有操作
sudo ufw allow from ip地址
sudo ufw delete allow from ip地址7.开放/关闭指定ip对应端口操作
sudo ufw allow from ip地址 to any port 端口号
sudo ufw delete allow from ip地址 to any port 端口号8.重启防火墙
sudo ufw reload9.查看端口ip
netstat -ltn10.查看端口监听状态
sudo netstat -tunlp | grep 端口号一般用户,只需如下设置:
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny上面三条命令已经足够安全了,如果你需要开放某些服务,再使用sudo ufw allow开启。
1.查看防火墙当前状态
sudo ufw status
2.开启防火墙
sudo ufw enable
3.关闭防火墙
sudo ufw disable
4.查看防火墙版本
sudo ufw version
5.默认允许外部访问本机
sudo ufw default allow
6.默认拒绝外部访问主机
sudo ufw default deny
7.允许外部访问53端口
sudo ufw allow 53
8.拒绝外部访问53端口
sudo ufw deny 53
9.允许某个IP地址访问本机所有端口
sudo ufw allow from 192.168.0.1
大多数系统只需要打开少量的端口接受传入连接,并且关闭所有剩余的端口。 从一个简单的规则基础开始,ufw default命令可以用于设置对传入和传出连接的默认响应动作。 要拒绝所有传入并允许所有传出连接,那么运行:
sudo ufw default allow outgoing
sudo ufw default deny incoming
ufw default 也允许使用 reject 参数。
警告:除非明确设置允许规则,否则配置默认 deny 或 reject 规则会锁定你的服务器。确保在应用默认 deny 或 reject 规则之前,已按照下面的部分配置了 SSH 和其他关键服务的允许规则。
高级规则:
除了基于端口的允许或阻止,UFW 还允许您按照 IP 地址、子网和 IP 地址/子网/端口的组合来允许/阻止。
允许从一个 IP 地址连接:
sudo ufw allow from 123.45.67.89
允许特定子网的连接:
sudo ufw allow from 123.45.67.89/24
允许特定 IP/ 端口的组合:
sudo ufw allow from 123.45.67.89 to any port 22 proto tcp
proto tcp 可以删除或者根据你的需求改成 proto udp,所有例子的 allow 都可以根据需要变成 deny。
12.要删除一条规则,在规则的前面加上 delete。如果你希望不再允许 HTTP 流量,你可以运行:
sudo ufw delete allow 80
删除规则同样可以使用服务名。
常用命令
ufw version #查看版本信息
ufw enable #启用防火墙
ufw disable #禁用防火墙
ufw reload #重载防火墙
ufw reset #重新设置防火墙 (注意:这将禁用UFW并删除之前定义的任何规则)
ufw verbose #查看防火墙策略
使用
最新版的UFW默认启用了IPV6配置,你也可以通过以下命令进行检查,可以看到以下输出:
root@cyy:~# cat /etc/default/ufw | grep -i ipv6
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
IPV6=yes
如果输出为IPV6=no,可以使用vim编辑该文件将其改为yes。
一、设置UFW默认策略
默认情况下,UFW默认策略设置为阻止所有传入流量并允许所有传出流量,你可以使用以下命令来设置自己的默认策略:
# ufw default allow outgoing
# ufw default deny incoming
二、设置SSH或其他规则
允许传入SSH连接,可以使用以下命令:
# ufw allow ssh
这将创建防火墙规则-允许端口22上的所有连接
也可以通过直接指定端口来创建等效规则
# ufw allow 22
三、设置其他规则
可以基于TCP或UDP协议来过滤数据包,命令如下:
# ufw allow 80/tcp
# ufw allow 21/udp
ufw status verbose #查看防火墙策略
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
80/tcp ALLOW IN Anywhere
21/udp ALLOW IN Anywhere
80/tcp (v6) ALLOW IN Anywhere (v6)
21/udp (v6) ALLOW IN Anywhere (v6)
还可以使用以下命令随时拒绝指定端口任何传入和传出的流量:
# ufw deny 80
# ufw deny 21
如果要删除HTTP允许的规则,只需在原始规则前加上delete即可,如下所示:
# ufw delete allow http
# ufw delete deny 21
也可以按编号删除规则,使用以下命令查看规则及其编号:
# ufw status numbered
OutputStatus: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 443/tcp ALLOW IN Anywhere
[ 3] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 4] 443/tcp (v6) ALLOW IN Anywhere (v6)
举个例子,要删除允许端口443上的HTTPS连接规则,也就是编号2(注意删除完规则后编号会更新):
# ufw delete 2
四、特定端口范围
某些应用程序使用多个端口而不是单个端口,你可能需要使用UFW指定端口范围,指定端口范围时,必须指定规则应适用的协议( tcp或udp )。例如,要允许使用端口9000-9002范围内的连接,可以使用以下命令:
# ufw allow 9000:9002/tcp
# ufw allow 9000:9002/udp
五、特定的ip地址
出于某些情况,你可能需要允许/禁用来自特定IP地址的连接,如下:
# ufw allow from 192.168.29.36
# ufw deny from 192.168.29.36
还可以在UFW中允许IP地址范围,以下命令将允许从192.168.1.1到192.168.1.254的所有连接:
# ufw allow from 192.168.1.0/24
要允许IP地址192.168.29.36连接特定的端口80,可以运行以下命令:
# ufw allow from 192.168.29.36 to any port 80
进一步的,可以指定TCP/UDP:
# ufw allow from 192.168.29.36 to any port 80 proto tcp
来个复杂点的例子,
# ufw deny from 192.168.0.4 to any port 22
# ufw deny from 192.168.0.10 to any port 22
# ufw allow from 192.168.0.0/24 to any port 22
以上命令将会阻止从192.168.0.4和192.168.0.10访问端口22,但允许所有其他IP访问端口22。
以上大致简述了UFW的基本使用,日常使用基本够用。除此之外,UFW还支持更多的高级特性例如允许与特定网络接口的连接、配置NAT等等,你可以通过查看帮助文档或者搜索引擎了解其他高级命令的使用。
拓展:
学习以下命令用法
logging LEVEL #设置日志记录为LEVEL
allow ARGS #添加允许规则
deny ARGS #添加否定规则
reject ARGS #添加拒绝规则
limit ARGS #添加限制规则
delete RULE|NUM #删除规则
insert NUM RULE #在NUM处插入规则
route RULE #添加路由规则
route delete RULE|NUM #删除路由规则
route insert NUM RULE #在NUM插入路由规则
status #显示防火墙状态
status numbered #显示防火墙状态的编号列表的规则
show ARG #报告显示防火墙
version #显示版本信息
应用程序配置文件命令:
app list #列表应用程序配置文件
app info PROFILE #显示PROFILE信息
app update PROFILE #更新配置文件
app default ARG #设置默认应用策略
评论区