使用 Debian 9 进行初始服务器设置

2023-11-18

介绍

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

第一步 — 以 root 身份登录

要登录您的服务器,您需要知道您的服务器的公共IP地址。您还需要密码,或者,如果您安装了 SSH 密钥进行身份验证,则需要私钥root用户的帐户。如果您尚未登录服务器,您可能需要按照我们的指南进行操作如何使用 SSH 连接到 Droplet,其中详细介绍了此过程。

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

  1. ssh root@your_server_ip

如果出现有关主机真实性的警告,请接受该警告。如果您使用密码身份验证,请提供您的root如果您使用受密码保护的 SSH 密钥,则每次会话首次使用该密钥时,系统可能会提示您输入密码。如果这是您第一次使用密码登录服务器,系统可能还会提示您更改密码root密码。

关于根

The rootuser 是 Linux 环境中的管理用户,具有非常广泛的权限。由于特权的提高root帐户,你是灰心定期使用它。这是因为固有的部分力量root账户是指做出非常具有破坏性的改变的能力,即使是偶然的。

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

第二步——创建新用户

一旦您登录为root,我们准备添加从现在开始用于登录的新用户帐户。

Note:在某些环境中,有一个名为unscd可能会默认安装,以加快对 LDAP 等名称服务器的请求。 Debian 目前可用的最新版本包含a bug这会导致某些命令(例如adduser下面的命令)以产生如下所示的附加输出:

sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting

这些消息是无害的,但如果您想避免它们,可以安全地删除这些消息unscd如果您不打算使用 LDAP 等系统来获取用户信息,请打包:

  1. apt删除联合国安理会

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

  1. adduser sammy

系统会询问您几个问题,首先是帐户密码。

输入一个强密码,如果您愿意,还可以选择填写任何附加信息。这不是必需的,您只需点击ENTER在您想跳过的任何领域。

第三步 — 授予管理权限

现在,我们有了一个具有常规帐户权限的新用户帐户。然而,我们有时可能需要执行行政任务。

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

要将这些权限添加到我们的新用户,我们需要将新用户添加到sudo团体。默认情况下,在 Debian 9 上,属于以下组的用户sudo组被允许使用sudo命令。

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

  1. usermod -aG sudo sammy

现在,当以普通用户身份登录时,您可以输入sudobefore 命令以超级用户权限执行操作。

第四步 — 设置基本防火墙

Debian 服务器可以使用防火墙来确保只允许连接到某些服务。虽然iptables防火墙是默认安装的,Debian 不强烈推荐任何特定的防火墙。在本指南中,我们将安装和使用 UFW 防火墙来帮助设置策略和管理异常。

我们可以使用apt用于安装 UFW 的包管理器。更新本地索引以检索有关可用软件包的最新信息,然后通过键入以下内容安装防火墙:

  1. apt update
  2. apt install ufw

Note:如果您的服务器在 DigitalOcean 上运行,您可以选择使用DigitalOcean 云防火墙而不是 UFW 防火墙。我们建议一次仅使用一台防火墙,以避免可能难以调试的冲突规则。

防火墙配置文件允许 UFW 按名称管理应用程序的防火墙规则集。默认情况下,一些常见软件的配置文件与 UFW 捆绑在一起,并且软件包可以在安装过程中向 UFW 注册其他配置文件。 OpenSSH,现在允许我们连接到我们的服务器的服务,有一个我们可以使用的防火墙配置文件。

您可以通过输入以下内容来查看:

  1. UFW 应用程序列表
Output
Available applications: . . . OpenSSH . . .

我们需要确保防火墙允许 SSH 连接,以便下次可以重新登录。我们可以通过键入以下内容来允许这些连接:

  1. ufw 允许 OpenSSH

之后,我们可以通过键入以下内容来启用防火墙:

  1. ufw enable

Type “y”并按ENTER继续。您可以通过键入以下内容看到仍然允许 SSH 连接:

  1. UFW 状态
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

As 防火墙当前阻止除 SSH 之外的所有连接,如果您安装和配置其他服务,则需要调整防火墙设置以允许可接受的流量进入。您可以在本指南.

第五步 — 为您的普通用户启用外部访问

现在我们有了一个日常使用的普通用户,我们需要确保可以直接通过 SSH 连接到该帐户。

Note:直至验证您可以登录并使用sudo对于您的新用户,我们建议保持登录状态root。这样,如果您遇到问题,您可以进行故障排除并进行任何必要的更改,如下所示root。如果您正在使用 DigitalOcean Droplet 并遇到问题rootSSH连接,就可以使用 DigitalOcean 控制台登录 Droplet.

为新用户配置 SSH 访问的过程取决于您的服务器是否root帐户使用密码或 SSH 密钥进行身份验证。

如果Root账户使用密码认证

如果您登录了您的root帐户使用密码,然后为 SSH 启用密码验证。您可以通过打开一个新的终端会话并使用 SSH 和您的新用户名来通过 SSH 连接到您的新用户帐户:

  1. ssh sammy@your_server_ip

输入普通用户的密码后,您将登录。请记住,如果您需要使用管理权限运行命令,请键入sudo在它之前像这样:

  1. sudo command_to_run

使用时系统会提示您输入常规用户密码sudo每次会议第一次(以及之后定期)。

为了增强服务器的安全性,我们强烈建议设置 SSH 密钥而不是使用密码身份验证。请遵循我们的指南在 Debian 9 上设置 SSH 密钥了解如何配置基于密钥的身份验证。

如果Root账户使用SSH Key认证

如果您登录了您的root帐户使用 SSH 密钥,那么密码验证就是disabled用于 SSH。您需要将本地公钥的副本添加到新用户的~/.ssh/authorized_keys文件即可成功登录。

由于您的公钥已经在root帐户的~/.ssh/authorized_keys服务器上的文件,我们可以将该文件和目录结构复制到我们现有会话中的新用户帐户cp命令。之后,我们可以使用以下命令调整文件的所有权chown命令。

确保更改以下命令的突出显示部分以匹配您的常规用户名:

  1. cp -r ~/.ssh /home/sammy
  2. chown -R sammy:sammy /home/sammy/.ssh

现在,打开一个新的终端会话并使用 SSH 和您的新用户名:

  1. ssh sammy@your_server_ip

您应该无需使用密码即可登录新用户帐户。请记住,如果您需要使用管理权限运行命令,请键入sudo在它之前像这样:

  1. sudo command_to_run

使用时系统会提示您输入常规用户密码sudo每次会议第一次(以及之后定期)。

第六步 — 完成可选配置

现在我们有了强大的基线配置,我们可以考虑一些可选步骤来使系统更易于访问。以下部分介绍了一些侧重于可用性的其他调整。

安装手册页

Debian 以以下形式为大多数软件提供了广泛的手册man页。但是,那man默认情况下,在最小安装中并不总是包含命令。

安装man-db软件包来安装man命令和手册数据库:

  1. sudo apt install man-db

现在,要查看组件的手册,您可以键入:

  1. man command

例如,查看手册top命令,输入:

  1. man top

Debian 存储库中的大多数软件包都包含手册页作为其安装的一部分。

更改默认编辑器

Debian 提供了多种文本编辑器,其中一些包含在基本系统中。具有集成编辑器支持的命令,例如visudo and systemctl edit,将文本传递给editor命令,映射到系统默认编辑器。根据您的喜好设置默认编辑器可以帮助您更轻松地配置系统并避免沮丧。

如果默认情况下未安装您的首选编辑器,请使用apt首先安装它:

  1. sudo apt install your_preferred_editor

接下来,您可以使用以下命令查看当前默认值并修改选择update-alternatives命令:

  1. sudo更新替代方案--config editor

该命令显示它所知道的编辑器表,并提示更改默认值:

Output
There 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:

Output
Press <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 and systemctl edit,或者当editor命令被调用。

从这往哪儿走?

至此,您的服务器已经有了坚实的基础。您现在可以在服务器上安装所需的任何软件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Debian 9 进行初始服务器设置 的相关文章

  • 解码 OAEP 填充时出错

    我的问题已经解决了一半 请帮助 我已使用数字签名的公钥成功加密了文本 但在解密时出现错误 解码 OAEP 填充时出错 我的代码如下 region Test Encryption public void a using var rsa new
  • 保护 JSF 应用程序的安全

    我的一位自由职业者朋友邀请我加入他的 JSF 2 0 项目 我正在慢慢加快速度并将各个部分整合在一起 来自 Windows Forms NET 世界 至少可以说 我还有很多东西需要学习 我主要担心的是对于如何保护 JSF 应用程序缺乏明显的
  • 用于保护网站安全(使用 SSL)时,数字证书如何工作?

    请帮助我了解整个过程是如何进行的 据我了解 Web 浏览器包含 verisign Entrust Comodo 等证书颁发机构 CA 的根证书 但是当用户访问安全页面时到底会发生什么 Web 浏览器是否向 CA 服务器发送请求来验证证书 还
  • 如何列出静态链接的 python 版本中可用的所有 openssl 密码?

    在python 2 7 8到2 7 9升级中 ssl模块从使用更改为 DEFAULT CIPHERS DEFAULT aNULL eNULL LOW EXPORT SSLv2 to DEFAULT CIPHERS ECDH AESGCM D
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • ActiveMQ发送ObjectMessage

    我正在使用 ActiveMQ 在我当前的项目中实现消息系统 我需要发送和接收 Java 对象 而不是简单的文本或二进制消息 Java 对象 我的消息对象 根据需要实现了 Serialized 接口 ActiveMQ 的最新版本添加了一些安全
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • .Net 2.0 ServiceController.GetServices()

    我有一个启用了 Windows 身份验证的网站 从网站的页面中 用户可以启动一项对数据库执行某些操作的服务 启动该服务对我来说效果很好 因为我是服务器上的本地管理员 但我刚刚让一个用户测试了它 但他们无法启动该服务 我的问题是 有谁知道一种
  • 使用 Javascript eval() 100% 安全吗?

    我正在编写一个生成 Javascript 代码的 PHP 库 Javascript 代码有许多名为component001 component002 etc 页面通过 AJAX 动态加载 我需要通过 URL 变量传递组件的名称 然后由脚本进
  • ajax 会增加还是降低安全性?

    我正在创建一个网站 到目前为止它是纯 PHP 的 我在想 既然很少有人没有启用 JavaScript 我想知道为什么 也许我应该将我的网站创建为一个完全 PHP 的网站 而不使用任何 AJAX 难道是我想错了 可以肯定的是 如果我实施一些
  • 日志锻造强化修复

    我正在使用 Fortify SCA 来查找我的应用程序中的安全问题 作为大学作业 我遇到了一些无法解决的 日志锻造 问题 基本上 我记录一些来自 Web 界面的用户输入的值 logger warn current id not valid
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • Couchdb - 为读者用户提供的蒲团

    我想知道如何阻止读者访问 couchdb 中的 futon utils 只允许管理员访问 我需要这样做 为什么如果读者用户访问蒲团 他可以看到我所有数据库的名称以及有多少文档 我的应用程序应该让读者只有在知道文档 ID 时才能访问文档 引用
  • 除了用户名/密码之外的安全性?

    我有一个 Web 应用程序 其安全性要求高于普通 Web 应用程序 当任何用户访问域名时 他们都会看到两个文本字段 一个用户名字段和一个密码字段 如果他们输入有效的用户 密码 他们就可以访问 Web 应用程序 标准的东西 但是 我正在寻找超
  • SSL 速度:128 位与 256 位

    我决定使用 SSL 加密我的整个网站 即使实际上只有部分网站是必要的 最终结果是该网站现在有点慢 所以 我的问题是 我是否应该只加密网站的会员部分 请记住我在首页上有登录表单 我是否应该将加密降低到 128 位 如果站点总体较小 速度差异是
  • 同源政策目的可疑

    正如我所读到的 同源策略是防止源自 邪恶 域 A 的脚本向 良好 域 B 发出请求 换句话说 跨站点请求伪造 玩了一下我了解到的Access Control Allow Origin标头和CORS据我了解 它允许从好域 B 指定服务器 域
  • 何时从容器管理的安全性转向 Apache Shiro、Spring Security 等替代方案?

    我正在尝试保护使用 JSF2 0 构建的应用程序的安全 我很困惑人们什么时候会选择使用 Shiro Spring Security 或 owasp 的 esapi 等安全替代方案 而放弃容器管理的安全性 看过一些相关问题 https sta
  • 如何使用 Javascript OAuth 库不暴露您的密钥?

    看着Twitter OAuth 库 https dev twitter com docs twitter libraries 我看到了这个注释 将 JavaScript 与 OAuth 结合使用时要小心 不要暴露你的钥匙 然后 看着jsOA

