Ubuntu 16.04的初始服务器设置

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

第一步 - 根登录

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

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

$ssh root@your_server_ip

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

关于Root

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

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

第二步 - 创建一个新用户

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

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

# adduser sammy

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

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

第三步 - root用户特权

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

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

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

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

# usermod -aG sudo sammy

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

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

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

保护您的服务器的下一步是为您的新用户设置公钥认证。 设置此项将通过要求私人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):

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

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

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

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

复制公钥

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

注意:如果在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脚本,如下所示:

$ 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访问您的服务器到公钥认证。 也就是说,登录到服务器(除了控制台之外)的唯一方法是拥有与已安装的公用密钥配对的私钥。

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

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

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

$ sudo nano /etc/ssh/sshd_config

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

          sshd_config — Disable password authentication
PasswordAuthentication no

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

                 sshd_config — Important defaults
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按名称管理这些应用程序。打开SSH,该服务允许我们现在连接到我们的服务器,具有UFW注册的配置文件。

输入以下内容即可看到:

$ sudo ufw app list
Output
Available applications:
  OpenSSH

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

$ sudo ufw allow OpenSSH

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

$ sudo ufw enable

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

$ sudo ufw status
Output
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

原文作者:Mitchell Anicas

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

linux常用基本命令之权限处理命令

命令:chmod 语法:chmod [{ugo}{+-=}{rwx}] [文件或目录] chmod [mode=421] [文件目录] ...

3417
来自专栏Timhbw博客

lnmp安装fileinfo模块

2018-02-0411:44:40 发表评论 38℃热度 fileinfo安装 php.ini 中添加配置 相关服务重启 检查是否成功安装 目录 l...

2796
来自专栏猿说1024

Maven安装配置(Windows10)

1493
来自专栏抠抠空间

Linux上安装MySQL及其基础配置

2270
来自专栏编程

Python入门-HelloWorld、开发环境、开发工具

1.搭建开发环境 a.进入官网www.python.org,点击“Download”-“Windows”(或其他操作系统) ? b.选择Python版本下载(注...

2076
来自专栏pangguoming

centos7.2使用rpm安装jdk8

892
来自专栏小白安全

小白博客 Linux安装JDK详细步骤

Linux安装JDK步骤 1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com...

34810
来自专栏Python攻城狮

Python开发环境搭建1.下载及安装2.一台PC安装多个python版本3.python2和python3版本共存的配置4. pip安装模块时执行的命令5.给python安装第三方模块6.查看pip

现在python3是趋势,很多公司已经逐渐使用python3,但是对于爬虫来说,我们现在仍需用2.7,所以现在我们安装Python2.7.9版本

723
来自专栏贺贺的前端工程师之路

Mac 常用命令Mac 常用命令

943
来自专栏Java成神之路

重拾安卓_01_安卓开发环境搭建(eclipse)

(1)官网(可FQ选择):http://developer.android.com/sdk/index.html

692

扫码关注云+社区