Ubuntu16.04 初始化服务器设置

2017-09-04

初始化 ubuntu16.04

介绍

当您第一次创建一个新的Ubuntu 16.04服务器时,有一些配置步骤,您应该作为早期基本设置的一部分。这将增加您的服务器的安全性和可用性,并为后续操作提供坚实的基础。


第一步 - Root 登录

要登录到您的服务器,您将需要知道您的服务器的公共IP地址。您还需要密码,或者如果您安装了用于身份验证的SSH密钥,则为“root”用户帐户的私钥。

如果您尚未连接到您的服务器,请root使用以下命令以用户身份登录(将突出显示的字替换为服务器的公共IP地址):

$ ssh root@your_server_ip

通过接受关于主机真实性的警告(如果出现),然后提供您的根认证(密码或私钥)来完成登录过程。如果您是第一次使用密码登录到服务器,则还会提示您更改root密码。

关于 root

root用户是具有非常广泛特权的Linux环境中的管理用户。由于root帐户的特权越来越高,您实际上不鼓励使用它。这是因为根帐户固有的一部分权力是即使偶然发生非常破坏性的变化的能力。

下一步是建立一个替代的用户帐户,减少日常工作的影响范围。在需要的时候,我们会教你如何获得更多的特权。


第二步 - 创建新用户

登录后root,我们准备添加我们将用于从现在开始登录的新用户帐户。

此示例创建一个名为“sammy”的新用户,但应将其替换为您喜欢的用户名:

# adduser sammy

您将被问到几个问题,从帐户密码开始。

输入强大的密码,如有需要,可以填写任何其他信息。这不是必需的,你可以ENTER在任何你想跳过的字段中打。


第三步 - root 权限

现在,我们有一个具有常规帐户权限的新用户帐户。但是,我们有时候可能需要做管理任务。

为了避免退出我们的普通用户并以root帐号登录,我们可以为我们的普通帐户设置所谓的“超级用户”或root权限。这将允许我们的普通用户通过sudo在每个命令之前放置单词来运行具有管理权限的命令。

要将这些权限添加到新用户,我们需要将新用户添加到“sudo”组。默认情况下,在Ubuntu 16.04中,允许属于“sudo”组的用户使用该sudo命令。

As root,运行此命令将新用户添加到sudo组(用新用户替换突出显示的单词):

# usermod -aG sudo sammy

现在您的用户可以使用超级用户权限运行命令!有关如何工作的更多信息,请查看此sudoers教程

如果要增加服务器的安全性,请遵循本教程中的其余步骤。


第四步 - 添加公钥认证(推荐)

保护服务器的下一步是为新用户设置公钥认证。设置此功能将通过要求私有SSH密钥登录来提高服务器的安全性。

生成密钥对

如果您还没有一个由公钥和私钥组成的SSH密钥对,则需要生成一个。如果您已经拥有要使用的密钥,请跳到复制公钥步骤。

要生成新的密钥对,请在本地计算机的终端(即您的计算机)上输入以下命令:

$ ssh-keygen

假设您的本地用户被称为“localuser”,您将看到如下所示的输出:

ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

命中返回接受此文件名和路径(或输入新名称)。

接下来,系统将提示您输入密码以确保密钥。您可以输入密码或将密码留空。

注意:

如果您将密码短消息留空,您将可以使用私钥进行身份验证而不输入密码。如果您输入密码,您将需要私钥和密码来登录。使用密码保护密钥更安全,但两种方法都具有使用,比基本密码身份验证更安全。

这将在 localuser 的主目录的目录中生成一个私钥id_rsa和一个公钥。请记住,私钥不应与任何不能访问您的服务器的人共享!id_rsa.pub.ssh

复制公钥

生成SSH密钥对后,您将需要将公钥复制到新服务器。我们将介绍两种简单的方法。

注意:

ssh-copy-id如果在创建Droplet期间选择了SSH密钥,该方法将无法在DigitalOcean上运行。这是因为如果存在SSH密钥,DigitalOcean将禁用密码验证,并且ssh-copy-id依赖密码认证来复制密钥。

如果您在创建Droplet期间使用DigitalOcean并选择了SSH密钥,请改用选项2。

选项1:使用ssh-copy-id

如果您的本地机器已ssh-copy-id安装脚本,则可以使用该脚本将您的公钥安装到具有登录凭据的任何用户。

ssh-copy-id通过指定要安装密钥的服务器的用户和IP地址来运行脚本,如下所示:

$ ssh-copy-id sammy@your_server_ip

在提示后提供密码后,您的公钥将被添加到远程用户的.ssh/authorized_keys文件中。现在可以使用相应的私钥登录服务器。

选项2:手动安装密钥

