当前位置: 首页>>技术教程>>正文


在Linux上,如何安装和使用UFW防火墙

, ,

介绍

UFW也称为非复杂防火墙,它是iptables的接口,尤其是用于基于主机的防火墙的well-suited。 UFW为不熟悉防火墙概念的初学者提供了易于使用的界面。它是源自Ubuntu的最受欢迎的防火墙工具。它同时支持IPv4和IPv6。

在本教程中,我们将学习如何在Linux上安装和使用UFW防火墙。

要求

  • 系统上安装的任何基于Linux的发行版
  • 在系统上设置root特权

安装UFW

的Ubuntu

默认情况下,UFW在大多数基于Ubuntu的发行版中都可用。如果已删除,则可以通过运行以下命令进行安装linux命令


# apt-get install ufw -y 

德比安

您可以通过运行以下linux命令在Debian中安装UFW:


# apt-get install ufw -y

CentOS的

默认情况下,UFW在CentOS存储库中不可用。因此,您需要将EPEL存储库安装到系统中。您可以通过运行以下命令来执行此操作linux命令


# yum install epel-release -y

一旦安装了EPEL存储库,您就可以通过运行以下linux命令来安装UFW:


# yum install --enablerepo="epel" ufw -y

安装UFW之后,启动UFW服务并通过运行以下命令使其在启动时启动linux命令


# ufw enable 

接下来,使用以下linux命令检查UFW的状态。您应该看到以下输出:


# ufw status 
Status: active 

您还可以通过运行以下linux命令来禁用UFW防火墙:


# ufw disable 



设置UFW默认策略

默认情况下,UFW默认策略设置为阻止所有传入流量并允许所有传出流量。您可以使用以下方法设置自己的默认策略linux命令


ufw default allow outgoing 
ufw default deny incoming 

添加和删​​除防火墙规则

您可以使用端口号或服务名称两种方式添加允许传入和传出流量的规则。例如,如果要同时允许HTTP服务的传入和传出连接。然后使用服务名称运行以下linux命令。


ufw allow http 

或者,使用端口号运行以下命令:


ufw allow 80 

如果要基于TCP或UDP过滤数据包,请运行以下命令:


ufw allow 80/tcp 
ufw allow 21/udp 

您可以使用以下linux命令检查已添加规则的状态。


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规则

您还可以添加特定的IP地址以允许和拒绝访问所有服务。运行以下命令以允许IP 192.168.0.200访问服务器上的所有服务:


# ufw allow from 192.168.0.200 

要拒绝IP 192.168.0.200访问服务器上的所有服务,请执行以下操作:


# ufw deny from 192.168.0.200 

您可以在UFW中允许IP地址范围。运行以下命令以允许从IP 192.168.1.1到192.168.1.254的所有连接:


# ufw allow from 192.168.1.0/24 

若要允许IP地址192.168.1.200使用TCP访问端口80,请运行以下命令linux命令


# ufw allow from 192.168.1.200 to any port 80 proto tcp 

要允许访问2000到3000之间的tcp和udp端口范围,请运行以下linux命令:


# ufw allow 2000:3000/tcp 
# ufw allow 2000:3000/udp 

如果要阻止从IP 192.168.0.4和192.168.0.10访问端口22,但允许所有其他IP访问端口22,请运行以下命令:


# 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 

要允许网络接口eth0上的HTTP通信,请运行以下命令linux命令


# ufw allow in on eth0 to any port 80 

默认情况下,UFW允许ping请求。如果要拒绝ping请求,则需要编辑/etc/ufw/before.rules文件:


# nano /etc/ufw/before.rules 

删除以下行:


-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT 
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT 

完成后,保存文件。

如果您需要重置UFW,删除所有规则,则可以通过以下操作进行重置linux命令


# ufw reset 

使用UFW配置NAT

如果要对使用UFW从外部接口到内部的连接进行NAT。然后,您可以通过编辑/etc/default/ufw/etc/ufw/before.rules文件。首先,打开/etc/default/ufw使用nano编辑器的文件:


# nano /etc/default/ufw

更改以下行:


DEFAULT_FORWARD_POLICY="ACCEPT"


接下来,您还需要允许ipv4转发。您可以通过编辑来实现/etc/ufw/sysctl.conf文件:


# nano /etc/ufw/sysctl.conf

更改以下行:


net/ipv4/ip_forward=1 

接下来,您需要将NAT添加到ufw的配置文件中。您可以通过编辑来实现/etc/ufw/before.rules文件:


# nano /etc/ufw/before.rules

在过滤器规则之前添加以下行:


# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to match you out-interface
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't
# be processed
COMMIT
Save the file when you are finished. Then restart UFW with the following linux command:
ufw disable
ufw enable

使用UFW配置端口转发

如果您想转发来自公共IP的流量,例如150.129.148.155端口80和443连接到IP地址为192.168.1.120的另一台内部服务器。然后,您可以通过编辑/etc/default/before.rules


# nano /etc/default/before.rules

如下所示更改文件:


:PREROUTING ACCEPT [0:0] 
-A PREROUTING -i eth0 -d 150.129.148.155   -p tcp --dport 80 -j  DNAT --to-destination 192.168.1.120:80 
-A PREROUTING -i eth0 -d 150.129.148.155   -p tcp --dport 443 -j  DNAT --to-destination 192.168.1.120:443 
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE 
 

接下来,使用以下命令重新启动UFW:


# ufw disable
# ufw enable

接下来,您还需要允许端口80和443。您可以通过运行以下命令来做到这一点:


# ufw allow proto tcp from any to 150.129.148.155 port 80
# ufw allow proto tcp from any to 150.129.148.155 port 443

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8643.html,未经允许,请勿转载。