前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu 16.04的初始服务器设置

Ubuntu 16.04的初始服务器设置

作者头像
程序员的自我修养
发布2017-12-20 16:24:17
2.8K0
发布2017-12-20 16:24:17
举报
文章被收录于专栏:编程编程

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

第一步 - 根登录

要登录到您的服务器,您需要知道您的服务器的公共IP地址。您还需要密码,或者,如果您安装了用于身份验证的SSH密钥,则需要root用户帐户的私钥。如果您尚未登录到服务器,则可能需要按照本系列中的第一个教程,即如何使用SSH连接到您的Droplet,其中详细介绍了此过程。

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

代码语言:shell
复制
$ssh root@your_server_ip

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

关于Root

在Linux环境中,root用户是具有非常广泛特权的管理用户。由于root帐户的权限较高,因此实际上不鼓励您定期使用它。这是因为,root账号的部分固有权利是能够做出非常具有破坏性的改变,即使是偶然的。

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

第二步 - 创建一个新用户

一旦以root用户身份登录,我们就准备添加将用于从现在开始登录的新用户帐户。

这个例子创建一个名为“sammy”的新用户,但是你应该用你喜欢的用户名替换它:

代码语言:shell
复制
# adduser sammy

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

输入一个强大的密码,如果需要,可以选择填写任何附加信息。 这不是必需的,您可以按ENTER键来跳过的任何部分。

第三步 - root用户特权

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

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

要将这些特权添加到我们的新用户,我们需要将新用户添加到“sudo”组。 默认情况下,在Ubuntu 16.04上,属于“sudo”组的用户可以使用sudo命令。

root用户身份,运行以下命令将新用户添加到sudo组中(用您的新用户替换突出显示的单词):

代码语言:shell
复制
# usermod -aG sudo sammy

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

如果您想提高服务器的安全性,请按照本教程中的其余步骤操作。

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

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

生成一对密钥

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

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

代码语言:shell
复制
$ ssh-keygen

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

代码语言:shell
复制
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

点击回车接受这个文件名和路径(或者输入一个新的名字)。

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

注意:如果您将密码留空,您将能够使用私钥进行身份验证,而无需输入密码。如果您输入了密码,则需要私钥和密码才能登录。使用密码保护密钥更安全,但这两种方法都有其用途,并且比基本密码验证更安全。

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

复制公钥

生成一个SSH密钥对后,您将需要将您的公钥复制到新的服务器上。 我们将介绍两个简单的方法来做到这一点。

代码语言:latex
复制
注意:如果在Droplet创建期间选择SSH密钥,则ssh-copy-id方法将不能在DigitalOcean上运行。 这是因为如果存在SSH密钥,DigitalOcean禁用密码认证,而ssh-copy-id则依靠密码认证来复制密钥。

如果在创建Droplet时使用DigitalOcean并选择SSH密钥,请改用选项2。
选项1:使用ssh-copy-id

如果本地计算机安装了ssh-copy-id脚本,则可以使用它将公钥安装到您拥有登录凭据的任何用户。

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

代码语言:shell
复制
$ ssh-copy-id sammy@your_server_ip

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

选项2:手动安装密钥

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

代码语言:shell
复制
$ cat ~/.ssh/id_rsa.pub

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

代码语言:shell
复制
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用户身份输入以下命令以临时切换到新用户(替换您自己的用户名):

代码语言:shell
复制
# su - sammy

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

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

代码语言:shell
复制
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

现在使用文本编辑器在.ssh中打开名为authorized_keys的文件。 我们将使用nano编辑文件:

代码语言:shell
复制
$ nano ~/.ssh/authorized_keys

现在把你的公钥(它应该放在你的剪贴板中)粘贴到编辑器中。

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

现在用这个命令限制authorized_keys文件的权限:

代码语言:shell
复制
$chmod 600 ~/.ssh/authorized_keys

输入这个命令一次返回到root用户:

代码语言:shell
复制
$ exit

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

要详细了解密钥身份验证如何工作,请阅读本教程:如何在Linux服务器上配置基于SSH密钥的身份验证

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

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

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

代码语言:latex
复制
注意:如果您按照上一部分第四步中的建议为用户安装了公钥,则只需禁用密码验证。 否则,你会锁定你的服务器!

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

root用户或新的sudo用户身份打开SSH守护进程配置:

代码语言:shell
复制
$ sudo nano /etc/ssh/sshd_config

找到指定密码验证(PasswordAuthentication)的行,通过删除前面的来取消注释,然后将其值更改为“no”。 你做这个改变后应该看起来像这样:

代码语言:latex
复制
          sshd_config — Disable password authentication
PasswordAuthentication no

以下是另外两个对于仅密钥验证很重要的设置,默认情况下设置。 如果您之前未修改此文件,则不需要更改这些设置:

代码语言:latex
复制
                 sshd_config — Important defaults
PubkeyAuthentication yes
ChallengeResponseAuthentication no

完成更改后,使用先前的方法(CTRL-X,然后是Y,然后按ENTER键)保存并关闭文件。

输入以重新加载SSH守护进程:

代码语言:shell
复制
$ sudo systemctl reload sshd

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

第六步 - 测试登录

现在,在您退出服务器之前,您应该测试您的新配置。 除非确认可以通过SSH成功登录,否则不要断开连接。

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

代码语言:shell
复制
$ ssh sammy@your_server_ip

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

代码语言:latex
复制
关于密钥认证的注意事项:如果您使用密码创建了密钥对,系统将提示您输入密钥的密码。 否则,如果您的密钥对是无密码的,应该无需密码即可登录到您的服务器。

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

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

代码语言:shell
复制
$ sudo command_to_run

第七步 - 建立一个基本的防火墙

Ubuntu 16.04服务器可以使用UFW防火墙来确保只允许连接某些服务。 我们可以很容易地使用这个应用程序建立一个基本的防火墙。

不同的应用程序可以在安装时使用UFW注册其配置文件。这些配置文件允许UFW按名称管理这些应用程序。打开SSH,该服务允许我们现在连接到我们的服务器,具有UFW注册的配置文件。

输入以下内容即可看到:

代码语言:shell
复制
$ sudo ufw app list
代码语言:latex
复制
Output
Available applications:
  OpenSSH

我们需要确保防火墙允许SSH连接,以便我们可以在下次重新登录。 我们可以输入以下命令来允许这些连接:

代码语言:shell
复制
$ sudo ufw allow OpenSSH

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

代码语言:shell
复制
$ sudo ufw enable

输入“y”并按ENTER继续。你可以看到SSH仍然连接通过输入:

代码语言:shell
复制
$ sudo ufw status
代码语言:latex
复制
Output
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

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

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步 - 根登录
  • 关于Root
    • 第二步 - 创建一个新用户
      • 第三步 - root用户特权
        • 第四步 - 添加公钥认证(推荐)
          • 选项1:使用ssh-copy-id
          • 选项2:手动安装密钥
      • 生成一对密钥
      • 复制公钥
        • 第五步 - 禁用密码验证(推荐)
          • 第六步 - 测试登录
            • 第七步 - 建立一个基本的防火墙
            相关产品与服务
            多因子身份认证
            多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档