停止所有连接,x11vnc除了localhost

停止所有连接,x11vnc除了localhost

我的电脑每 5 秒就会死机 1 秒。我发现是有人反复尝试通过 x11vnc 登录。

有什么方法可以让它拒绝来自某个 IP 地址的连接,在 3 次登录尝试失败后持续半小时?或者类似的东西?

编辑:

看起来这是 fail2ban 可以做的事情。但是 fail2ban 没有附带 x11vnc 的配置,所以一个好的答案是如何配置它。

登录失败的情况如下journalctl -u x11vnc

Jan 30 14:41:58 computername x11vnc[1686]: 30/01/2020 14:41:58 authProcessClientMessage: authentication failed from 176.113.115.244

答案1

有很多方法可以解决这个问题。这是我的解决方案

停止所有连接,x11vnc除了localhost

最简单的方法是从选项开始x11vnc-localhost如果你设置x11vnc为在启动时作为 systemd 服务启动,那么你将有一个文件/lib/systemd/system/x11vnc.service,其中可能有一行如下内容:

ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -localhost

注意,最后一个选项是-localhost。该选项表示x11vnc将仅监听本地主机 IP 地址,即 127.0.0.1。此特殊 IP 地址始终指计算机本身。这意味着只有x11vnc安装了 的计算机才能访问x11vnc。其他计算机将需要x11vnc使用 间接访问ssh tunnel

设置openssh-server

您需要openssh-server在运行 的同一台计算机上运行。按++x11vnc打开终端并输入命令:CtrlAltT

sudo apt install openssh-server

这将安装 ssh 服务器。请参阅配置 ssh 服务器有关安全信息的说明。我建议您启用基于密钥的登录并禁用基于密码的登录ssh

设置ufwfail2ban

ufw在Ubuntu中已经安装但可能没有启用,在终端中输入以下两个命令:

sudo ufw enable
sudo ufw allow ssh 

启用ufw并允许ssh来自其他计算机的连接。如果您已经ufw启用并设置了允许x11vnc连接的规则,您可能需要删除这些规则。

同样地安装和配置fail2ban。按照以下任一步骤操作教程fail2ban关于如何配置ssh

如果您在路由器后面......

并已为端口 5900 设置端口转发(或类似端口),现在是时候更改它了。您想将该规则更改为端口 22,以便ssh转发 的连接请求,而不是 的连接请求x11vnc

注意,端口 5900 和 22 是各自服务的默认端口vncssh如果您更改了默认值,则需要进行相应的调整。

现在如何进行远程连接x11vnc

我们已经完成了计算机运行的设置x11vnc。现在我们需要对用于远程连接到此计算机的计算机进行一些更改。

注意:此行以下的所有更改和命令均针对用于连接到 x11vnc 的客户端计算机。我将这台计算机称为笔记本电脑。

ssh通过命令行使用隧道:

在终端使用以下命令

ssh user@host -L 5900:localhost:5900

其中,user是运行计算机的用户名x11vnc,host 是该计算机的主机名或 IP 地址。只要您想保持与主机的远程连接,此命令就必须继续运行。运行时请勿关闭终端。

如果您尚未将x11vnc服务器设置为在启动时启动,则可以设置ssh tunnel并使用相同的命令x11vnc在远程计算机中启动服务器。如果您想这样做,请使用以下命令:

ssh user@host -L 5900:localhost:5900 x11vnc -localhost

当其中一个命令在笔记本电脑的终端中运行时,像往常一样运行用于连接远程计算机的应用程序。

如果您使用Remmina连接到 x11vnc 服务器,请忽略此命令行部分并继续阅读。

设置 Remmina

如果您使用 Ubuntu 笔记本电脑进行远程连接,x11vnc那么您可能会使用名为 的应用程序Remmina。此应用程序具有内置功能ssh tunnel,因此您无需打开终端并输入命令。

编辑您在 Remmina 中为远程连接设置的 VNC 连接的设置,然后转到SSH Tunnel如下所示的选项卡:

在此处输入图片描述

确保已启用/选中以下内容:

  • 启用 SSH 隧道
  • 通过环回地址建立隧道
  • 同一服务器,端口 22

如上图所示。保存新的 Remmina 设置并尝试连接。如果一切顺利,只有您能够连接到您的x11vnc服务器,而其他人则无法连接到。

从 Android 连接

x11vncOP在评论中询问了如何通过 Android 手机/平板电脑连接远程计算机。

bVNC在 Android 设备上安装和设置

bVNC可在 Google Play 商店中下载。

bVNC首次打开时,您会看到一些权限要求。查看它们并决定是否要接受它们。然后您将看到一页功能列表。按下Close页面右下角的按钮进入设置页面。

