הגדרת Bastion Host: גישת SSH מאובטחת עם MFA וביקורת

כל יציאת SSH פתוחה מהווה נקודת כניסה פוטנציאלית לתוקפים. אנו מגדירים bastion host שמצמצם את כל שטח התקיפה לנקודה מאובטחת אחת עם MFA וניטור מלא של הסשנים. הצוות שלנו מספק את הפרויקט במפתח מלא, ומבטיח גישה שקופה למפתחים והגנה אמינה על התשתית.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

גישת SSH לשרתים ישירות מהאינטרנט היא נוהג נפוץ שהופך כל מארח למטרה. עבור צוות של 20 מהנדסים המנהלים 50 שרתים, מדובר ב-50 פורטים פתוחים — משטח תקיפה עצום. מארח bastion (שרת קפיצה) מצמצם זאת לכתובת IP ציבורית אחת. אנו מקימים צומת כזה עם רשימת IP מותרת, MFA חובה, ורישום מלא של כל הפגישות. התוצאה: גישה שקופה למפתחים ואבטחה ברמה ארגונית.

למה מארח bastion ולא VPN או SSH ישיר?

SSH ישיר לכל שרת מכפיל את משטח התקיפה: כל מארח הוא מטרה נפרדת. עבור 50 שרתים, מדובר ב-50 כתובות IP להגנה. VPN (OpenVPN, WireGuard) מספק כניסה יחידה אך מוסיף מורכבות בניהול תעודות ולקוחות. Bastion הוא נקודת האיזון: כתובת IP ציבורית אחת, מינימום רכיבים נעים, מקסימום שקיפות למפתחים. ProxyJump בקובץ ~/.ssh/config הופך את העבודה עם ה-bastion לחלקה.

איך ProxyJump עובד?

הדרך המודרנית לעבוד עם bastion היא ProxyJump ב-~/.ssh/config. ללא העברת סוכן (פגיעה), ללא העתקת מפתחות ל-bastion:

# ~/.ssh/config
Host bastion.corp.example.com
    User ec2-user
    IdentityFile ~/.ssh/corp-key.pem
    ServerAliveInterval 30

Host 10.0.*.*
    ProxyJump bastion.corp.example.com
    User ubuntu
    IdentityFile ~/.ssh/corp-key.pem

Host prod-db-01
    Hostname 10.0.2.50
    ProxyJump bastion.corp.example.com
    User ubuntu

לאחר מכן, # ~/.ssh/config Host bastion.corp.example.com User ec2-user IdentityFile ~/.ssh/corp-key.pem ServerAliveInterval 30 Host 10.0.*.* ProxyJump bastion.corp.example.com User ubuntu IdentityFile ~/.ssh/corp-key.pem Host prod-db-01 Hostname 10.0.2.50 ProxyJump bastion.corp.example.com User ubuntu מתחבר בצורה שקופה דרך ה-bastion. המפתח של המשתמש לעולם לא עוזב את המכונה שלו — סוכן ה-SSH מעביר רק את החתימה הספציפית, לא את המפתח עצמו.

אילו הגדרות מאבטחות את ה-bastion?

ה-bastion הוא מטרה. יש לנעול אותו. הגדרות sshd_config מומלצות:

פרמטר ערך מטרה
ssh prod-db-01 22 (או לא סטנדרטי) חשאיות — פורט לא סטנדרטי מפחית רעש בוטים
Port לא מניעת גישת root ישירה
PermitRootLogin לא מפתחות בלבד
PasswordAuthentication כן חובה
PubkeyAuthentication ssh-users הגבלת קבוצה
AllowGroups VERBOSE רישום מפורט
LogLevel 3 הגבלת ניסיונות התחברות
MaxAuthTries 300 בדיקת פעילות
ClientAliveInterval 2 ניתוק פגישות בטלות

חומת אש: SSH נכנס רק מטווחי IP של משרד או VPN. ב-AWS, מדובר ב-Security Group המאפשר פורט 22 רק מכתובות IP ארגוניות. יציאה — רק לרשתות הפנימיות של הייצור.

