在Ubuntu 16.04 LTS上使用鳄梨调味酱创建HTML 5 RDP / SSH前端

介绍

本教程的目的是摆脱公共SSH和公共RDP连接。通过将所有这些都放置在非常方便的HTML5客户端之后,我们可以添加用于访问云的安全层。

鳄梨酱还记录任何远程访问,因此未经授权的访问变得更加可追踪。

注意:对于我们进行加密(选项B),我们需要一个域名。如果您没有,则可以跳过此步骤,而只需执行选项A即可

步骤1-准备系统

首先在所需的Vultr区域中旋转VPS。一个1024 MBVPS就足够了,如鳄梨是不是苛求。

启用专用IP

首先在VPS上启用专用网络。这充分证明这里

准备防火墙

首先,让我们稍微增强一下图像。让我们检查是否已配置了映像ufw

root@vultr:~# ufw status
Status: inactive

默认情况下它是禁用的,因此我们将需要添加一些规则。

  • 规则1:ssh:TCP端口22
  • 规则2:http:TCP端口8080(鳄梨调味酱的临时测试规则)

让我们从配置这些端口开始。

ufw allow 22/tcp
ufw allow 8080/tcp

接下来启用防火墙。

ufw enable

如果收到警告,请不要担心。如果添加了port 22,那么您将不会遇到任何问题。

root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

启用后,请求防火墙的状态,我们将看到我们的端口配置。

ufw status

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
8080/tcp (v6)              ALLOW       Anywhere (v6)

第2步-安装鳄梨调味酱

安装所有依赖项

在开始安装之前,我们需要更新和升级存储库。使用Tomcat基于Java的软件包(如),可以不断发现被发现的错误及其相关的错误修正。通常最好先执行此操作,而不是直接进入我们的安装。

apt-get update
apt-get -y upgrade 

接下来是所有依赖项。鳄梨调味酱有很多。(可以在此处找到依赖项及其功能的完整列表)。让我们继续安装所有这些。

apt-get -y install build-essential tomcat8 freerdp libcairo2-dev libjpeg-turbo8-dev libpng12-dev libossp-uuid-dev libavcodec-dev libavutil-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvorbis-dev libwebp-dev mysql-server mysql-client mysql-common mysql-utilities libswscale-dev libvncserver-dev libpulse-dev libssl-dev

当安装程序要求提供MySQL根密码时,请提供一个,并请务必注意。我们稍后将使用此密码来创建Guacamole数据库。

下载鳄梨酱

现在我们有了所有的依赖关系,我们可以继续下载Guacamole。鳄梨酱本身主要以源代码形式提供,而不是二进制文件。首先,我们将移至该/tmp文件夹,以避免使磁盘的其他部分混乱。然后下载所有源代码。

有四个源/二进制文件可供下载:

  • guacamole-0.9.13-incubating.war:这是Web应用程序。一个WAR文件是一个压缩包网站提供托管的Tomcat的网站上的一个单一的网站
  • guacamole-server-0.9.13-incubating.tar.gz:此文件将提供后端guacd应用程序。这将通过RDP和SSH创建流。
  • guacamole-auth-jdbc-0.9.13-incubating.tar.gz:我们将使用本地MySQL数据库,因此我们需要关联的JDBC连接器。
  • mysql-connector-java-5.1.43.tar.gz注意:没有数据库驱动程序,JDBC连接器将无法执行任何操作。该文件由MySQL团队自己提供。

注意:下载已解析到最近的服务器

cd /tmp
wget http://apache.belnet.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-0.9.13-incubating.war
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/source/guacamole-server-0.9.13-incubating.tar.gz
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.43.tar.gz

下载完所有这些文件后,提取tar.gz

tar -xzvf guacamole-server-0.9.13-incubating.tar.gz
tar -xzvf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar -xzvf mysql-connector-java-5.1.43.tar.gz

编译鳄梨调味酱

现在,我们已经提取了所有源代码,让我们创建一些guacamole文件夹,这些文件将被鳄梨调味酱应用程序及其依赖项使用。

mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions

所有新的鳄梨调味酱二进制文件都已准备就绪。现在,我们可以开始编译和安装过程。移至解压缩的Guacamole Server文件夹。

cd /tmp/guacamole-server-0.9.13-incubating

将应用程序配置为还创建一个init.d文件,以便以后将其作为服务运行。

./configure --with-init-dir=/etc/init.d

在所有库和协议上,该命令应以“ yes”结尾。如果不是,请返回并检查apt-get命令以确保您没有错过任何软件包。

------------------------------------------------
guacamole-server version 0.9.13-incubating
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libavcodec .......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebp ............. yes

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      Telnet .... yes
      VNC ....... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes

   Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

接下来编译并安装Gucamole服务器。

make && make install

完成所有操作后,请运行ldconfig以重建已添加库的搜索路径。

ldconfig

通过使用systemctl设置guacd程序(鳄梨酱守护程序)来继续启动。

systemctl enable guacd

鳄梨酱二进制文件现已安装。现在,我们将为Tomcat准备Web应用程序。

首先将war文件移动到guacamole我们刚刚创建的文件夹中,完成后在tomcat目录中创建一个逻辑链接以指向我们的war文件。

cd /tmp
mv guacamole-0.9.13-incubating.war /etc/guacamole/guacamole.war
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/

然后我们需要mysql连接器和JDBC。extensions文件夹中需要JDBC驱动程序,文件夹中需要连接器lib

cp mysql-connector-java-5.1.43/mysql-connector-java-5.1.43-bin.jar /etc/guacamole/lib/
cp guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/

配置Guacamole和Tomcat

连接器和JDBC安装到位后,我们需要编辑tocamt8文件。该文件包含许多tomcat8设置,在我们的情况下,我们需要GUACAMOLE_HOME在文件末尾添加变量。

nano /etc/default/tomcat8

追加以下内容。

GUACAMOLE_HOME=/etc/guacamole

创建数据库

接下来是创建数据库。鳄梨酱将其连接配置存储在数据库中,而不是文件中。

root password使用安装期间使用的登录名。

mysql -u root -p

第一步是创建一个名为“ guacamole_db”的数据库。

create database guacamole_db;

然后运行create user命令。这将创建一个具有密码的用户mysupersecretpassword,该用户只能从进行连接localhost

create user 'guacamole_user'@'localhost' identified by "mysupersecretpassword";

CRUD向该用户授予数据库操作guacamole_db

GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';

刷新特权并退出外壳。

flush privileges;
exit

通过将Guacamole模式添加到我们新创建的数据库中来完成。

