介绍
当您首次创建一个新的 Debian 9 服务器时,有几个配置步骤,您应该提前作为基本设置的一部分,这将增加您的服务器的安全性和可用性,并为后续操作提供坚实的基础。
步骤一 - 登录作为根
要登录您的服务器,您需要知道您的服务器的公共IP地址**.您还需要密码或,如果您安装了SSH密钥进行身份验证,则需要对您的用户帐户的私钥 root. 如果您尚未登录到您的服务器,您可能需要遵循我们关于如何通过SSH连接到您的Droplet(https://andsky.com/tech/tutorials/how-to-connect-to-your-droplet-with-ssh)的指南,该指南详细介绍了这个过程。
如果您尚未连接到您的服务器,请继续使用以下命令作为 root 用户登录(将命令的突出部分替换为服务器的公共 IP 地址):
1[environment local]
2ssh root@your_server_ip
如果您正在使用密码身份验证,请提供您的 root密码登录. 如果您正在使用一个受密码保护的 SSH 密钥,您可能会被要求在每次使用密钥时首次输入密码。
关于根
root 用户是 Linux 环境中具有非常广泛的权限的管理用户.由于 root 帐户的权限增加,您被 discouraged 不定期使用它。
下一步是创建一个替代的用户帐户,对日常工作影响范围减少,我们将教你如何在你需要时获得增加的特权。
步骤二:创建新用户
一旦您登录为 root,我们准备添加新的用户帐户,我们将从现在开始使用它来登录。
<$>[注]
**注:在某些环境中,可以默认安装一个名为unscd
的包,以便加速请求以命名服务器,如LDAP。
1sent invalidate(passwd) request, exiting
2sent invalidate(group) request, exiting
这些消息是无害的,但如果您想避免它们,如果您不打算使用LDAP等系统来获取用户信息,则可以安全地删除unscd
包:
1apt remove unscd
美元
此示例创建一个名为 sammy的新用户,但您应该用您喜欢的用户名更换它:
1adduser sammy
您将被问到几个问题,从帐户密码开始。
输入一个强大的密码,并可选地填写任何额外的信息,如果您想要,这不需要,您可以在任何您想要跳过的字段中点击ENTER
。
第三步:授予行政特权
现在,我们有一个新的用户帐户,具有常规帐户权限,但有时我们可能需要执行管理任务。
为了避免需要退出我们的正常用户并作为 root帐户再次登录,我们可以为我们的正常帐户设置被称为超级用户
或 root权限,这将允许我们的正常用户通过在每个命令前放置sudo
这个词来运行具有管理权限的命令。
要将这些权限添加到我们的新用户中,我们需要将新用户添加到 sudo组中。
作为 root,运行此命令,将您的新用户添加到 sudo组(以您的新用户代替突出的单词):
1usermod -aG sudo sammy
现在,当您作为常规用户登录时,您可以在命令前键入sudo
,以执行具有超级用户权限的操作。
第四步:建立基本防火墙
Debian 服务器可以使用防火墙来确保只允许连接到某些服务。尽管iptables
防火墙是默认安装的,但 Debian 并不强烈建议任何特定防火墙。
我们可以使用apt
包管理器来安装 UFW. 更新本地索引以获取有关可用的包的最新信息,然后通过键入安装防火墙:
1apt update
2apt install ufw
<$>[注] 注: 如果您的服务器运行在DigitalOcean上,您可以选择使用DigitalOcean Cloud Firewalls而不是UFW防火墙。
防火墙配置文件允许 UFW 以名义管理应用程序的防火墙规则集. 某些常见软件的配置文件默认情况下与 UFW 结合,并可在安装过程中与 UFW 注册额外的配置文件。
您可以通过键入查看:
1ufw app list
1[secondary_label Output]
2Available applications:
3 . . .
4 OpenSSH
5 . . .
我们需要确保防火墙允许SSH连接,这样我们可以下次登录,我们可以通过键入允许这些连接:
1ufw allow OpenSSH
之后,我们可以通过键入启用防火墙:
1ufw enable
输入``y并按
ENTER`来继续,您可以看到通过键入SSH连接仍然允许:
1ufw status
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
7OpenSSH (v6) ALLOW Anywhere (v6)
由于防火墙目前阻止除了SSH之外的所有连接,如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。
步骤五:为您的常规用户提供外部访问
现在我们有一个日常使用的常规用户,我们需要确保我们可以直接 SSH 到帐户。
<$>[注]
注: 直到确认您可以登录并与新用户使用sudo
,我们建议保持登录为 root. 这样,如果您遇到问题,您可以解决问题并进行任何必要的更改作为 root. 如果您正在使用DigitalOcean Droplet并与您的 root SSH连接出现问题,您可以使用DigitalOcean Console登录到Droplet。
配置新用户 SSH 访问的过程取决于您的服务器的 root 帐户是否使用密码或 SSH 密钥进行身份验证。
如果 root 帐户使用密码身份验证
如果您已登录您的 root帐户 使用密码,那么 SSH 将启用密码身份验证。
1[environment local]
2ssh sammy@your_server_ip
输入您的常规用户密码后,您将被登录. 请记住,如果您需要运行具有管理权限的命令,请在此之前输入sudo
:
1sudo command_to_run
您将被要求在每次使用sudo
时首次使用您的常规用户密码(随后定期使用)。
为了提高您的服务器的安全性,我们强烈建议设置 SSH 密钥,而不是使用密码身份验证**. 遵循我们在 Debian 9 上设置 SSH 密钥(https://andsky.com/tech/tutorials/how-to-set-up-ssh-keys-on-debian-9)的指南,了解如何配置基于密钥的身份验证。
如果 root 帐户使用 SSH 密钥身份验证
如果您已登录您的 root 帐户 _ using SSH keys_,那么对 SSH 的密码身份验证是 disabled. 您需要将本地公共密钥的副本添加到新用户的 ~/.ssh/authorized_keys
文件才能成功登录。
由于您的公共密钥已经在服务器上的 root帐户的 ~/.ssh/authorized_keys
文件中,我们可以使用 cp
命令将该文件和目录结构复制到我们现有的会话中的新用户帐户中。
请确保更改下面的命令中的突出部分,以匹配您的常规用户名:
1cp -r ~/.ssh /home/sammy
2chown -R sammy:sammy /home/sammy/.ssh
现在,打开一个新的终端会话,并使用你的新用户名使用SSH:
1[environment local]
2ssh sammy@your_server_ip
您应该在未使用密码的情况下登录到新用户帐户. 请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo
:
1sudo command_to_run
您将被要求在每次使用sudo
时首次使用您的常规用户密码(随后定期使用)。
步骤六:完成可选配置
现在我们有一个强大的基线配置,我们可以考虑一些可选的步骤,使系统更容易访问。
安装人页面
Debian 為大多數軟體提供「人」頁面的廣泛手冊,但在最小的安裝中並不總是包含「人」命令。
安装man-db
包来安装man
命令和手动数据库:
1sudo apt install man-db
现在,要查看组件的手册,您可以键入:
1man command
例如,要查看顶部
命令的手册,键入:
1man top
大多数 Debian 存储库中的包包含手动页面作为其安装的一部分。
更改默认编辑器
Debian 提供各种各样的文本编辑器,其中一些包含在基本系统中。具有集成编辑器支持的命令,如visudo
和systemctl edit
,将文本传输到editor
命令中,该命令被映射到系统的默认编辑器中。
如果您的偏好编辑器默认不安装,请使用apt
先安装它:
1sudo apt install your_preferred_editor
接下来,您可以查看当前的默认值并使用更新替代
命令修改选择:
1sudo update-alternatives --config editor
该命令显示了它知道的编辑器的表,并提示更改默认值:
1[secondary_label Output]
2There are 8 choices for the alternative editor (providing /usr/bin/editor).
3
4 Selection Path Priority Status
5------------------------------------------------------------
6* 0 /usr/bin/joe 70 auto mode
7 1 /bin/nano 40 manual mode
8 2 /usr/bin/jmacs 50 manual mode
9 3 /usr/bin/joe 70 manual mode
10 4 /usr/bin/jpico 50 manual mode
11 5 /usr/bin/jstar 50 manual mode
12 6 /usr/bin/rjoe 25 manual mode
13 7 /usr/bin/vim.basic 30 manual mode
14 8 /usr/bin/vim.tiny 15 manual mode
15
16Press <enter> to keep the current choice[*], or type selection number:
左侧的星座标志着当前的选择。 若要更改默认值,请键入您喜爱的编辑器的选择
号码,然后按Enter
。 例如,要使用nano
作为上表的默认编辑器,我们会选择1
:
1[secondary_label Output]
2Press <enter> to keep the current choice[*], or type selection number: 1
3update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in manual mode
从现在开始,您最喜欢的编辑器将被用于visudo
和systemctl edit
等命令,或者在呼叫editor
命令时。
从这里到哪里去?
在这一点上,您对您的服务器有一个坚实的基础,您现在可以在您的服务器上安装所需的任何软件。