欢迎光临
我们一直在努力

新FreeBSD 12.0服务器的推荐步骤

介绍

在设置新的FreeBSD服务器时,您可以采取许多可选步骤使服务器进入生产友好状态。 在本指南中,我们将介绍一些最常见的示例。

我们将设置一个简单,易于配置的防火墙,拒绝大多数流量。 我们还将确保您服务器的时区准确反映其位置。 我们将设置NTP轮询以保持服务器的时间准确,最后演示如何为服务器添加一些额外的交换空间。

在开始使用本指南之前,您应该以您希望的方式登录并配置shell环境。 您可以按照本指南了解如何执行此操作。

如何配置简单的IPFW防火墙

第一项任务是设置一个简单的防火墙来保护您的服务器。

FreeBSD支持并包含三个独立的防火墙。 这些被称为pfipfwipfilter 在本指南中,我们将使用ipfw作为防火墙。 ipfw是一个安全的状态防火墙,作为FreeBSD的一部分编写和维护。

配置基本防火墙

几乎所有配置都将在/etc/rc.conf文件中进行。 要修改配置,您将使用sysrc命令,该命令允许用户以安全的方式更改/etc/rc.conf中的配置。 在此文件中,您将添加许多不同的行以启用和控制ipfw防火墙的运行方式。 你将从基本规则开始; 运行以下命令开始:

sudo sysrc firewall_enable="YES"

每次运行sysrc来修改配置时,您都会收到显示更改的输出:

firewall_enable: NO -> YES

正如您所料,第一个命令启用ipfw防火墙,在启动时自动启动并允许使用常用service命令启动它。

现在运行以下命令:

sudo sysrc firewall_quiet="YES"

这告诉ipfw在执行某些操作时不要输出任何标准输出。 这似乎是一个偏好问题,但实际上它会影响防火墙的功能。

两个因素相结合,使其成为一个重要的选择。 第一个是防火墙配置脚本在当前shell环境中执行,而不是作为后台任务执行。 第二个是当ipfw命令读取没有"quiet"标志的配置脚本时,它会依次读取并输出每一行到标准输出。 当它输出一行时,它会立即执行相关的操作。

大多数防火墙配置文件刷新脚本顶部的当前规则,以便从一个干净的平板开始。 如果ipfw防火墙在没有quiet标志的情况下遇到这样的行,它将立即刷新所有规则并恢复其默认策略,这通常是拒绝所有连接。 如果您通过SSH配置防火墙,则会丢弃连接,关闭当前的shell会话,并且不会处理任何后续规则,从而有效地将您锁定在服务器之外。 quiet标志允许防火墙将规则作为一个集处理,而不是单独实现每个规则。

在这两行之后,您可以开始配置防火墙的行为。 现在选择"workstation"作为您要配置的防火墙类型:

sudo sysrc firewall_type="workstation"

这会将防火墙设置为使用有状态规则保护您配置防火墙的服务器。 状态防火墙随时间监视网络连接的状态,并在短时间内将有关这些连接的信息存储在内存中。 因此,不仅可以在防火墙应该允许的连接上定义规则,而且状态防火墙还可以使用它已经了解的关于先前连接的数据来评估可以建立哪些连接。

/etc/rc.conf文件还允许您使用firewall_myservicesfirewall_allowservices选项自定义希望客户端能够访问的服务。

运行以下命令以打开服务器上可访问的端口,例如SSH连接的端口22和传统HT​​TP Web服务器的端口80 如果在Web服务器上使用SSL,请确保添加端口443

sudo sysrc firewall_myservices="22/tcp 80/tcp 443/tcp"

firewall_myservices选项设置为可由服务器访问的TCP端口或服务列表(由空格分隔)。

注意:您还可以按名称使用服务。 FreeBSD按名称识别的服务列在/etc/services文件中。 例如,您可以将上一个命令更改为以下内容:

firewall_myservices="ssh http https"

这将有相同的结果。