# AWS Security Group через awscli
aws ec2 authorize-security-group-ingress \
    --group-id sg-bastion-id \
    --protocol tcp --port 22 \
    --cidr 203.0.113.0/24 # корпоративный IP
# Запрет всего остального входящего
aws ec2 revoke-security-group-ingress \
    --group-id sg-bastion-id \
    --protocol tcp --port 22 \
    --cidr 0.0.0.0/0

איך מוסיפים MFA על ה-bastion?

MFA דרך מודול PAM google-authenticator:

apt install libpam-google-authenticator
# /etc/pam.d/sshd — добавить в начало
auth required pam_google_authenticator.so nullok
# /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

המשתמש עובר שני גורמים: מפתח ציבורי + TOTP. ClientAliveCountMax מאפשר למשתמשים ללא TOTP מוגדר להתחבר זמנית — מוסר לאחר פריסה מלאה.

השוואת שיטות גישת SSH

שיטה אבטחה מורכבות נוחות משתמש ביקורת
SSH ישיר לכל שרת נמוכה (נקודות כניסה רבות) נמוכה גבוהה לא
OpenVPN + SSH גבוהה (הצפנת מנהרה) בינונית בינונית (נדרש לקוח VPN) לא
העברת סוכן בינונית (מפתח על ה-bastion) נמוכה גבוהה לא
Bastion + ProxyJump גבוהה (מפתח לעולם לא עוזב את הלקוח) נמוכה גבוהה (שקוף) כן (יומני sshd)

מה כלול בעבודת הקמת ה-bastion

  • ניתוח תוכנית הגישה הנוכחית ועיצוב ארכיטקטורה עבור התשתית שלך (AWS/GCP/Yandex Cloud).
  • הגדרת sshd_config מחוזקת עם המלצות CIS.
  • שילוב MFA (Google Authenticator, Duo Security).
  • רישום מרכזי (Loki, ELK) עם מדיניות שמירה.
  • תבניות Ansible/Terraform לפריסה אוטומטית.
  • תיעוד (runbook, דיאגרמת גישה).
  • הדרכת צוות (איך להוסיף משתמשים חדשים, איך לעבוד עם ProxyJump).
טעויות נפוצות בהקמת bastion - שימוש בהעברת סוכן במקום ProxyJump — המפתח מגיע ל-bastion. - סיסמה חלשה או גישת סיסמה לא סגורה. - חוסר רישום — אי אפשר לחקור אירועים. - התעלמות מ-MFA למנהלים.

לוחות זמנים ושלבי יישום

שלב משך תוצאה
ניתוח ועיצוב יום אחד דיאגרמת גישה, בחירת טווח IP
פריסת bastion (AWS/GCP) יום אחד Bastion פעיל עם רשימת IP מותרת ו-sshd מחוזק
הגדרת MFA ו-ProxyJump 1–2 ימים משתמשים מתחברים עם אימות דו-שלבי
רישום מרכזי יום אחד יומני פגישות נשלחים למערכת מרכזית
אוטומציה (Ansible/Terraform) 1–2 ימים פריסה ניתנת לחזרה

Bastion בסיסי ב-AWS/GCP עם רשימת IP מותרת, sshd מחוזק ותצורות ProxyJump לצוות מוקם ביום אחד. עם MFA, רישום מרכזי ואוטומציית ansible — 2–3 ימים.

למה לפנות אלינו?

הקמנו מארחי bastion ל-20+ לקוחות — מסטארטאפים ועד פרויקטי מסחר אלקטרוני גדולים. אנו משתמשים רק בתבניות מוכחות: ProxyJump במקום העברת סוכן, Google Authenticator PAM ל-MFA, RSYSLOG לאיסוף יומנים מרכזי. אנו מבטיחים שמפתחות המשתמשים לעולם לא יופיעו על ה-bastion וכל הפגישות מתועדות. קבל ייעוץ לפרויקט שלך — נבחן את תוכנית הגישה הנוכחית שלך ונציע פתרון מותאם.