Ubuntu防⽕墙
正确配置的防⽕墙是整个系统安全性最重要的⽅⾯之⼀。默认情况下,附带⼀个名为UFW(简单防⽕墙)的防⽕墙配置⼯具。UFW是管理iptables防⽕墙规则的⼀个⽤户友好的前端,它的主要⽬标是使管理iptables更容易,或者如其名所说,简单。
先决条件
在开始本教程之前,请确保您使⽤具有sudo权限的⽤户帐户或root⽤户登录到您的服务器。最佳做法是将管理命令作为sudo⽤户⽽⾮root⽤户运⾏,如果您的Ubuntu系统上没有sudo⽤户,则可以按照此说明创建⼀个sudo⽤户。
安装UFW
ufw防⽕墙应该默认安装在Ubuntu 18.04中,但是如果它没有安装在你的系统上,你可以通过键⼊以下命令来安装它:
sudo apt install ufw
检查UFW状态
安装完成后,您可以使⽤以下命令检查UFW的状态:
sudo ufw status verbo
UFW在默认情况下是禁⽤的,如果您刚刚安装或从未激活过UFW,则输出如下所⽰:
输出
Status: inactive
如果UFW被激活,输出将如下所⽰:
状态:激活
⽇志: on (low)
开票系统默认:deny (incoming), allow (outgoing), disabled (routed)
新建配置⽂件: skip
⾄动作来⾃
-
-- --
80,443/tcp (Nginx Full) ALLOW IN Anywhere
80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6)
UFW默认策略
fu c k是什么意思默认情况下,UFW将阻⽌所有传⼊连接并允许所有出站连接。这意味着任何试图访问您的服务器的⽤户都将⽆法连接,除⾮您专门打开该端⼝,⽽服务器上运⾏的所有应⽤程序和服务都将能够访问外部世界。
默认策略在/etc/default/ufw⽂件中定义,可以使⽤sudo ufw default <policy> <chain>
防⽕墙策略是构建更详细和⽤户定义规则的基础。在⼤多数情况下,最初的UFW默认政策是⼀个很好的起点。
应⽤程序配置
使⽤apt安装软件包时,它将向/etc/ufw/applications.d⽬录中添加应⽤程序配置⽂件,该⽬录描述该服务并包含UFW设置。
您可以键⼊以下内容列出服务器上可⽤的所有应⽤程序配置⽂件
sudo ufw app list
小学四年级英语教案根据系统上安装的软件包,输出将如下所⽰:
可⽤应⽤程序:
CUPS
Nginx Full
奥巴马发脾气Nginx HTTP
Nginx HTTPS
Postfix
Postfix SMTPS
Postfix Submission
如果您想要查找有关配置⽂件和包含规则的更多信息,可以使⽤以下命令:
sudo ufw app info 'Nginx Full'
配置: Nginx Full
标题:Web Server (Nginx, HTTP + HTTPS)
描述: Small, but very powerful and efficient web rver
端⼝:
80,443/tcp
正如您从上⾯的输出中看到'Nginx Full'配置⽂件打开端⼝80和443,
允许SSH连接
在启⽤UFW防⽕墙之前,我们需要添加⼀个允许传⼊SSH连接的规则。如果您从远程位置连接到服务器(⼏乎总是如此),并且在明确允许传⼊SSH连接之前启⽤UFW防⽕墙,则您将不再能够连接到您的Ubuntu服务器。
要配置您的UFW防⽕墙以允许传⼊SSH连接,请键⼊以下命令:
sudo ufw allow ssh
规则已添加
规则已添加 (v6)
如果您将SSH端⼝更改为⾃定义端⼝⽽不是端⼝22,则需要打开该端⼝。例如,如果您的ssh守护进程在端⼝5522上侦听,那么您可以使⽤以下命令来允许该端⼝上的连接:
sudo ufw allow 5522/tcp
启⽤UFW
现在您的UFW防⽕墙已配置为允许传⼊SSH连接,我们可以通过键⼊以下命令启⽤它:
sudo ufw enable
在系统启动时启⽤和激活防⽕墙
输出:
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
您将被警告启⽤防⽕墙可能会破坏现有的ssh连接,只需键⼊y并按Enter键。
允许其他端⼝上的连接
根据您的服务器上运⾏的应⽤程序和您的特定需求,您需要允许对其他端⼝的传⼊访问。
下⾯我们将向您展⽰⼀些如何允许传⼊连接到⼀些最常见服务的例⼦:
打开端⼝80 - HTTP
使⽤以下命令可以允许HTTP连接:
sudo ufw allow http
你可以使⽤端⼝号80⽽不是http:
sudo ufw allow 80/tcp
或者您可以使⽤应⽤程序配置⽂件,在本例中是'Nginx HTTPS':
sudo ufw allow 'Nginx HTTP'
打开端⼝443 - HTTPS
使⽤以下命令可以允许HTTP连接:
sudo ufw allow https
要实现相同⽽不是https,您可以使⽤端⼝号443:
your laws
sudo ufw allow 443/tcp
或者您可以使⽤应⽤程序配置⽂件,在本例中是'Nginx HTTPS':
sudo ufw allow 'Nginx HTTP'
打开端⼝8080
如果运⾏Tomcat或在端⼝8080上侦听的任何其他应⽤程序以允许传⼊连接,请输⼊:veyron
sudo ufw allow 8080/tcp
允许端⼝范围
UFW允许我们允许访问端⼝范围,⽽不是允许访问单个端⼝。使⽤UFW允许端⼝范围时,您必须指定协议,即tcp或udp。例如,如果要允许tcp和udp上的端⼝从8000到8100,则运⾏以下命令:
sudo ufw allow 8000:8100/tcp
loomsudo ufw allow 8000:8100/udp
允许特定的IP地址
如果您希望允许您的家庭计算机上的所有端⼝使⽤IP地址55.56.57.58访问,则需要在IP地址之前指定:
sudo ufw allow from 55.56.57.58允许特定端⼝上的特定IP地址
要允许在特定端⼝上访问,可以使⽤IP地址为55.56.57.58的⼯作机器上的端⼝22,然后您需要指定IP地址后⾯的任何端⼝和端⼝号:
sudo ufw allow from 55.56.57.58 to any port 22
允许⼦⽹
imf是什么允许连接到IP地址的⼦⽹的命令与使⽤单个IP地址时相同,唯⼀的区别是您需要指定⽹络掩码。例如,如果你想允许访问从192.168.1.1到192.168.1.254到3306(MySQL)的IP地址,你可以使⽤这个命令:
sudo ufw allow from 192.168.1.0/24 to any port 3306
允许连接到特定的⽹络接⼝学校英语作文
为了允许在特定端⼝上访问,我们假设端⼝3306仅适⽤于特定的⽹络接⼝eth2,那么您需要指定允许输⼊以及⽹络接⼝的名称:
sudo ufw allow in on eth2 to any port 3306
拒绝连接
所有传⼊连接的默认策略设置为拒绝,如果您没有更改它,UFW将阻⽌所有传⼊连接,除⾮您专门打开连接。
假设您打开端⼝80和443,并且您的服务器受到33.34.35.0/34⽹络的攻击。要拒绝来⾃33.34.35.0/34的所有连接,可以使⽤以下命令:
sudo ufw deny from 33.34.35.0/34
如果您只想拒绝对端⼝80和443的访问,则可以使⽤以下命令:
sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443
写⼊拒绝规则与编写允许规则相同,您只需将允许替换为拒绝。
删除UFW规则
有两种不同的⽅法可以通过规则编号和指定实际规则来删除UFW规则。
通过规则编号删除UFW规则更容易,尤其是如果您是UFW的新⼿。要⾸先通过规则编号删除规则,您需要按数字列出规则,您可以使⽤以下命令执⾏此操作:
sudo ufw status numbered
状态:激活
⾄动作来⾃
- -- --
[ 1] Nginx Full ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 5522/tcp ALLOW IN Anywhere
[ 4] 80/tcp ALLOW IN Anywhere
[ 5] Nginx HTTP ALLOW IN Anywhere
[ 6] 443/tcp ALLOW IN Anywhere
[ 7] Nginx HTTPS ALLOW IN Anywhere
[ 8] 8080/tcp ALLOW IN Anywhere
[ 9] Nginx Full (v6) ALLOW IN Anywhere (v6)
[10] 22/tcp (v6) ALLOW IN Anywhere (v6)
[11] 5522/tcp (v6) ALLOW IN Anywhere (v6)
[12] 80/tcp (v6) ALLOW IN Anywhere (v6)
[13] Nginx HTTP (v6) ALLOW IN Anywhere (v6)
[14] 443/tcp (v6) ALLOW IN Anywhere (v6)halloween什么意思
[15] Nginx HTTPS (v6) ALLOW IN Anywhere (v6)
[16] 8080/tcp (v6) ALLOW IN Anywhere (v6)
要删除规则编号3,允许连接到端⼝8080的规则,可以使⽤以下命令:
sudo ufw delete 2
第⼆种⽅法是通过指定实际规则来删除规则,例如,如果您添加了⼀条规则以打开端⼝8168,则可以使⽤以下规则将其删除:
sudo ufw delete allow 8168
禁⽤UFW
如果因任何原因想停⽌UFW并停⽤您可以使⽤的所有规则:
sudo ufw disable稍后如果您想要重新启⽤UTF并激活所有规则,请输⼊:
sudo ufw enable
重置UFW
重置UFW将禁⽤UFW,并删除所有活动规则。如果您想恢复所有更改并重新开始,这很有帮助。
要重置UFW,只需输⼊以下命令:
sudo ufw ret
所有规则将被重设为安装时的默认值。要继续吗 (y|n)?
总结
您已经学会了如何在Ubuntu 18.04服务器上安装和配置UFW防⽕墙。确保允许系统正常运⾏所需的所有传⼊连接,同时限制所有不必要的连接。
如果您有任何问题,请随时在下⾯留⾔。