cat /tmp/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/*.sql | mysql -u root -p guacamole_db

完成后,我们需要编辑guacamole.properties文件。该文件包含我们最近创建的MySQL服务器配置。

nano /etc/guacamole/guacamole.properties

附加MySQL连接详细信息和凭据。

mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: mysupersecretpassword

通过创建指向tomcat共享文件夹的符号链接来完成操作,因为WAR文件将在其中搜索这些属性。

ln -s /etc/guacamole /usr/share/tomcat8/.guacamole

测试设置

通过重新启动tomcat8服务器结束并启动guacd服务器守护程序。

service tomcat8 restart
service guacd start

您可以使用status命令进行验证。

service tomcat8 status
service guacd status

现在,您可以在端口上浏览到VPS 8080

http://<yourpublicip>:8080/guacamole/

使用用户名guacadmin和相同的密码guacadmin。这将授予您访问一个空的Guacamole服务器的权限。

单击用户名的右上角,guacadmin然后选择Settings。进入设置页面后,转到Users选项卡并选择用户guacadmin

现在,将您的密码更改为其他密码,或创建一个新的管理员用户并删除默认密码guacadmin

步骤3-微调和清理

这些是最后的步骤:完成后进行清理。

/tmp文件夹中删除下载的源代码和二进制文件。

rm -rf /tmp/guacamole-*
rm -rf /tmp/mysql-connector-java-*

另外,将Guacamole Web应用程序设置为默认应用程序。在tomcat生态系统中,获取ROOT文件夹的应用程序是在您访问网站时默认启动的应用程序。

删除旧的ROOT占位符。

rm -rf /var/lib/tomcat8/webapps/ROOT

并为鳄梨酱服务器创建一个符号链接ROOT

ln -s /var/lib/tomcat8/webapps/guacamole /var/lib/tomcat8/webapps/ROOT

这需要重新启动tomcat。

service tomcat8 restart

步骤4(选项A)-仅在HTTP上运行

  • 如果您不打算使用“让我们加密证书”而不使用DNS,请执行此步骤中的操作,然后直接转到步骤6。-选项A
  • 如果您想创建一个更安全的站点并且已经准备好DNS,则可以跳过此步骤,直接进入选项B(第5步)。

编辑tomcat8/server.xml文件并更改连接器端口。

nano /etc/tomcat8/server.xml

搜索Connector port

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

并替换808080

默认情况下,tomcat不允许绑定下面的端口1024。为此,我们需要告诉tomcat8创建经过身份验证的绑定。

编辑defaulttomcat8 的文件并取消注释该AUTHBIND行,并使用该选项yes

nano /etc/default/tomcat8

AUTHBIND=yes

一旦完成,请安装intall authbind

apt-get install authbind

配置它,以便80tomcat8可以声明端口。

touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat8 /etc/authbind/byport/80

允许端口80穿过防火墙并删除的规则8080

ufw allow 80/tcp
ufw delete allow 8080/tcp

重新启动tomcat。

service tomcat8 restart

就是这样,现在鳄梨调味酱应该在port上运行80

步骤5(选项B)-设置Nginx

Nginx的安装和配置

Tomcat确实不是可与结合使用的最佳,最可靠的应用程序之一certbot。幸运的是Nginx是。我们只是将tomcat代理到Nginx。它使用certbot的即用型功能,但要牺牲一点RAM。

apt-get install nginx

安装完成后,编辑默认配置。

nano /etc/nginx/sites-available/default

删除所有示例配置,然后添加以下配置。

server {      
  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

这将为运行在的网站创建代理8080。重新启动Nginx,并在启动时启用它。

systemctl restart nginx
systemctl enable nginx

检查是否一切正常。

systemctl status nginx

禁用测试端口,8080并允许端口上的流量80

ufw allow 80/tcp
ufw delete allow 8080/tcp

安装让我们加密

在使用之前certbot,我们需要向ppa包含certbot软件包的系统中添加正确的内容。

add-apt-repository ppa:certbot/certbot

按“ ENTER”接受配置更改。

更新apt以收集新软件包。

apt-get update

最后,安装用于分配证书的Nginx模块。

apt-get -y install python-certbot-nginx

配置Nginx以使用证书

配置防火墙以允许HTTPS

ufw allow 443/tcp

在我们可以请求新证书之前,我们需要一个DNS名称。

nano /etc/nginx/sites-available/default

添加以下server_name设置。

server_name rdp.example.com;

更改配置以反映此新设置。

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

检查是否一切正常,然后重新启动Nginx。

nginx -t
service nginx restart

现在向certbot申请证书。

certbot --nginx -d rdp.example.com

提供您的电子邮件,并同意安装程序提出的问题。(您可以安全地选择“ No”来共享您的电子邮件。)Certbot会自动询问它需要做什么HTTPS。我们将使用选项2 :redirect to HTTPS

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

我们要做的最后一件事是更新DH参数。默认情况下,对于2017年标准而言,这些功能有些薄弱。

创建一些新的。

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

接下来,将它们添加到Nginx中的默认站点。

nano /etc/nginx/sites-available/default

将它们添加到服务器配置。

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

检查错误。

nginx -t

通过重新启动服务器来应用更改。

service nginx restart

清理旧8080规则

ufw delete allow 8080/tcp

注意:如果您收到“ 502 Bad Gateway”,则需要重新启动tomcat8

service tomcat8 restart

自动续订证书

让我们加密证书需要续订。我们可以为此创建一个cron作业。首先编辑crontab

crontab -e

添加以下行。

00 2 * * * /usr/bin/certbot renew --quiet

如果任何证书需要续签,它将在2:00 AM进行检查,如果需要续签,则将对其进行续签。

第6步-全部测试

转到您的Guacamole服务器(http://<ip>/https://rdp.example.com))。

对于此测试,您将需要两个以上的实例:一个Linux VM和另一个都启用了私有IP的Windows Server 2012 R2。

添加Windows RDP连接

点击右上角的“ username”,然后转到“ Settings”。然后转到“ Connections”并选择“ New Connection”。

填写以下设置(您可以将其他设置保留为默认设置)。

Name: Windows Server 2012 R2
Location: ROOT
Protocol: RDP
Maximum number of connections: 1
Maximum number of connections per user: 1
Parameters > Hostname: 10.99.0.12
Parameters > Port: 3389
Username: Administrator
Password: <password> (provided by Vultr)
Security mode: Any
Ignore server certificate: <checked>

按“ save”并返回主屏幕。现在您可以单击“ Windows Server 2012 R2”连接,它将RDP连接到此计算机。

添加Linux SSH连接

按“ Ctrl+Shift+Alt”。这将弹出侧面的菜单。您可以在此处断开鳄梨调味酱或执行鳄梨调味酱的其他管理任务。

点击username菜单顶部的,然后转到“ Settings”。然后转到“ Connections”标签,然后选择“ New Connection”。

填写以下设置(您可以将其他设置保留为默认设置)。

Name: Linux
Location: ROOT
Protocol: SSH
Maximum number of connections: 5
Maximum number of connections per user: 2
Parameters > Hostname: 10.99.0.11
Parameters > Port: 22
Username: root
Password: <password> (provided by Vultr)

按“ save”并返回主屏幕。现在,您可以单击此新创建的连接,并通过SSH连接到Linux服务器。

结论

您现在有了Web RDP / SSH HTML5网关。现在,您可以对平台的公共RDP和SSH访问进行防火墙保护,并可以从任何现代浏览器访问您的环境。有关鳄梨酱可以提供的更多信息,请在此处观看一个很棒的视频,展示该平台的所有可能性。



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。