firewall_allowservices选项列出了应该允许访问提供的服务的项目。 因此,它允许您限制对公开服务(从firewall_myservices )到特定计算机或网络范围的访问。 例如,如果您希望计算机承载内部公司网络的Web内容,这可能很有用。 关键字"any"表示任何IP都可以访问这些服务,使其完全公开:

sudo sysrc firewall_allowservices="any"

firewall_logdeny选项告诉ipfw记录拒绝位于/var/log/security的文件的所有连接尝试。 运行以下命令来设置:

sudo sysrc firewall_logdeny="YES"

要检查您对防火墙配置所做的更改,请运行以下命令:

grep 'firewall' /etc/rc.conf

/etc/rc.conf文件的这一部分如下所示:

firewall_enable="YES"firewall_quiet="YES"firewall_type="workstation"firewall_myservices="22 80 443"firewall_allowservices="any"firewall_logdeny="YES"

请记住调整firewall_myservices选项以引用您希望向客户端公开的服务。

允许UDP连接(可选)

/etc/rc.conf文件中firewall_myservices选项中列出的端口和服务允许访问TCP连接。 如果您希望公开使用UDP的服务 ,则需要编辑/etc/rc.firewall文件:

sudo vi /etc/rc.firewall

您将防火墙配置为使用"workstation"防火墙类型,因此请查找如下所示的部分:

/etc/rc.firewall中
. . .[Ww][Oo][Rr][Kk][Ss][Tt][Aa][Tt][Ii][Oo][Nn]). . .

此块中有一个部分专门用于处理您设置的firewall_allowservicesfirewall_myservices值。 它看起来像这样:

/etc/rc.firewall中
for i in ${firewall_allowservices} ; do  for j in ${firewall_myservices} ; do    ${fwcmd} add pass tcp from $i to me $j  donedone

在本节之后,您可以通过添加如下行来添加应接受UDP数据包的任何服务或端口:

${fwcmd} add pass udp from any to me port_num

vi ,按i切换到INSERT模式并添加内容,然后按ESC键保存并关闭文件,输入:wq ,然后按ENTER 在上一个示例中,如果应允许所有客户端连接或将其更改为特定IP地址或网络范围,则可以保留"any"关键字。 port_num应替换为您希望允许UDP访问的端口号或服务名称。 例如,如果您正在运行DNS服务器,您可能希望有一行看起来像这样:

for i in ${firewall_allowservices} ; do  for j in ${firewall_myservices} ; do    ${fwcmd} add pass tcp from $i to me $j  donedone${fwcmd} add pass udp from 192.168.2.0/24 to me 53

这将允许192.168.2.0/24网络范围内的任何客户端访问在标准端口53上运行的DNS服务器。 请注意,在此示例中,您还需要为TCP连接打开此端口,因为DNS服务器使用该端口进行更长时间的回复。

完成后保存并关闭文件。

启动防火墙

完成配置后,可以键入以下命令启动防火墙:

sudo service ipfw start

防火墙将正确启动,在遵守允许的服务和端口的同时阻止不需要的流量。 此防火墙将在每次启动时自动启动。

您还希望配置对要记录的每个IP地址的拒绝次数的限制。 这将阻止您的日志从单个持久用户填满。 您可以在/etc/sysctl.conf文件中执行此操作:

sudo vi /etc/sysctl.conf

在文件的底部,您可以通过添加以下行将日志记录限制为"5"

/etc/sysctl.conf中
...net.inet.ip.fw.verbose_limit=5

完成后保存并关闭文件。 这将在下次引导时配置该设置。

要在不重新启动的情况下为当前活动的会话实现相同的行为,可以使用sysctl命令本身,如下所示:

sudo sysctl net.inet.ip.fw.verbose_limit=5

这应该立即实现此启动的限制。

如何设置服务器的时区

正确设置服务器的时区是个好主意。 这是在下一节中配置NTP时间同步时的重要步骤。