更改连接类型基本 VNC>通过 SSH 保护 VNC您将看到以下屏幕:

在此处输入图片描述

填写设置如下:

  • 连接类型:通过 SSH 保护 VNC(如上所述)
  • 标题:给它一个有意义的名称,表明该连接适用于哪台计算机。

SSH 隧道设置

  • SSH 服务器:这是计算机的 IP 地址或主机域名x11VNC。这是您在基本 VNC 设置中输入的服务器地址。
  • 22:默认ssh端口预填为 22。仅当您openssh-server在运行的计算机中更改了默认设置时才更改它x11VNC
  • x11VNCSSH 用户名:这是您在计算机前运行计算机时使用的登录用户名。
  • x11VNCSSH 密码:这是您在计算机前运行时登录计算机时使用的密码。
  • SSH 密码:仅当您在生成私钥-公钥对时设置了密码时才需要此项。私钥-公钥对可以代替上面的 SSH 密码。
  • 使用密钥:这告诉bVNC使用私钥-公钥对而不是用户密码。
  • 管理密钥:此按钮将带您进入另一个页面,您可以在其中生成私钥-公钥对并共享公钥,以便将其添加到运行的计算机中的“授权密钥”集合中x11VNC。仅当您选中复选框时才需要执行此操作使用密钥
  • 配置 AutoX:已禁用。保持原样。

VNC 连接设置

  • 本地主机:保持原样。
  • 5900:保持原样,除非您更改了运行的计算机中的默认 VNC 端口x11VNC
  • x11VNCVNC 用户名(可选):如果您在配置中设置了用户名,请添加用户名。
  • x11VNCVNC 密码:如果您已在配置中设置了 VNC 密码,请在此处添加。
  • 保留:选中此框可以将 VNC 密码保存在 中bVNC

设置完成后,bVNC您应该能够连接到x11VNC从 Android 设备运行的远程计算机。

bVNC

ssh-server如果你在运行的计算机中设置了x11VNC仅使用基于密钥的登录,那么你将无法在SSH 密码以上。在这种情况下,您需要勾选使用密钥并使用管理密钥按钮上面生成并以某种方式获取公钥到运行的计算机中的正确文件夹和文件x11VNC

管理密钥按钮来查看以下窗口:

在此处输入图片描述

首先,您需要生成一个新的私钥-公钥对。按生成新密钥按钮,然后保持 Type 为RSA。默认的位大小 2048 应该没问题。

您将被要求在 Android 屏幕上移动手指一段时间,为随机数生成器生成熵,然后生成密钥。

您需要x11VNC通过以下三个按钮列出的三种方式之一将公钥发送到您的计算机:

  • 分享公钥
  • 复制到剪贴板
  • 将公钥保存到文件

第一个可能是最简单的。单击“共享公钥”按钮并选择 Gmail(或您使用的任何电子邮件),然后将其发送给自己。

您还可以指定文件名,例如,rsa.pub然后单击将其发送到文件按钮,然后将该文件作为附件发送给您自己。

要将公钥导入计算机,您必须物理(本地)登录该计算机。

检查您的主文件夹中是否已有该文件夹/home/$USER/.ssh,如果已有,则检查是否已有一个名为的文件/home/$USER/.ssh/authorized_keys。在终端中使用以下命令:

ls ~/.ssh

如果您看到文件夹的内容,authorized_keys则说明您拥有它们。

如果您已有该文件,authorized_keys则需要将公钥的内容添加到该文件中。在文本编辑器中打开该文件,并rsa.pub在另一个编辑器窗口中打开通过手机通过电子邮件发送的已保存文件,然后将内容从一个文件复制到另一个文件,并附加在末尾authorized_keys

如果您没有该authorized_keys文件和.shh文件夹,请使用以下命令来创建它们:

mkdir -p /home/$USER/.ssh && touch /home/$USER/.ssh/authorized_keys

然后将其内容复制并粘贴到您选择的文本编辑器rsa.pub中。authorized_keys

如果您刚刚创建了这些文件夹和文件,则需要更改文件夹和文件的权限,以便只有您可以读取它们。使用以下命令更改权限。注意:ssh如果文件夹和文件没有严格权限,服务器将不会读取文件。这是一项安全措施。

chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys

注:您可以将其替换$USER为您在运行的计算机中的登录名x11VNC

测试是否可以从登录bVNC使用密钥登录而无需使用SSH 密码

确定基于密钥的身份验证正常工作后,请禁用基于密码的身份验证ssh按照以下问题的答案禁用基于密码的登录:在 ssh 中禁用密码验证

希望这可以帮助

相关内容