介绍
当您第一次创建新的Debian 9服务器时,您应该尽早采取一些配置步骤作为基本设置的一部分。 这将提高服务器的安全性和可用性,并为后续操作奠定坚实的基础。
第一步 - 以Root身份登录
要登录服务器,您需要知道服务器的公共IP地址 。 您还需要密码,或者,如果您安装了用于身份验证的SSH密钥,则需要root用户帐户的私钥。 如果您尚未登录服务器,则可能需要按照我们的指南来了解如何使用SSH连接Droplet ,详细介绍了此过程。
如果尚未连接到服务器,请继续使用以下命令以root用户身份登录(将命令的突出显示部分替换为服务器的公共IP地址):
ssh root@your_server_ip
如果出现,请接受有关主机真实性的警告。 如果使用密码身份验证,请提供root密码以进行登录。如果使用受密码保护的SSH密钥,则可能会在每次会话时首次使用密钥时提示您输入密码。 如果这是您第一次使用密码登录服务器,则可能还会提示您更改root密码。
关于Root
root用户是具有非常广泛权限的Linux环境中的管理用户。 由于root帐户的权限提高,因此不鼓励您定期使用它。 这是因为root帐户固有的部分权力是即使偶然也能进行非常具有破坏性的变更的能力。
下一步是设置一个替代用户帐户,减少日常工作的影响范围。 我们将教您如何在需要时获得更多特权。
第二步 - 创建新用户
以root用户身份登录后,我们准备添加从现在开始用于登录的新用户帐户。
注意 :在某些环境中,默认情况下可能会安装名为unscd
的程序包,以加快对LDAP等Nameservers的请求。 Debian中当前可用的最新版本包含一个错误 , 该错误会导致某些命令(如下面的adduser
命令)生成如下所示的其他输出:
sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
这些消息是无害的,但如果您希望避免它们,如果您不打算使用LDAP等系统获取用户信息,则可以安全地删除unscd
软件包:
apt remove unscd
此示例创建一个名为sammy的新用户,但您应该使用您喜欢的用户名替换它:
adduser sammy
从帐户密码开始,您将被问到几个问题。
输入一个强密码,如果您愿意,还可以选择填写任何其他信息。 这不是必需的,您只需在要跳过的任何字段中按ENTER
即可。
第三步 - 授予管理权限
现在,我们有一个具有常规帐户权限的新用户帐户。 但是,我们有时可能需要执行管理任务。
为了避免必须退出普通用户并以root帐户身份重新登录,我们可以为普通帐户设置所谓的“超级用户”或root权限。 这将允许普通用户通过在每个命令之前放置单词sudo
来运行具有管理权限的命令。
要将这些权限添加到新用户,我们需要将新用户添加到sudo组。 默认情况下,在Debian 9上,允许属于sudo组的用户使用sudo
命令。
以root身份运行此命令,将新用户添加到sudo组(用新用户替换突出显示的单词):
usermod -aG sudo sammy
现在,以普通用户身份登录后,您可以在命令之前键入sudo
以执行具有超级用户权限的操作。
第四步 - 设置基本防火墙
Debian服务器可以使用防火墙来确保只允许与某些服务的连接。 虽然默认安装了iptables
防火墙,但Debian并不强烈推荐任何特定的防火墙。 在本指南中,我们将安装和使用UFW防火墙来帮助设置策略和管理异常。
我们可以使用apt
包管理器来安装UFW。 更新本地索引以检索有关可用包的最新信息,然后键入以下命令安装防火墙:
apt update
apt install ufw
注意:如果您的服务器在DigitalOcean上运行,您可以选择使用DigitalOcean云防火墙而不是UFW防火墙。 我们建议一次只使用一个防火墙,以避免可能难以调试的冲突规则。
防火墙配置文件允许UFW按名称管理应用程序的防火墙规则集。 默认情况下,某些常用软件的配置文件与UFW捆绑在一起,并且软件包可以在安装过程中向UFW注册其他配置文件。 OpenSSH,即允许我们现在连接到我们服务器的服务,具有我们可以使用的防火墙配置文件。
你可以输入以下内容来看到:
ufw app list
OutputAvailable applications:
. . .
OpenSSH
. . .
我们需要确保防火墙允许SSH连接,以便我们可以在下次重新登录。 我们可以输入以下内容来允许这些连
ufw allow OpenSSH
之后,我们可以输入以下命令启用防火墙:
ufw enable
输入“ y
”并按ENTER
继续。 您可以通过键入以下内容来查看SSH连接:
ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
由于防火墙当前阻止除SSH之外的所有连接 ,因此如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量。您可以在本指南中学习一些常见的UFW操作。
第五步 - 为普通用户启用外部访问
现在我们有一个日常使用的常规用户,我们需要确保我们可以直接SSH到帐户。
注意:在确认您可以登录并对新用户使用sudo
,我们建议您以root用户身份登录。 这样,如果您遇到问题,可以进行故障排除并以root身份进行必要的更改。 如果您使用的是DigitalOcean Droplet并遇到root SSH连接问题,可以使用DigitalOcean控制台登录Droplet 。
为新用户配置SSH访问的过程取决于服务器的root帐户是使用密码还是使用SSH密钥进行身份验证。
如果Root帐户使用密码身份验证
如果使用密码登录到root帐户,则会为SSH启用密码身份验证。 您可以通过打开新的终端会话并使用SSH和新用户名来SSH到新用户帐户:
ssh sammy@your_server_ip
输入常规用户密码后,您将登录。请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo
:
sudo command_to_run
每次会话(以及之后的第一次)使用sudo
时,系统将提示您输入常规用户密码。
为了增强服务器的安全性, 我们强烈建议您设置SSH密钥而不是使用密码身份验证 。 按照我们在Debian 9上设置SSH密钥的指南,了解如何配置基于密钥的身份验证。
如果Root帐户使用SSH密钥身份验证
如果使用SSH密钥登录到root帐户,则会禁用 SSH的密码身份验证。 您需要将本地公钥的副本添加到新用户的~/.ssh/authorized_keys
文件中才能成功登录。
由于您的公钥已经位于服务器上root帐户的~/.ssh/authorized_keys
文件中,因此我们可以使用cp
命令将该文件和目录结构复制到现有会话中的新用户帐户。 之后,我们可以使用chown
命令调整文件的所有权。
确保更改以下命令的突出显示部分以匹配您的常规用户名称:
cp -r ~/.ssh /home/sammy
chown -R sammy:sammy /home/sammy/.ssh
现在,打开一个新的终端会话并使用SSH和您的新用户名:
ssh sammy@your_server_ip
您应该在不使用密码的情况下登录到新用户帐户。 请记住,如果您需要运行具有管理权限的命令,请在此之前键入sudo
:
sudo command_to_run
每次会话(以及之后的第一次)使用sudo
时,系统将提示您输入常规用户密码。
第六步 - 完成可选配置
现在我们已经拥有了强大的基线配置,我们可以考虑一些可选步骤来使系统更易于访问。 以下部分介绍了一些针对可用性的附加调整。
安装手册页
Debian以man
页的形式为大多数软件提供了大量的手册。 但是,默认情况下,最小安装并不总是包含man
命令。
安装man-db
软件包以安装man
命令和手动数据库:
sudo apt install man-db
现在,要查看组件的手册,您可以键入:
man command
例如,要查看top
命令的手册,请键入:
man top
Debian存储库中的大多数软件包都包含手册页作为其安装的一部分。
更改默认编辑器
Debian提供了各种各样的文本编辑器,其中一些包含在基本系统中。 具有集成编辑器支持的命令(如visudo
和systemctl edit
)将文本传递给editor
命令,该命令映射到系统默认编辑器。 根据您的偏好设置默认编辑器可以帮助您更轻松地配置系统并避免挫败感。
如果默认情况下未安装首选编辑器,请先使用apt
安装它:
sudo apt install your_preferred_editor
接下来,您可以使用update-alternatives
命令查看当前默认值并修改选择:
sudo update-alternatives --config editor
该命令显示它知道的编辑器的表,并提示更改默认值:
OutputThere are 8 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/joe 70 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/jmacs 50 manual mode
3 /usr/bin/joe 70 manual mode
4 /usr/bin/jpico 50 manual mode
5 /usr/bin/jstar 50 manual mode
6 /usr/bin/rjoe 25 manual mode
7 /usr/bin/vim.basic 30 manual mode
8 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number:
最左列中的星号表示当前选择。 要更改默认值,请键入首选编辑器的“选择”编号,然后按Enter
。 例如,要使用nano
作为上表的默认编辑器,我们将选择1
:
OutputPress <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in manual mode
从现在开始,您的首选编辑器将由visudo
和systemctl edit
等命令使用,或者在调用editor
命令时使用。
然后去哪儿?
此时,您的服务器基础扎实。 您现在可以在服务器上安装所需的任何软件。