Thursday, November 21, 2024

Giải pháp truy cập từ xa với Guacamole

-

1. Tổng quan.

Apache Guacamole là một giải pháp truy cập từ xa mã nguồn mở, không cần client. Nó cho phép bạn truy cập các máy tính từ xa thông qua một giao diện web, hỗ trợ nhiều giao thức như VNC, RDP và SSH. Guacamole rất linh hoạt và có thể triển khai trên nhiều nền tảng, giúp các doanh nghiệp tối ưu hóa việc quản lý và truy cập hệ thống từ xa.

  • Guacamole hoạt động dựa trên một kiến trúc bao gồm hai thành phần chính:
    • Guacamole Server: Đây là thành phần back-end xử lý các giao thức truy cập từ xa và truyền dữ liệu.
    • Guacamole Client: Đây là giao diện web dựa trên HTML5 cho phép người dùng truy cập vào máy tính từ xa thông qua trình duyệt mà không cần cài đặt thêm phần mềm.
  • Guacamole sử dụng các giao thức sau:
    • VNC (Virtual Network Computing): Giao thức này cho phép truy cập máy tính từ xa thông qua kết nối mạng, rất hữu ích cho việc điều khiển desktop từ xa.
    • RDP (Remote Desktop Protocol): Giao thức của Microsoft cho phép truy cập và quản lý máy tính Windows từ xa với hiệu suất và bảo mật cao.
    • SSH (Secure Shell): Giao thức này cho phép truy cập và quản lý các hệ thống Unix/Linux từ xa một cách an toàn.

2. Ứng dụng trong thực tế.

Trong doanh nghiệp, Guacamole thường được sử dụng để hỗ trợ truy cập từ xa cho nhân viên, quản trị viên hệ thống và kỹ sư phần mềm.

Ví dụ, một doanh nghiệp có thể sử dụng Guacamole để:

  • Hỗ trợ nhân viên làm việc từ xa: Nhân viên có thể truy cập vào máy tính làm việc của họ từ bất kỳ đâu, giúp duy trì năng suất làm việc ngay cả khi không có mặt tại văn phòng.
  • Quản trị hệ thống: Các quản trị viên có thể quản lý và giám sát các máy chủ và hệ thống từ xa một cách hiệu quả mà không cần phải tiếp xúc trực tiếp với các máy chủ đó.
  • Phát triển phần mềm: Các kỹ sư phần mềm có thể truy cập vào các môi trường phát triển, kiểm thử từ xa mà không cần cài đặt môi trường trên máy tính cá nhân.

3. So sánh bới giải pháp tương tự.

So với các giải pháp truy cập từ xa khác như TeamViewer hay AnyDesk, Guacamole có những ưu điểm sau:

  • Không cần cài đặt client: Với Guacamole, bạn chỉ cần một trình duyệt web để truy cập, không cần phải cài đặt phần mềm client như TeamViewer hay AnyDesk.
  • Mã nguồn mở: Guacamole là một dự án mã nguồn mở, cho phép tùy chỉnh và mở rộng dễ dàng theo nhu cầu của doanh nghiệp.
  • Hỗ trợ đa nền tảng: Guacamole có thể triển khai trên nhiều hệ điều hành khác nhau và hỗ trợ nhiều giao thức truy cập từ xa.

Tuy nhiên, Guacamole cũng có một số hạn chế so với các giải pháp thương mại như:

  • Thiết lập phức tạp hơn: Việc triển khai và cấu hình Guacamole có thể phức tạp hơn đối với người dùng không có kiến thức về hệ thống.
  • Hỗ trợ thương mại: Các giải pháp như TeamViewer hay AnyDesk thường có hỗ trợ khách hàng tốt hơn do là sản phẩm thương mại.

4. Các lưu ý khi sử dụng Guacamole.

  • Bảo mật: Luôn đảm bảo rằng hệ thống Guacamole của bạn được cấu hình bảo mật chặt chẽ, sử dụng HTTPS và các biện pháp bảo mật mạng để ngăn chặn truy cập trái phép.
  • Hiệu suất: Hiệu suất của Guacamole phụ thuộc vào máy chủ và mạng của bạn, vì vậy cần đảm bảo rằng máy chủ đủ mạnh và có kết nối mạng ổn định.
  • Cập nhật thường xuyên: Luôn cập nhật Guacamole và các thành phần liên quan để đảm bảo an toàn và tích hợp các tính năng mới nhất.

