07.07.10SSLH : להתחבר לשרת WEB ב-HTTPS וב-SSH דרך אותו פורט
הגישה לשרת ב-SSH בפורט 22 יכולה להיות בעייתית מכל מני סיבות :
- יתכן וספק אחסון האתר חוסם פורט 22 כחלק ממדיניות האבטחה שלו
- באופן כללי לא נרצה לפתוח גישת SSH בפורט 22 (מומלץ מאוד לשנות את פורט החיבור כדי להימנע מהתקפות אוטומאטיות)
- לפתוח גישה בפורט 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"
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).
קישור :
נחמד ביותר.
אם הבנתי נכון אני יכול להגדיר (לדוגמא) שאם מישהו יכנס לאתר פרוקסי אז הוא לא יכניס אותט דרך הפורט הרגיל (80) אלא אני יוכל לנווט אותו שיגלוש דרך פורט אחר לדוג' 9666,נכון?
8 ביולי, 2010 בשעה: 10:23
לא מדוייק Gif : הסקריפט בנוי אך ורק לתקשורת SSH ו-WEB (ב-HTTPS).
למען האמת, לא בדקתי שימוש דרך שרת פרוקסי (אני בספק שזה יעבוד), אבל שאלה טובה מאוד.
אבדוק ואפרסם את התוצאה.
8 ביולי, 2010 בשעה: 13:03
הסקריפט פשוט נהדר.
זה חוסך הרבה עבודה בניתובים ואין בעיה לספקים לפתוח 443.
תודה !
8 ביולי, 2010 בשעה: 13:04
מעניין. האם אפשר להפעיל על תקשורת אחרת ? (לא SSH)
האם אפשר לשנות את פורט הניתוב של השרת WEB לכל מה שרוצים ?
9 ביולי, 2010 בשעה: 12:50
@צבי
1) לא ניתן לשחק עם הסקריפט (עובד רק על SSH ו-HTTPS)
2) כן אפשר לשנות את הפורט (ראה 4. במדריך)
9 ביולי, 2010 בשעה: 17:15