SSLH : להתחבר לשרת WEB ב-HTTPS וב-SSH דרך אותו פורט

הגישה לשרת ב-SSH בפורט 22 יכולה להיות בעייתית מכל מני סיבות :

  1. יתכן וספק אחסון האתר חוסם פורט 22 כחלק ממדיניות האבטחה שלו
  2. באופן כללי לא נרצה לפתוח גישת SSH בפורט 22 (מומלץ מאוד לשנות את פורט החיבור כדי להימנע מהתקפות אוטומאטיות)
  3. לפתוח גישה בפורט 22 ובפורט 443 על אותו שרת WEB יכול להיות פגיעה במדיניות אבטחת המידע של בעל האתר (למה לפתוח 2 פורטים ב-FIREWALL ?)

הפתרון הפשוט ביותר מובנה ברוב הפצות לינוקס והוא SSLH.

מה הוא SSLH ?

SSLH הינו סקריפט קטן ופשוט שיודע לנתב כל פניה לפורט מסויים (נגיד HTTPS – 443) אל השירות המתאים (לדף HTTPS או לחיבור SSH).

לצורך כך, נתקין ונגדיר SSLH להזנה בפורט 443, נשנה פורט ההזנה של אתר ה-WEB ל-8443 (ניתן לבחור כל פורט פנוי). המשתמשים ימשיכו לגלוש ב-HTTPS (לא ירגישו את השינוי) ונוכל גם להתחבר ב-SSH דרך אותו פורט (443).

איך מתקינים ?

פשוט מאוד.

הנחה בסיסית למדריך זה היא שאנו מבצעים את ההתקנה על שרת UBUNTU 10.04 עם שרת WEB פעיל בפורט 443 (אבל ניתן ליישם בכל הפצת לינוקס נורמאלית עם שרת ווב פעיל ב-HTTPS בכל פורט אפשרי). שרת ה-WEB שבחרתי הינו APACHE (הנפוץ ביותר).

1) יש להתחבר לשרת לינוקס ב-SSH או ב-CONSOLE

2) יש לעלות את רמת ההרשאה ע"י פקודת SUDO SU והקלדת הסיסמא של משתמש ROOT

3) יש להתקין את הסקריפט ע"י הפקודה הבאה :

apt-get install sslh

4) יש לערוך את קובץ ההגדרות של SSLH :

nano /etc/default/sslh

יש לערוך את שורת ההגדרה ולשנות את הפורט המסומן לפורט הרצוי (כאן בדוגמא החליף 443 ל-8443)

DAEMON_OPTS="-u sslh -p 0.0.0.0:443 -s 127.0.0.1:22 -l 127.0.0.1:8443 -P /var/run/sslh.pid"

יש להוסיף מעל אותה שורה את הפקודה הבאה (מסומן באדום) :

RUN=yes

DAEMON_OPTS="-u sslh -p 0.0.0.0:443 -s 127.0.0.1:22 -l 127.0.0.1:8443 -P /var/run/sslh.pid"

יש לשמור את השינוי (ע"י לחיצה על צירוף CNTRL + X ואישור עם לחיצה על Y)

5) יש לערוך את קובץ הגדרת הפורט של השרת APACHE :

nano /etc/apache2/ports.conf

יש לשנות את LISTEN=443 ל-

LISTEN 8443

יש לשמור את השינוי (ע"י לחיצה על צירוף CNTRL + X ואישור עם לחיצה על Y)

6) יש לערוך את קובץ הגדרת ה-VIRTUAL PORT של האתר :

vi /etc/apache2/sites-enabled/default-ssl

יש לשנות את מספר הפורט של ה-VIRTUAL HOST מ-<VirtualHost _default_:443> ל-

<VirtualHost _default_:8443>

7) יש להפעיל מחדש את APACHE ואת SSLH ע"י הפקודות הבאות :

/etc/init.d/apache2 restart

/etc/init.d/sslh start

יש לשמור את השינוי (ע"י לחיצה על צירוף CNTRL + X ואישור עם לחיצה על Y)

זהו, ניתן לבדוק ע"י שתי פעולות פשוטות : גלישה לאתר ב-HTTPS ופתיחת SESSION של SSH בפורט 443.

תוספת לוגים :

יש לנו פתרון נהדר וניתן לגשת באותו פורט גם לאתר HTTPS וגם לשירות SSH, אבל איך ניתן להתמודד עם נושא הלוגים ?

איך נדע מי ניגש ואיפה ?

קל מאוד להתגבר על הסוגיה כי SSLH מפעיל יכולות לוגים דרך SYSLOG ולכן ניתן לייצר פילטר פשוט לקריאה.

יש להפעיל את הפקודות הבאות ב-SSH :

echo "# sslh log file" >> /etc/rsyslog.conf

echo -e ":programname, isequal, \"sslh\"\t\t /var/log/sslh.log" >> /etc/rsyslog.conf

מפעילים מחדש את SYSLOG ע"י הפקודה :

service rsyslog restart

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

tail /var/log/sslh.log

ונקבל את הלוג המאוד נעים לקריאה :

root@linux1:/home/user1# tail /var/log/sslh.log

Jul  6 18:08:24 linux1 sslh[2326]: connection from 192.168.30.1:4408 forwarded to SSL

Jul  6 18:08:34 linux1 sslh[2326]: connection from 192.168.30.1:4409 forwarded to SSH

לסיכום :

לפעמים אבטחת מידע לא דורשת שינוי גדול בתצורת העבודה או הגדרות מתקדמות.

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

הערה קטנה : התקנת SSLH בהפצות לינוקס אחרות תדרוש מתנו תהליך של קימפול (COMPILE) שלא קיים בהפצת UBUNTU. ניתן למצוא חומר אצל האח הגדול של המשפחה (GOOGLE).

קישור :

דף הסבר על SSLH

5 תגובות ל “SSLH : להתחבר לשרת WEB ב-HTTPS וב-SSH דרך אותו פורט”

  1. Gif כותב:

    נחמד ביותר.
    אם הבנתי נכון אני יכול להגדיר (לדוגמא) שאם מישהו יכנס לאתר פרוקסי אז הוא לא יכניס אותט דרך הפורט הרגיל (80) אלא אני יוכל לנווט אותו שיגלוש דרך פורט אחר לדוג' 9666,נכון?

  2. דודו כותב:

    לא מדוייק Gif : הסקריפט בנוי אך ורק לתקשורת SSH ו-WEB (ב-HTTPS).
    למען האמת, לא בדקתי שימוש דרך שרת פרוקסי (אני בספק שזה יעבוד), אבל שאלה טובה מאוד.
    אבדוק ואפרסם את התוצאה.

  3. רועי כותב:

    הסקריפט פשוט נהדר.
    זה חוסך הרבה עבודה בניתובים ואין בעיה לספקים לפתוח 443.
    תודה !

  4. צבי כותב:

    מעניין. האם אפשר להפעיל על תקשורת אחרת ? (לא SSH)
    האם אפשר לשנות את פורט הניתוב של השרת WEB לכל מה שרוצים ?

  5. דודו כותב:

    @צבי

    1) לא ניתן לשחק עם הסקריפט (עובד רק על SSH ו-HTTPS)
    2) כן אפשר לשנות את הפורט (ראה 4. במדריך)