5. Cài đặt Guacamole Server.

Guacamole được bao gồm trong kho của một số bản phân phối Linux. Nếu bản phân phối của bạn cung cấp các gói Guacamole cho bạn, thì đây là phương pháp cài đặt Guacamole được ưu tiên. Nếu bản phân phối của bạn không cung cấp các gói Guacamole hoặc các gói được cung cấp quá cũ, bạn có thể xây dựng Guacamole từ nguồn khá dễ dàng.

Mình sử dụng Ubuntu 22.04 nhé.

shell> lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.4 LTS
Release:	22.04
Codename:	jammy

Các bước cài đặt như sau:

Bước 1 – Cài đặt các gói cần thiết.

Đầu tiên hãy cập nhật danh sách gói.

apt update

Tiếp theo hãy cài đặt các gói sau.

apt install build-essential libcairo2-dev libjpeg-turbo8-dev \
    libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev \
    freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev \
    libpulse-dev libvorbis-dev libwebp-dev libssl-dev \
    libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev \
    libavformat-dev -y

Bước 2 – Tải source code Guacamole.

Lựn chọn phiên bạn cho Guacamole, bạn vào link https://downloads.apache.org/guacamole và lựa chọn phiên bản bạn muốn cài đặt.

Trường hợp của mình sẽ lựa chọn bản mới nhất 1.5.5.

Copy link phiên bản 1.5.5.

Dùng wget để download Guacamole 1.5.5 về server.

shell> wget https://downloads.apache.org/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz
--2024-07-26 14:25:37--  https://downloads.apache.org/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz
Connecting to 10.237.7.250:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 1136892 (1.1M) [application/x-gzip]
Saving to: ‘guacamole-server-1.5.5.tar.gz’

guacamole-server-1.5.5.tar.gz                                       100%[=================================================================================================================================================================>]   1.08M   467KB/s    in 2.4s

2024-07-26 14:25:40 (467 KB/s) - ‘guacamole-server-1.5.5.tar.gz’ saved [1136892/1136892]

Bước 3 – Xả nén gói vừa tải xuống.

tar -xvf guacamole-server-1.5.5.tar.gz
cd guacamole-server-1.5.5

Bước 4 – Tiến hành build từ source code vừa tải về.

./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
make
make install

Bước – 5. Cập nhật thư viện và reload lại hệ thống.

ldconfig
systemctl daemon-reload

Bước 6 – Tạo một thư mục để lưu trữ các file cấu hình Guacamole và phần mở rộng. Các thư mục này được sử dụng trong các bước sau.

mkdir -p /etc/guacamole/{extensions,lib}

Bước 7 – Cài đặt Apache Tomcat.

apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

Bước 8 – Tải và cấu hình guacamole.war

File WAR (Web Application Archive) của Guacamole chứa toàn bộ ứng dụng web Guacamole và có thể triển khai trên một máy chủ ứng dụng Java như Apache Tomcat. Khi lấy link tải cho guacamole.war lưu ý nhớ lấy guacamole.war cùng version với Guacamole Server. Do các bước trên bình đang cài Guacamole 1.5.5 nên giờ mình sẽ chọn file guacamole-1.5.5.war.

Tải Guacamole War.

wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-1.5.5.war

Di chuyển guacamole-1.3.0.war đến thư mục web Tomcat.

mv guacamole-1.5.5.war /var/lib/tomcat9/webapps/guacamole.war

Bước 9 – Cài đặt MySQL hoặc MariaDB và cấu hình nó trên hệ thống của bạn.

apt install mariadb-server -y

Tải xuống MySQL Connector-J (Java Connector). Đối với hướng dẫn này, hãy tải xuống file lưu trữ độc lập của nền tảng.

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz

Giải nén file tar và sao chép nó vào /etc/guacamole/lib/.

tar -xf mysql-connector-java-8.0.26.tar.gz
cp mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/

Bước 10 – Tải xuống plugin xác thực JDBC cho Apache Guacamole. File này có thể được tìm thấy trên https://downloads.apache.org/guacamole/1.5.5/binary/ bằng cách chọn phiên bản phát hành và sau đó tìm file jdbc(với 1.5.5 là version bạn đã sử dụng cho Guacamole Server).

Vào server dùng wget tải xuống guacamole-auth-jdbc-1.5.5.tar.gz.

wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz

Giải nén guacamole-auth-jdbc-1.5.5.tar.gz và sao chép nó vào /etc/guacamole/extensions/.

