סרב וואב

07.07.10SSLH : להתחבר לשרת 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 מ- ל-
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)
דילוג לתוכן