Apache Guacamole – Access your computers from anywhere

apache-guacamole

ביום בהיר אחד החליטו במחלקת ה IT שלנו לסגור את הפורטים של SSH ו- RDP ליציאה החוצה כחלק ממדיניות אבטחת המידע החדשה של החברה. כתוצאה מכך נעלמה יכולתי להתחבר לשרת שלי בבית ו/או למחשב בעת הצורך.

לכן, חיפשתי דרך בה אוכל "לעקוף" את ההגבלות ולהמשיך להתחבר לשרת ולמחשב כאילו כלום לא השתנה.
החיפוש הוביל אותי למערכת Gateway שנקראת Apache Guacamole המאפשרת חיבורי SSH, RDP וכן VNC דרך הדפדפן בצורה נוחה ומאובטחת. המערכת רצה על גבי שרת Tomcat ומסתייעת ב Mysql על מנת לשמור את הנתונים.

בין הפיצ'רים של המערכת ניתן למנות:

  • תמיכה בניהול משתמשים והרשאות.
  • התחברות דרך ענן (כלומר שהמערכת והמחשב אליו רוצים להתחבר לא חייבים לשבת באותה רשת)
  • תוכנה חינמית בקוד פתוח.
  • תמיכה בגרסה מסחרית.
  • תיעוד מלא של ה API.
  • ועוד

במדריך זה אתמקד בהתקנת המערכת על גבי Docker Container ובאמצעות שימוש ב Docker Compose אשר יכיל את כל שצריך עבור הפעולה התקינה של המערכת. אך לפני שנתחיל יש לוודא כי התקנתם את docker ואת docker compose על פי ההנחיות במדריך הבא.

שלב א' – ההתקנה:

אנו נבצע את ההתקנה כ stack חדש בתוך סביבת הדוקר. על מנת לעשות זאת צרו תיקיה חדשה בשם guacamole תחת תיקיית הדוקר שלכם:

cd ~/docker
mkdir guacamole
cd guacamole

כעת נפתח קובץ yaml חדש בשם docker-compose.yaml:

sudo nano docker-compose.yaml

ונדביק לתוכו את הטקסט הבא:

version: '3.5'
services:
  guacamole:
    image: guacamole/guacamole:latest
    container_name: guacamole
    networks:
      - guacamole
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=guacamole_db
      - MYSQL_USER=guacamole_user
      - MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - GUACD_HOSTNAME=guacd
      - MYSQL_HOSTNAME=guacamole-db
    expose:
      - "8080"
    ports:
      - "8009:8080"
    depends_on:
      - guacamole-db
      - guacd

  guacd:
    image: guacamole/guacd:latest
    container_name: guacd
    networks:
      - guacamole
    restart: unless-stopped
    expose:
      - "4882"

  guacamole-db:
    image: mariadb:latest
    container_name: guacamole-db
    environment:
      - MYSQL_DATABASE=guacamole_db
      - MYSQL_USER=guacamole_user
      - MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    volumes:
      - "./guacamole/guacamole-db:/var/lib/mysql"
      - "./guacamole/guac-db-init-script:/docker-entrypoint-initdb.d"
    restart: unless-stopped
    networks:
      - guacamole
    depends_on:
      - init-db-script

  init-db-script:
    image: guacamole/guacamole:latest
    container_name: init_guac_script
    environment:
      - MYSQL_DATABASE=guacamole_db
      - MYSQL_USER=guacamole_user
      - MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD}
    entrypoint: '/bin/bash -c "/opt/guacamole/bin/initdb.sh --mysql > /mnt/initdb.sql" '
    volumes:
      - "./guacamole/guac-db-init-script:/mnt"
    networks:
      - guacamole

networks:
  guacamole:

volumes:
  guacamole-db:
  guac-db-init-script:

שימרו את הקובץ וצאו מהעורך על ידי לחיצה על ctrl+x >> y << enter.
כעת, הריצו את הפקודה הבאה בכדי להתקין את הקונטיינרים:

sudo docker-compose up -d

לאחר ההתקנה נוכל לגשת ל portainer ולראות כי נוספו הקונטיינרים של המערכת וכי הם רצים:

כעת, פתחו את הדפדפן והקישו את כתובת ה URL של השרת בתוספת הפורט שצויין בהגדרות, בדוגמה שלנו 8009. המסך הראשון שתראו הוא מסך ה Login כאשר משתמש וסיסמת ברירת המחדל הן guacadmin:
לצורך הדוגמה: http://server_ip:8009/guacamole

duplicati-hass - dockeril.net

בשלב ראשון, נגדיר משתמש חדש ונמחק את הקיים על מנת לאבטח במעט את המערכת, לצורך כך הכנסו למסך ההגדרות ומשם נווטו לטאב של Users. צרו לעצמכם משתמש חדש, ואל תשכחו לעדכן את ההרשאות שלכם בחלקו התחתון של המסך:

שמרו את השינויים.
כעת נמחק את משתמש ברירת המחדל על ידי כך שנתנתק מהמערכת ונתחבר שוב עם המשתמש שזה עתה יצרנו. נווטו למסך ההגדרות ומשם ל Users ולחצו על המשתמש guacadmin. בתחתית במסך ישנו כפתור delete. לחצו עליו ואשרו את פעולת המחיקה.

Duplicati-Select-what-to-backup-Source - dockril

שלב ב' – הגדרת חיבור SSH

בחלק זה של המדריך, אסביר כיצד ניתן להגדיר חיבור SSH דרך המערכת. לצורך כך הכנסו למסך ההגדרות ומשם ל Connections. תחילה נגדיר קבוצת חיבור (ניתן לפי סוג חיבור, יעד או כל חלוקה שתחפצו בה).


תנו לקבוצה שם, ואת ההגדרות שתרצו, ולחצו על SAVE.

כעת תוכלו לראות כי במסך הגדרות החיבורים נוספה קבוצה, תחתיה נוכל להוסיף תתי קבוצה או חיבורים. לחצו על "new connection" על מנת ליצור חיבור חדש.
בחלקו העליון של המסך שיפתח נגדיר את הגדרות החיבור הבסיסיות כמו שם, סוג החיבור והגבלות לשימוש בו זמנית:

החלק החשוב הנוסף במסך זה הוא ההגדרות של היעד אליו נרצה להתחבר, כמו כתובת, פורט ובמידה ותרצו (אך מאוד לא מומלץ) לשמור גם את שם המשתמש והסיסמה:

לאחר לחיצה על שמירה, וחזרה למסך נוכל לראות כי נוסף חיבור תחת הקבוצה, אשר לחיצה עליו תוביל שוב למסך ההגדרות שלו.

כעת, חזרו לדף הבית על ידי לחיצה על "Home" בתפריט המשתמש, מכאן נוכל להתחבר ליעד שנרצה:

לחיצה על החיבור עצמו תפתח מסך SSH בתוך הדפדפן:

על מנת לחזור למסך הבית יש ללחוץ על back בדפדפן.

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*