随机推荐

  • 如何在 CentOS 7 上安装 Sublime Text 3

    崇高的文字是一个专有的跨平台多功能文本和源代码编辑器 用于网络和软件开发 它速度非常快 并且具有许多开箱即用的强大功能 您可以通过安装新插件和创建自定义设置来增强其功能 本教程概述了在 CentOS 7 Linux 系统上安装 Sublim
  • 如何在 Ubuntu 18.04 上安装和配置 VNC

    本指南介绍了在 Ubuntu 18 04 上安装和配置 VNC 服务器所需的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 它
  • 如何在 CentOS 8 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 就像 npm 的作用一样 Node js or pip是Python Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 它用于所有现代 PHP 框架和平台 例如 Lara
  • 如何在 Ubuntu 中添加 apt 存储库

    使用 Ubuntu 软件中心或命令行实用程序 例如apt or apt get这些软件包是从一个或多个 apt 软件存储库下载的 APT 存储库是网络服务器或本地目录 其中包含 APT 工具可读的 deb 包和元数据文件 虽然默认 Ubun
  • 如何在 Ubuntu 18.04 上安装 Visual Studio Code

    视觉工作室代码是微软开发的开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 在 Ubuntu 计算机上安装 Visual Studio Code 最简单且推荐的方法是启用 VS
  • 如何在 CentOS 7 上安装 Atom 文本编辑器

    Atom是由GitHub开发的开源跨平台代码编辑器 它有一个内置的包管理器 嵌入Git控制 智能自动完成 语法突出显示和多个窗格 从本质上讲 Atom 是一个基于 Electron 构建的桌面应用程序 使用 HTML JavaScript
  • 如何在 Ubuntu 20.04 上安装 Git

    Git 是世界上最流行的分布式版本控制系统 被许多开源和商业项目使用 它允许您与其他开发人员协作进行项目 跟踪代码更改 恢复到之前的阶段 创建分支 和更多 Git 最初是由莱纳斯 托瓦尔兹Linux内核的创建者 本指南介绍如何在 Ubunt
  • 如何在 Ubuntu 18.04 上安装 VirtualBox 来宾添加

    虚拟盒子是一款开源 跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 VirtualBox 提供了一组可以安装在来宾操作系统中的驱动程序和应用程序 VirtualBox Guest Additions 来宾添加为来宾计算机提供了多种
  • Linux 类型命令

    The type命令用于显示有关命令类型的信息 它将向您展示在命令行上键入给定命令时将如何解释 在这篇文章中 我们将解释如何使用Linuxtype命令 如何使用 type 命令 type是 Bash 和其他 shell 如 Zsh 和 Ks
  • 如何在 CentOS 7 上使用 Apache 安装和保护 phpMyAdmin

    phpMyAdmin 是一个基于 PHP 的开源工具 用于通过基于 Web 的界面管理 MySQL 和 MariaDB 服务器 phpMyAdmin 允许您与 MySQL 数据库交互 管理用户帐户和权限 执行 SQL 语句 以各种数据格式导
  • 如何在 Ubuntu 20.04 上设置 Nginx 服务器块

    服务器块是一种 Nginx 指令 它定义特定域的设置 允许您在一台服务器上运行多个网站 对于每个网站 您可以设置网站文档根目录 包含网站文件的目录 创建单独的安全策略 使用不同的 SSL 证书等等 本文介绍如何在 Ubuntu 20 04
  • 如何在 CentOS 7 上添加和删除用户

    CentOS 以及所有其他 Linux 发行版都是一个多用户操作系统 每个用户可以对各种命令行和 GUI 应用程序拥有不同的权限级别和特定设置 了解如何添加和删除用户是每个 Linux 用户应该了解的基本技能之一 在本教程中 我们将解释如何
  • 如何在树莓派上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 在本教程中 我们将解释如何在 Raspberry Pi 上安装 Docker 并探索基本的 Docker 概念和命令 先决
  • 如何在 Ubuntu 18.04 上使用 Apache 安装和配置 Nextcloud

    下一云是一个开源 自托管的文件共享和协作平台 类似于 Dropbox 它捆绑了媒体播放器 日历和联系人管理 Nextcloud 可通过应用程序进行扩展 并拥有适用于所有主要平台的桌面和移动客户端 在本教程中 我们将向您展示如何在 Ubunt
  • 了解 /etc/passwd 文件

    Linux 系统上可以使用多种不同的身份验证方案 最常用和标准的方案是针对 etc passwd and etc 影子 files etc passwd是一个基于纯文本的数据库 包含系统上所有用户帐户的信息 这是owned第 644 章权限
  • 如何在 Debian 9 上使用 UFW 设置防火墙

    Debian 包含多个软件包 这些软件包提供了用于管理防火墙的工具 其中 iptables 作为基本系统的一部分安装 对于初学者来说 学习如何使用 iptables 工具正确配置和管理防火墙可能很复杂 但 UFW 简化了它 UFW Unco
  • 如何在 Ubuntu 14.04 服务器上安装 ISPConfig3

    介绍 尽管命令行是一个功能强大的工具 可以让您在许多情况下快速轻松地工作 但在某些情况下 可视化界面会很有帮助 如果您要在一台计算机上配置许多不同的服务 或者为客户端管理系统的某些部分 则可以使用诸如ISP配置可以使这个任务变得更加简单 I
  • 如何在 CentOS 7 上安装 Git

    介绍 版本控制已成为现代软件开发中不可或缺的工具 版本控制系统允许您在源代码级别跟踪您的软件 您可以跟踪更改 恢复到之前的阶段以及从基本代码分支以创建文件和目录的替代版本 最流行的版本控制系统之一是git 许多项目在 Git 存储库中维护其
  • 什么是 Kubernetes?

    介绍 Kubernetes 是一个功能强大的开源系统 最初由 Google 开发 并得到云原生计算基金会 CNCF 的支持 用于在集群环境中管理容器化应用程序 它旨在提供更好的方法来管理跨不同基础设施的相关分布式组件和服务 要了解有关 Ku
  • 使用 Debian 9 进行初始服务器设置

    介绍 当您首次创建新的 Debian 9 服务器时 您应该尽早执行一些配置步骤作为基本设置的一部分 这将提高服务器的安全性和可用性 并为您后续的操作奠定坚实的基础 第一步 以 root 身份登录 要登录您的服务器 您需要知道您的服务器的公共