假设您使用上一步骤生成SSH密钥对,请在本地计算机的终端上使用以下命令打印公钥(id_rsa.pub):

$ cat ~/.ssh/id_rsa.pub

这应该打印您的公共SSH密钥,它应该如下所示:

id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

选择公钥,并将其复制到剪贴板。

要使用SSH密钥进行身份验证作为新的远程用户,必须将公钥添加到用户主目录中的特殊文件中。

在服务器上,作为root用户,请输入以下命令临时切换到新用户(替换您自己的用户名):

# su - sammy

现在您将进入新用户的主目录。

创建一个新目录,.ssh并使用以下命令限制其权限:

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

现在用文本编辑器打开一个.ssh被调用的文件authorized_keys。我们将nano用来编辑文件:

$ nano ~/.ssh/authorized_keys

现在将您的公共密钥(应该在剪贴板中)粘贴到编辑器中。

点击CTRL-x退出文件,然后y保存所做的更改,然后ENTER确认文件名。

现在使用以下命令限制 authorized_keys 文件的权限:

$ chmod 600 ~/.ssh/authorized_keys

键入此命令一次返回到root用户:

$ exit

现在您的公钥已安装,您可以使用SSH密钥以您的用户身份登录。

要了解有关密钥认证如何工作的更多信息,请阅读本教程:如何在Linux服务器上配置基于SSH密钥的身份验证。

接下来,我们将介绍如何通过禁用密码验证来提高服务器的安全性。


第五步 - 禁用密码验证(推荐)

现在,您的新用户可以使用SSH密钥进行登录,您可以通过禁用仅密码认证来提高服务器的安全性。这样做只会限制SSH访问您的服务器以进行公钥认证。也就是说,登录到您的服务器(除了控制台之外)的唯一方法是拥有与已安装的公钥配对的私钥。

注意:

如果按照上一节第4步中的建议,向您的用户安装了公钥,则仅禁用密码验证。否则,你将锁定你的服务器!

要在服务器上禁用密码验证,请按照下列步骤操作。

作为root用户或新的sudo用户,请打开SSH守护程序配置:

$ sudo nano /etc/ssh/sshd_config

找到指定的行,PasswordAuthentication通过删除前面的内容取消注释#,然后将其值更改为“否”。变更后应该看起来像这样:

# sshd_config - 禁用密码验证
PasswordAuthentication no

以下是另外两个对于仅关键认证很重要的设置,默认设置。如果您以前没有修改此文件,则不需要更改这些设置:

# sshd_config - 重要的默认值
PubkeyAuthentication yes
ChallengeResponseAuthentication no

完成更改后,使用我们之前提到的方法保存并关闭文件(CTRL-X然后Y,然后ENTER)。

重启 SSH 守护程序:

$ sudo systemctl reload sshd

密码认证现已被禁用。您的服务器现在只能通过SSH密钥验证访问。


第六步 - 测试登录

现在,在注销服务器之前,您应该测试新的配置。在确认您可以通过SSH成功​​登录之前,请勿断开连接。

本地机器上的新终端中,使用我们创建的新帐户登录到您的服务器。为此,请使用此命令(替换您的用户名和服务器IP地址):

$ ssh sammy@your_server_ip

如果您向用户添加了公钥身份验证,如步骤四和五所述,您的私钥将被用作身份验证。否则,系统将提示您输入用户的密码。

关于密钥认证的注意事项:

如果您使用密码短语创建密钥对,系统将提示您输入密钥密码。否则,如果您的密钥对是密码短语,则您应该登录到您的服务器没有密码。

一旦向服务器提供身份验证,您将以新用户身份登录。

请记住,如果您需要使用root权限运行命令,请在此之前键入“sudo”:

$ sudo command_to_run

第七步 - 设置基本防火墙

Ubuntu 16.04服务器可以使用UFW防火墙来确保仅允许连接某些服务。我们可以使用此应用程序轻松设置基本的防火墙。

不同的应用程序可以在安装时使用UFW注册其配置文件。这些配置文件允许UFW通过名称来管理这些应用程序。OpenSSH,该服务现在可以连接到我们的服务器,并且已经在UFW中注册了一个配置文件。

您可以输入以下内容:

$ sudo ufw app list

Available applications:
  OpenSSH

我们需要确保防火墙允许SSH连接,以便我们可以在下次登录。我们可以通

$ sudo ufw allow OpenSSH

之后,我们可以通过键入以下命令启用防火墙:

$ sudo ufw enable

键入“y”,然后按ENTER继续。您可以通过键入以下信息来看到SSH连接:

$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

如果安装和配置其他服务,您将需要调整防火墙设置以允许可接受的流量。您可以在本指南中了解一些常见的UFW操作。

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04