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
nano /etc/default/sslh
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)
nano /etc/apache2/ports.conf
LISTEN 8443
6) יש לערוך את קובץ הגדרת ה-VIRTUAL PORT של האתר :
vi /etc/apache2/sites-enabled/default-ssl
8443>
/etc/init.d/apache2 restart
/etc/init.d/sslh start
זהו, ניתן לבדוק ע"י שתי פעולות פשוטות : גלישה לאתר ב-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
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)