如何在 Ubuntu 上安装安全的 OpenSSH 服务器?

如何在 Ubuntu 上安装安全的 OpenSSH 服务器?

我想在 Ubuntu 上安装 OpenSSH 服务器。该怎么做?

我需要执行以下操作:

  1. 设置 OpenSSH 服务器

  2. 为用户设置 ssh 公钥和私钥对

  3. 禁用密码登录

  4. 启用 root 用户

  5. 为 root 用户设置 ssh 公钥和私钥对

  6. 设置密码

答案1

转到终端并输入:

sudo su
aptitude install openssh-server openssh-client

测试安装

ps -A | grep sshd

如果输出如下:

<some number> ?        00:00:00 sshd

然后 ssh 守护进程正在运行。

再次输入终端;

ss -lnp | grep sshd

如果输出如下:

0  128  :::22  :::*  users:(("sshd",16893,4))
0  128   *:22   *:*  users:(("sshd",16893,3))

那么这意味着 ssh 守护进程正在监听传入的连接

现在我们编辑配置文件。首先我们备份原始文件。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

现在我们打开配置文件来编辑它

sudo gedit /etc/ssh/sshd_config

弱密码很容易被猜到。最佳做法是使用 SSH 密钥代替密码。

所以我们完全禁用密码验证。

转到行

#PasswordAuthentication yes

并将其替换为

PasswordAuthentication no

启用转发会为已经猜出密码的攻击者提供更多选择。

所以我们禁用它。这给了我们一点安全感

转到行

AllowTcpForwarding yes
X11Forwarding yes

并将其替换为

AllowTcpForwarding no
X11Forwarding no

我们可以明确地允许某些用户登录或拒绝某些用户登录。

为此,我们必须将以下几行放在配置文件的底部。

AllowUsers Fred Wilma
DenyUsers Dino Pebbles

为了使笔记本电脑发挥最佳性能,我们允许两个待处理连接。在第三个和第十个连接之间,系统将开始随机丢弃连接,从 30% 到第十个同时连接时的 100%。这可以通过以下行完成

MaxStartups 2:30:10

为了记录更多错误和其他有用信息,我们修改了以下行

LogLevel INFO

进入日志级别 VERBOSE

为了吓跑新手攻击者,我们可以展示一条横幅,我们将行首的井号标签删除

#Banner /etc/issue.net

实现它

Banner /etc/issue.net

然后我们进入终端并输入:

sudo gedit /etc/issue.net

***************************************************************************
                        NOTICE TO USERS
This computer system is the private property of its owner, whether
individual, corporate or government.  It is for authorized use only.
Users (authorized or unauthorized) have no explicit or implicit
expectation of privacy.
Any or all uses of this system and all files on this system may be
intercepted, monitored, recorded, copied, audited, inspected, and
disclosed to your employer, to authorized site, government, and law
enforcement personnel, as well as authorized officials of government
agencies, both domestic and foreign.
By using this system, the user consents to such interception, monitoring,
recording, copying, auditing, inspection, and disclosure at the
discretion of such personnel or officials.  Unauthorized or improper use
of this system may result in civil and criminal penalties and
administrative or disciplinary action, as appropriate. By continuing to
use this system you indicate your awareness of and consent to these terms
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the
conditions stated in this warning.
****************************************************************************

现在我们保存并关闭配置文件,然后在终端中输入以下内容重新启动 ssh:

systemctl restart ssh

接下来我们设置 SSH 密钥。SSH 密钥有两对,分别为公钥和私钥。公钥存在于服务器中,私钥存在于个人中。如果某人可以将私钥与公钥匹配,则只有他/她才能登录。此外,私钥还可以通过密码保护。此外,当密钥使用 4096 位加密生成时,几乎不可能通过暴力破解它们

第一步——创建 RSA 密钥对:

在终端中输入

ssh-keygen -t rsa -b 4096

为了更加安全,我们使用 64 位加密

第二步——存储密钥和密码:

按照屏幕上的说明,提供存储密钥的所需位置,建议接受默认值,选择密码,输入强密码,并记住它。

屏幕是这样的:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

第三步——复制公钥:

在终端中输入

ssh-copy-id [email protected]

这里的 123.45.56.78 是服务器 IP 地址

如果是本地主机,则

ssh-copy-id user@localmachinename

屏幕是这样的

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

~/.ssh/authorized_keys

以确保我们没有添加您意想不到的额外键。

现在我们的安装已完成。要登录,我们需要在终端中输入:

ssh username@servername

然后当提示输入密码时我们需要提供它。

现在我们要启用 opessh 服务器的 root 登录,首先必须启用 sudo 密码,因为它在 Ubuntu 中默认是禁用的。

为此,我们在终端中输入以下内容,屏幕将如下所示:

sudo passwd
[sudo] password for [username]: [Type your user password and press return]
Type new UNIX password: [Type the root password you want]
Retype new UNIX password: [Retype the root password you chosen before]
passwd: password updated successfully

现在我们必须编辑 /etc/sudoers 文件。

这里我们使用名为 visudo 的编辑器

这是因为 visudo 的唯一目的是编辑 sudoes 文件

在 ubuntu 中,默认情况下配置文件由 nano 编辑器打开

要更改它,请在终端中输入:

sudo update-alternatives --config editor

将出现以下屏幕:

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press <enter> to keep the current choice[*], or type selection number:

输入 3 并按 Enter

然后输入:

sudo visudo

移至以下行:

Defaults    env_reset

按 Enter 键

上面创建了新行

类型:

默认 rootpw

使用空格键,而不是 TAB

按 Esc --> :x --> Enter

在终端类型中:

gedit /etc/ssh/sshd_config

移至以下行:

PermitRootLogin password-prohibited

并将其更改为

PermitRootLogin yes

下一步移动到该行:

PasswordAuthentication no

并将其更改为

PasswordAuthentication yes

保存并关闭

然后重启SSH

service ssh restart

现在是时候再次为用户 root 生成 ssh 公钥-私钥对了。

在终端中输入

ssh-keygen -t rsa -b 4096

第二步——存储密钥和密码:

按照屏幕上的说明,提供存储密钥的所需位置,不要接受默认值,因为您这次必须创建新的密钥对,默认值已经创建,选择密码,输入一个强密码,记住它。

屏幕是这样的:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): u-root-id_rsa 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/u-root-id_rsa.
Your public key has been saved in /home/demo/.ssh/u-root-id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:

+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

然后在终端输入:

ssh-copy-id -i u-root-id_rsa.pub root@localmachinename

输出屏幕可能显示:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password: 

现在尝试使用“ssh”登录机器[电子邮件保护]'”,并签入:

~/.ssh/authorized_keys

以确保我们没有添加您意想不到的额外键。

现在我们已经授予root私钥访问权限来登录

测试类型:

ssh root@localmachine

再次在终端输入:

gedit /etc/ssh/sshd_config

移至以下行:

PasswordAuthentication yes

并将其更改为

PasswordAuthentication no

保存并关闭

然后重启SSH

service ssh restart

它会要求输入密码。密码保持不变。输入即可。

现在 root 就可以成功登录了

现在为了提高安全性,我们必须添加防火墙

类型:

apt install ufw

现在开始

enable ufw

获取当前正在运行的进程列表

ufw app list

OpenSSH 将会列在那里。

ALow it through firewall
ufw allow OpenSSH

重启防火墙

systemctl restart ufw

我们的安装已完成

相关内容