FreeBSD附带了一个名为tzsetup的基于菜单的工具,用于配置时区。 要设置服务器的时区,请使用sudo权限调用此命令:

sudo tzsetup

首先,系统会要求您选择服务器所在的区域:

FreeBSD世界各地

您需要选择下一个子区域或国家/地区:

FreeBSD国家

注意:要导航这些菜单,您需要使用PAGE UPPAGE DOWN键。 如果键盘上没有这些,可以使用FN + DOWNFN + UP

最后,选择适合您服务器的特定时区:

FreeBSD时区

根据您的选择确认显示的时区选择。

此时,服务器的时区应与您所做的选择相匹配。

如何配置NTP以保持准确的时间

现在您已在服务器上配置了时区,您可以设置NTP或网络时间协议。 这有助于使您的服务器与世界各地的其他人保持同步。 这对于时间敏感的客户端 – 服务器交互以及准确的日志记录非常重要。

同样,您可以通过调整/etc/rc.conf文件在服务器上启用NTP服务。 运行以下命令将行ntpd_enable="YES"到文件中:

sudo sysrc ntpd_enable="YES"

您还需要添加第二行,以便在启动时将计算机上的时间与远程NTP服务器同步。 这是必要的,因为它允许您的服务器在初始化时超过正常的漂移限制。 您的服务器可能会在启动时超出漂移限制,因为您的时区将在NTP守护程序启动之前应用,这将抵消您的系统时间:

sudo sysrc ntpd_sync_on_start="YES"

如果您没有此行,则由于时区设置会在启动过程之前扭曲系统时间,因此启动时NTP守护程序将失败。

您可以输入以下命令启动ntpd服务:

sudo service ntpd start

这将通过与/etc/ntp.conf列出的NTP服务器同步来维持服务器的时间。

如何配置额外的交换空间

在DigitalOcean上配置的FreeBSD服务器上,无论服务器的大小如何,都会自动配置1千兆字节的交换空间 你可以输入以下内容来看到:

sudo swapinfo -g

它应该显示如下:

Device          1G-blocks     Used    Avail Capacity/dev/gpt/swapfs         1        0        1     0%

某些用户和应用程序可能需要更多的交换空间。 这是通过添加交换文件来完成的。

您需要做的第一件事是为要用于交换的文件分配一大块文件系统。 您将使用truncate命令,它可以快速分配空间。

我们将交换文件放在/swapfile用于本教程,但您可以将文件放在任何您想要的位置,例如/var/swapfile 此文件将提供额外的1千兆字节交换空间。 您可以通过修改给定于-s选项的值来调整此数字:

sudo truncate -s 1G /swapfile

分配空间后,您需要锁定对文件的访问权限。 普通用户不应该拥有该文件的任何访问权限:

sudo chmod 0600 /swapfile

接下来,将伪设备与您的文件相关联,并通过键入以下命令将其配置为在引导时挂载:

echo "md99 none swap sw,file=/swapfile,late 0 0" | sudo tee -a /etc/fstab

此命令将一行看起来像这样添加到/etc/fstab文件中:

md99 none swap sw,file=/swapfile,late 0 0

将行添加到/etc/fstab文件后,可以通过键入以下内容来激活会话的交换文件:

sudo swapon -aqL

您可以再次使用swapinfo命令验证交换文件现在是否正常工作:

sudo swapinfo -g

您应该看到与交换文件关联的附加设备( /dev/md99 ):

Device          1G-blocks     Used    Avail Capacity/dev/gpt/swapfs         1        0        1     0%/dev/md99               1        0        1     0%Total                   2        0        2     0%

每次启动时都会自动挂载此交换文件。

结论

本指南中概述的步骤可用于使您的FreeBSD服务器进入更加生产就绪的状态。 通过配置防火墙,NTP同步和适当的交换空间等基本要素,您的服务器可以作为未来安装和服务的良好基础。

赞(0) 打赏
未经允许不得转载:老赵部落 » 新FreeBSD 12.0服务器的推荐步骤

评论 抢沙发