tar -xf guacamole-auth-jdbc-1.5.5.tar.gz
mv guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/

Đăng nhập vào mysql với tư cách là người dùng root bằng lệnh mysql -u root -p,

shell> mysql -u root -p
Enter password:

Do chúng ta chưa cài đặt mật khẩu cho root nên hãy bấm enter để bỏ qua xác thực.

shell> mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Khi ở trong lời nhắc mysql, hãy thay đổi mật khẩu root, tạo DB và tạo username mới cho cơ sở dữ liệu đó bằng cách chạy các lệnh dưới đây, hãy thay thế thông tin xác thực phù hợp với bạn.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hoanghd164';
CREATE DATABASE guacamole_db;
CREATE USER 'hoanghd'@'localhost' IDENTIFIED BY 'Hoanghd164';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'hoanghd'@'localhost';
FLUSH PRIVILEGES;

Tham khảo.

shell>  mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hoanghd164';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> CREATE DATABASE guacamole_db;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE USER 'hoanghd'@'localhost' IDENTIFIED BY 'Hoanghd164';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'hoanghd'@'localhost';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye

Tiếp tục di chuyển đến thư mục được trích xuất cho plugin JDBC.

cd guacamole-auth-jdbc-1.5.5/mysql/schema

Import sql đó vào cơ sở dữ liệu MySQL, nhớ nhập mật khẩu xác thực root vào, ví dụ của mình là Hoanghd164.

shell> cat *.sql | mysql -u root -p guacamole_db
Enter password:

Tạo mới file thuộc tính cho Guacamole bằng cách chạy đoạn shell sau. Nhớ thay thế password bằng mật khẩu của guacamole_user mới mà bạn đã tạo cho cơ sở dữ liệu.

cat > /etc/guacamole/guacamole.properties << 'OEF'
# MySQL properties
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: hoanghd
mysql-password: Hoanghd164
OEF

Khởi động lại tất cả các dịch vụ liên quan.

systemctl restart tomcat9 guacd mysql

Bật tính năng khởi động theo OS cho tất cả các dịch vụ liên quan.

systemctl enable tomcat9 guacd mysql

Xác minh các dịch vụ đã sẵn sàng hoạt động.

systemctl status tomcat9 guacd mysql
shell> systemctl status tomcat9 guacd mysql
● tomcat9.service - Apache Tomcat 9 Web Application Server
     Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:47:59 UTC; 43min ago
       Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html
    Process: 29504 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh (code=exited, status=0/SUCCESS)
   Main PID: 29508 (java)
      Tasks: 40 (limit: 9389)
     Memory: 394.0M
        CPU: 22.566s
     CGroup: /system.slice/tomcat9.service
             └─29508 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol>

● guacd.service - LSB: Guacamole proxy daemon
     Loaded: loaded (/etc/init.d/guacd; generated)
     Active: active (running) since Fri 2024-07-26 14:47:59 UTC; 43min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 29495 ExecStart=/etc/init.d/guacd start (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 9389)
     Memory: 10.3M
        CPU: 42ms
     CGroup: /system.slice/guacd.service
             └─29500 /usr/local/sbin/guacd -p /var/run/guacd.pid

● mariadb.service - MariaDB 10.6.18 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:48:00 UTC; 43min ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 29535 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 29536 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 29538 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
    Process: 29583 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 29586 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
   Main PID: 29569 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 9 (limit: 61968)
     Memory: 62.3M
        CPU: 494ms
     CGroup: /system.slice/mariadb.service
             └─29569 /usr/sbin/mariadbd

Xác minh dịch vụ Guacamole đã cài thành công.

Điều hướng đến url http://[ip_server]:8080/guacamole thay thế * [ip_server] bằng địa chỉ IP Guacamole của bạn. Nhập guacadmin làm tên người dùng và guacadmin làm mật khẩu. Sau đó bấm Login.

6. Tổng Kết.

Guacamole là một giải pháp truy cập từ xa hiệu quả, linh hoạt và mã nguồn mở, phù hợp cho các doanh nghiệp cần quản lý và truy cập hệ thống từ xa. Với khả năng hỗ trợ nhiều giao thức và không cần cài đặt client, Guacamole mang lại nhiều lợi ích cho việc quản lý và làm việc từ xa. Tuy nhiên, việc triển khai và bảo mật cần được chú ý để đảm bảo hệ thống hoạt động một cách an toàn và hiệu quả.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories