Fedora22服务器的初始设置

来自菜鸟教程
跳转至:导航、​搜索

介绍

当您第一次登录新的 Fedora 22 时,它还没有准备好用作生产系统。 为了自定义和保护它,有许多推荐的步骤,例如启用防火墙。

本教程将向您展示如何为全新安装的 Fedora 22 服务器提供更好的安全配置文件并准备好使用。

先决条件

要遵循本教程,您将需要:

  • 带有根 SSH 密钥的 Fedora 22 Droplet。

如果您没有密钥,您可以按照 SSH 密钥教程的 本节 创建密钥,以及同一教程的 本节 自动将您的 SSH 密钥嵌入服务器的根目录创建 Droplet 时的帐户。

第 1 步 — 创建标准用户帐户

首先,以 root 身份登录您的服务器。

ssh root@your_server_ip

以 root 身份操作存在安全风险,因此在这一步中,我们将设置一个 sudo 非 root 用户帐户以用于系统和其他计算任务。 本教程中使用的用户名是 sammy,但您可以使用任何您喜欢的名称。

要添加用户,请键入:

adduser sammy

使用以下命令为用户指定一个强密码。 系统将提示您输入两次密码。

passwd sammy

然后将用户添加到 wheel 组,这将赋予它 sudo 权限。

gpasswd -a sammy wheel

通过在本地计算机上运行以下命令,注销您的服务器并将 SSH 密钥添加到新用户帐户。

ssh-copy-id sammy@your_server_ip

有关如何将 SSH 密钥从本地计算机复制到服务器的更多信息,您可以阅读 SSH 教程的 本节

最后,以新的 sudo 非 root 用户身份重新登录。 系统不会提示您输入密码,因为此帐户现在具有 SSH 密钥。

ssh sammy@your_server_ip

第 2 步 — 禁止 Root 登录和密码验证

在这一步中,我们将通过禁用 root 登录和密码验证来使 SSH 登录更加安全。

要编辑配置文件,您需要安装文本编辑器。 我们将使用 nano 但您可以使用您喜欢的任何一个。

首先,使用以下方法应用任何可用更新:

sudo dnf update

然后,要安装 nano,请键入:

sudo dnf install -y nano

现在,打开 SSH 守护进程的配置文件进行编辑。

sudo nano /etc/ssh/sshd_config

在该文件中,查找 PermitRootLogin 指令。 取消注释(这意味着删除起始 # 字符)并将其设置为 no

PermitRootLogin no

同样,查找 PasswordAuthentication 指令并将其也设置为 no

PasswordAuthentication no

保存并退出文件,然后重新加载配置以使您的更改到位。

sudo systemctl reload sshd

如果现在有人尝试以 root 身份登录,则响应应该是 Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

第 3 步 — 配置时区

在此步骤中,您将了解如何将系统时钟更改为您的本地时区。 默认时钟设置为 UTC。

所有已知的时区都在 /usr/share/zoneinfo/ 目录下。 查看/usr/share/zoneinfo/中的文件和目录。

ls /usr/share/zoneinfo/

要将时钟设置为使用本地时区,请在该目录中找到您的国家或地理区域,找到其下的区域文件,然后创建一个符号软链接从它到 /etc/localtime 目录。 例如,如果您位于美国中部,时区为 CentralCST,则时区文件将为 /usr/share/zoneinfo/US/Central

创建从您的区域文件到 /etc/localtime 的符号软链接。

sudo ln -sf /usr/share/zoneinfo/your_zone_file /etc/localtime

通过查看 date 命令的输出来验证时钟现在是否设置为本地时间。

date

输出将类似于:

Wed Mar 25 14:41:20 CST 2015

该输出中的 CST 确认它是中央时间。

第 4 步 — 启用防火墙

新的 Fedora 22 服务器没有活动的防火墙应用程序。 在这一步中,我们将学习如何启用 IPTables 防火墙应用程序并确保运行时规则在重新启动后仍然存在。

IPTables 包已经安装,但要启用它,您需要安装 iptables-services 包。

sudo dnf install -y iptables-services

然后,您可以启用 IPTables 以便它在启动时自动启动。

sudo systemctl enable iptables

接下来,启动 IPTables。

sudo systemctl start iptables

Fedora 22 上的 IPTables 带有一组默认规则。 其中一项规则允许 SSH 流量。 要查看默认规则,请键入:

sudo iptables -L

输出应为:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

这些规则是运行时规则,如果系统重新启动,这些规则将丢失。 要将当前运行时规则保存到文件中以便它们在重新启动后仍然存在,请键入:

sudo /usr/libexec/iptables/iptables.init save

规则现在保存到 /etc/sysconfig 目录中名为 iptables 的文件中。

第 5 步(可选)— 允许 HTTP 和 HTTPS 流量

在本节中,我们将介绍如何编辑防火墙规则以允许端口 80 (HTTP) 和 443 (HTTPS) 的服务。

默认的 IPTables 规则默认允许 SSH 流量进入,但 HTTP 及其相对更安全的表亲 HTTPS 是许多应用程序使用的服务,因此您可能希望也允许这些服务通过防火墙。

要继续,请键入以下命令打开防火墙规则文件:

sudo nano /etc/sysconfig/iptables

您需要做的就是在 SSH(端口 22)流量规则之后添加两条规则,一条用于端口 80,另一条用于端口 443。 下面的红色行是您要添加的行; 之前和之后的行包含在上下文中,以帮助您找到添加新规则的位置。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

要激活新规则集,请重新启动 IPTables。

sudo systemctl restart iptables

第 6 步(可选)- 安装 Mlocate

locate 命令是一个非常有用的实用程序,用于查找系统中文件的位置。 例如,要查找名为 example 的文件,您可以键入:

locate example

这将扫描文件系统并在屏幕上打印文件的位置。 还有更高级的使用 locate 的方法。

要使该命令在您的服务器上可用,首先您需要安装 mlocate 软件包。

sudo dnf install -y mlocate

然后,运行 updatedb 命令更新搜索数据库。

sudo updatedb

之后,您应该可以使用 locate 按名称查找任何文件。

结论

完成最后一步后,您的 Fedora 22 服务器应该已配置好、相当安全并可以使用了!