使用Ubuntu 16.04进行初始服务器设置

介绍

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

第一步 - 根登录

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

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

ssh root@your_server_ip

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

关于Root

root用户是具有非常广泛权限的Linux环境中的管理用户。由于root帐户的权限提高,实际上不鼓励您定期使用它。这是因为root帐户固有的部分权力是即使偶然也能进行非常具有破坏性的变更的能力。

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

第二步 - 创建一个新用户

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

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

adduser sammy

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

输入一个强密码,如果您愿意,还可以选择填写任何其他信息。这不是必需的,您只需点击ENTER来跳过的任何你想要跳过的字段即可。

第三步 - 根权限

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

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

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

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

usermod -aG sudo sammy

现在您的用户可以使用超级用户权限运行命令!

如果要提高服务器的安全性,请执行本教程中的其余步骤。

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

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

生成密钥对

如果您还没有SSH密钥对(包含公钥和私钥),则需要生成一个密钥对。如果您已有要使用的密钥,请跳至复制公钥步骤。

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

ssh-keygen

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

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

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

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

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

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

复制公钥

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

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

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

选项1:使用ssh-copy-id

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

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

ssh-copy-id sammy@your_server_ip

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

选项2:手动安装密钥

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

cat ~/.ssh/id_rsa.pub

这应该打印您的公共SSH密钥,它应该类似于以下内容:

id_rsa.pub contentsssh-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密钥以用户身份登录。

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

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

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

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

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

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

sudo nano /etc/ssh/sshd_config

找到指定PasswordAuthentication的行,通过删除前面的#来取消注释,然后将其值更改为“no”。在进行更改后,它应该如下所示:

PasswordAuthentication no

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

PubkeyAuthentication yes
ChallengeResponseAuthentication no

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

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

sudo systemctl reload sshd

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

第六步 - 测试登录

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

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

ssh sammy@your_server_ip

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

关于密钥身份验证的注意事项:如果您使用密码创建密钥对,系统将提示您输入密钥的密码。否则,如果您的密钥对是无密码短语,则应该在没有密码的情况下登录到您的服务器。

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

请记住,如果您需要运行具有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)

如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。

然后去哪儿?

此时,您的服务器基础扎实。您现在可以在服务器上安装所需的任何软件。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《Initial Server Setup with Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网络

如何使用Burp和Magisk在Android 7.0监测HTTPS流量

HTTPS拦截的基本方法 在Android平台上拦截HTTPS流量其实并不复杂,它只需要几步便可以实现: 1.将Burp设置为我们的代理; 2.访问http:/...

5617
来自专栏网络

一步步带你了解前后端分离利器之JWT

一、HTTP的无状态性 HTTP 是无状态协议,它不对之前发送过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。假设要求登录认证的 ...

3295
来自专栏Youngxj

emlog后台登录失败邮件通知

1283
来自专栏小白安全

小白博客 CryKeX:Linux内存加密密钥提取工具

CryKeX特性 1. 跨平台 2. 简单实用 3. 交互性强 4. 兼容性/可移植性强 5. 应...

4378
来自专栏Youngxj

emlog管理员密码重置工具

2852
来自专栏云计算与大数据

研发:http协议,什么是混合内容

混合内容在以下情况下出现:初始 HTML 内容通过安全的 HTTPS 连接加载,但其他资源(例如,图像、视频、样式表、脚本)则通过不安全的 HTTP 连接加载。...

1193
来自专栏情情说

单点登录与权限管理本质:cookie安全问题

继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前一篇文章介绍了单点登录概念,以CAS协议的基本流程为例讲解了系统间的交互过程,过程中,c...

43713
来自专栏小白安全

SQL注入 上传绕过安全狗

一,绕过安全狗上传可执行脚本 附上php上传脚本源码,此源码未对上传文件类型做校验 <?php         move...

5597
来自专栏云计算教程系列

如何在Ubuntu 16.04上为用户目录设置vsftpd

FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多休闲网民希望直接用ht...

2460
来自专栏云计算教程系列

如何在Ubuntu 14.04上保护Nginx

即使使用默认设置,Nginx也是一个非常安全可靠的Web服务器。但是,有很多方法可以进一步保护Nginx。

1652

扫码关注云+社区

领取腾讯云代金券