我在 Ubuntu 中安装 openssh-server 时遇到了麻烦。我特别想知道如何生成 RSA 公私钥对以及相关概念。最常应用的默认配置文件修改是什么?如何授予 root 登录权限?如何添加防火墙?
答案1
转到终端并输入:
sudo su -
apt-get 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 vim /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
进入
LogLevel VERBOSE
为了吓跑新手攻击者,我们可以展示一条横幅,我们将行首的井号标签删除
#Banner /etc/issue.net
实现它
Banner /etc/issue.net
然后我们进入终端并输入:
sudo -H 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.
****************************************************************************
如果某个 IP 地址在 30 秒内尝试连接超过 10 次,则所有后续尝试都将失败,因为连接将被丢弃。通过在终端中运行单个命令,即可将规则添加到防火墙:
sudo ufw limit ssh
现在我们保存并关闭配置文件并ssh
通过在终端中输入以下内容重新启动:
systemctl restart ssh
接下来我们设置SSH密钥 SSH 密钥有两对:公钥和私钥。公钥存在于服务器中,私钥存在于个人中。如果某人能将他的私钥与公钥匹配,则只有他/她才能登录。此外,私钥还可以通过密码保护。此外,当密钥使用 4096 位加密生成时,几乎不可能通过暴力破解它们。
第一步 - 创建RSA密钥对:
在终端中输入
ssh-keygen -t rsa -b 4096
为了更加安全,我们使用 64 位加密
第二步——存储密钥和密码:
按照屏幕上的说明,提供存储密钥的所需位置,建议接受默认值,选择密码,输入强密码,并记住它。
屏幕是这样的:
ssh-keygen -t rsa 生成公钥/私钥 RSA 密钥对。 输入保存密钥的文件(/home/demo/.ssh/id_rsa): 输入密码(无密码则为空): 再次输入相同的密码: 您的身份已保存在 /home/demo/.ssh/id_rsa。 您的公钥已保存在 /home/demo/.ssh/id_rsa.pub。 密钥指纹是: 4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 演示@a 钥匙的随机图像是: +--[RSA 2048]----+ | .oo。 | |.oE| | + . o | | 。 = =。 | | = 小号 = 。| | ο + = + | |.o+o.| | . Ø | | | +-----------------+
第三步——复制公钥:
在终端中输入
ssh-copy-id [email protected]
这里的 123.45.56.78 是服务器 IP 地址
如果是本地主机,则
ssh-copy-id user@localmachinename
屏幕是这样的
无法确定主机“12.34.56.78 (12.34.56.78)”的真实性。 RSA 密钥指纹是 b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12。 您确定要继续连接吗(是/否)?是 警告:将“12.34.56.78”(RSA)永久添加到已知主机列表中。 [电子邮件保护]的密码: 现在尝试使用“ssh”登录机器[电子邮件保护]'”,并签入: 〜/.ssh /授权密钥 以确保我们没有添加您意想不到的额外键。
现在我们的安装已完成。要登录,我们需要在终端中输入:
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
将出现以下屏幕:
备选编辑器有 4 个选择(提供 /usr/bin/editor)。 选择路径优先级状态 ------------------------------------------------------------ * 0 /bin/nano 40 自动模式 1 /bin/ed -100 手动模式 2 /bin/nano 40 手动模式 3 /usr/bin/vim.basic 30 手动模式 4 /usr/bin/vim.tiny 10 手动模式 按保留当前选择[*],或输入选择编号:
输入 3 并按enter
然后输入:
sudo visudo
移至以下行:
Defaults env_reset
按enter
上面创建了新行类型:
Defaults rootpw
使用spacebar,而不是TAB
按Esc--> :+ x-->Enter
在终端类型中:
gedit /etc/ssh/sshd_config
移至以下行:
PermitRootLogin password-prohibited
并将其更改为
PermitRootLogin yes
保存并关闭
然后重启SSH
service ssh restart
然后在终端输入:
ssh-copy-id root@localmachinename
输出屏幕可能显示:
无法确定主机“12.34.56.78 (12.34.56.78)”的真实性。 RSA 密钥指纹是 b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12。 您确定要继续连接吗(是/否)?是 警告:将“12.34.56.78”(RSA)永久添加到已知主机列表中。 [电子邮件保护]的密码: 现在尝试使用“ssh”登录机器[电子邮件保护]'”,并签入: 〜/.ssh /授权密钥 以确保我们没有添加您意想不到的额外键。 现在我们已经授予root私钥访问权限来登录 测试类型: ssh root@本地机器
它会要求输入密码。密码保持不变。输入密码即可。现在 root 可以成功登录
现在为了提高安全性,我们必须添加防火墙类型:
app install ufw
现在开始
enable ufw
获取当前正在运行的进程列表
ufw app list
OpenSSH 将列在那里。A允许它通过防火墙
ufw allow OpenSSH
重启防火墙
systemctl restart ufw
我们的安装已完成