הסופר בחר ב-ארגון הקצה האלקטרוני לקבלת תרומה כחלק מתוכנית כתיבה בעבור תרומות.
הקדמה
Cloudflare היא שירות שמתיישב בין המבקר ובין שרת האתר של בעל האתר, פועל כפרוקסי הפוך לאתרי אינטרנט. Cloudflare מספקת רשת של תפוצה של תוכן (CDN), כמו גם שירותי נטרול DDoS ושרתי שמות דומיין מבוזרים.
Nginx הוא שרת אינטרנט פופולרי שאחראי על אירוח של מספר האתרים הגדולים והמושגים ביותר באינטרנט. נפוץ לארגונים לשרת אתרים בעזרת Nginx ולהשתמש ב-Cloudflare כ-CDN וספק DNS.
במדריך זה, תאבטחו את האתר שלכם שמופעל על ידי Nginx עם תעודת CA מהמקור של Cloudflare ולאחר מכן תגדירו את Nginx להשתמש בבקשות מאומתות. היתרונות של שימוש בהגדרה זו הם שאתם נהנים מ-CDN של Cloudflare ופתרון DNS מהיר בזמן שוודאות שכל החיבורים עוברים דרך Cloudflare. זה מונע כל בקשות זדוניות מלהגיע לשרת שלך.
דרישות מוקדמות
כדי להשלים את המדריך הזה, תצטרך את הבא:
- שרת Ubuntu 22.04 שהותקן באמצעות מדריך הגדרת שרת התחלתי של Ubuntu 22.04, כולל משתמש לא-רוט בעל הרשאות
sudo
וגישה לגישור. - Nginx שמותקן על השרת שלך. ניתן לעקוב אחרי המדריך שלנו על כיצד להתקין את Nginx על Ubuntu 22.04.
- A Cloudflare account.
- A registered domain added to your Cloudflare account that points to your Nginx server. Our guide on how to mitigate DDoS attacks against your website with Cloudflare can help you set this up. Our introduction to DNS terminology, components, and concepts can also provide assistance.
- בלוק שרת Nginx מוגדר עבור הדומיין שלך, שבאפשרותך להגדיר על ידי התאמה אישית של שלב 5 של איך להתקין Nginx על Ubuntu 22.04.
שלב 1 — יצירת תעודת TLS של Origin CA
תעודת ה-TLS של Origin CA של Cloudflare מאפשרת לך ליצור תעודה חינמית שנחתמת על ידי Cloudflare כדי להתקין על שרת ה-Nginx שלך. על ידי שימוש בתעודה ה-TLS שנוצרת על ידי Cloudflare, תוכל לאבטח את החיבור בין שרתי Cloudflare לשרת ה-Nginx שלך.
כדי ליצור תעודה עם Origin CA, התחברו לחשבון ה-Cloudflare שלכם בדפדפן אינטרנט. בחרו בדומיין שברצונכם לאבטח ונווטו לסעיף SSL/TLS בלוח המחוונים של Cloudflare שלכם. משם, נווטו לכרטיסייה שרת מקור ולחצו על הכפתור צור תעודה:
השארו את האפשרות הברירת מחדל של צור מפתח פרטי ובקשה CSR עם Cloudflare נבחרת.
לחצו על צור ותראו תיבת דו-שיח עם תעודת מקור ו- מפתח פרטי. עליכם להעביר גם את תעודת המקור והמפתח הפרטי מ-Cloudflare לשרת שלכם. מסיבות אבטחה, מידע על ה- מפתח הפרטי לא יוצג שוב, לכן העתיקו את המפתח לשרת שלכם לפני לחיצה על אישור.
תשתמשו בתיקייה /etc/ssl
על השרת כדי להחזיק את קבצי תעודת המקור והמפתח הפרטי. התיקייה כבר קיימת בשרת.
למדו לראשונה את התוכן של תעודת המקור המוצגת בתיבת הדו-שיח בדפדפן שלכם.
אז, על השרת שלכם, פתחו את /etc/ssl/cert.pem
בעורך טקסט המועדף עליכם:
הדביקו את תוכן התעודה לתוך הקובץ. לאחר מכן, שמרו וצאו מהעורך. אם אתם משתמשים ב- nano
, לחצו על Ctrl+X
, אז כאשר מבקשים, ייאשרו באמצעות לחיצה על Y
ואז על Enter.
אז חזרו לדפדפן שלכם והעתיקו את תוכן ה- מפתח הפרטי. פתחו את הקובץ /etc/ssl/key.pem
לעריכה:
הדביקו את המפתח הפרטי לתוך הקובץ, שמרו את הקובץ וצאו מהעורך.
הערה: לעיתים, כאשר אתה מעתיק את התעודה והמפתח מלוח המחוונים של Cloudflare ומדביק אותם בקבצים הרלוונטיים בשרת, שורות ריקות מתווספות. Nginx יטפל בתעודות ובמפתחים כאלו כלא תקינים, לכן וודא שאין שורות ריקות בקבצים שלך.
אזהרה: תעודת ה-CA של מקור של Cloudflare נאמתת רק על ידי Cloudflare ולכן צריך להשתמש בה רק על ידי שרתי מקור שמחוברים פעילות ל-Cloudflare. אם באיזשהו שלב אתה משהה או מבטל את Cloudflare, תעודת ה-CA של המקור שלך תזרוק שגיאת תעודה לא מהימנה.
עכשיו שהעתקת את קבצי המפתח והתעודה לשרת שלך, עליך לעדכן את ההגדרות של Nginx כדי להשתמש בהם.
שלב 2 — התקנת תעודת ה-CA של מקור ב-Nginx
בחלק הקודם, יצרת תעודת מקור ומפתח פרטי באמצעות לוח המחוונים של Cloudflare ושמרת את הקבצים בשרת שלך. עכשיו עליך לעדכן את הגדרות ה-Nginx של האתר שלך כדי להשתמש בתעודת המקור ובמפתח הפרטי כדי לאבטח את החיבור בין שרתי Cloudflare לשרת שלך.
ראשית, וודא ש-UFW תאפשר תעבורת HTTPS. הפעל את Nginx Full
, שיפתח גם את הפורט 80
(HTTP) וגם את הפורט 443
(HTTPS):
עכשיו טען מחדש אתת UFW:
לבסוף, בדוק שהחוקים החדשים שלך מאושרים וש-UFW פעיל:
תראה פלט כזה:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
עכשיו אתה מוכן להתאים את בלוק השרת של ה-Nginx שלך. ה-Nginx יוצר בלוק שרת ברירת מחדל במהלך ההתקנה. הסר אותו אם הוא עדיין קיים, מכיוון שכבר הגדרת בלוק שרת מותאם אישית עבור הדומיין שלך:
בשלב הבא, פתח את קובץ התצורה של ה-Nginx עבור הדומיין שלך:
הקובץ צריך להיראות כך:
תשנה את קובץ התצורה של ה-Nginx כך:
- האזן לפורט
80
והפנה את כל הבקשות להשתמש ב-https
. - האזן לפורט
443
והשתמש בתעודת מקור ובמפתח פרטי שנוספו בחלק הקודם.
שנה את הקובץ כך שיראה כך:
שמור את הקובץ וצא מהעורך.
בשלב הבא, בדוק כדי לוודא שאין שגיאות תחביר באף אחד מקבצי התצורה של ה-Nginx שלך:
אם לא מצאת בעיות, אתחל את ה-Nginx כדי לאפשר את השינויים שלך:
עכשיו עבור ללוח המחוונים של Cloudflare בקטע SSL/TLS, נווט אל לשונית סקירה, ושנה את מצב ההצפנה SSL/TLS ל-מלא (מחמיר). זה מודיע ל-Cloudflare להצפין תמיד את החיבור בין Cloudflare לשרת ה-Nginx שלך.
עכשיו בקר באתר שלך ב-https://שם_הדומיין_שלך
כדי לוודא שהוא מוגדר כראוי. תראה את דף הבית שלך מוצג, והדפדפן ידווח שהאתר מאובטח.
כדי להציג את פרטי התעודה שלך, נגיש את כלי הפיתוח של הדפדפן שלך, בחר בכרטיסיית אבטחה, ואז בחר צפה בתעודה.
הערה: עשויים להתבקש לך לשים לב שבתעודה שלך אין רשומה ל-Cloudflare כמנפיק. זה בגלל ש-Cloudflare עשויים להשתמש ברשויות תעודה אחרות, כגון Let’s Encrypt. לרשימה מלאה, בדוק את תיעוד המוצר של Cloudflare לרשויות תעודה.
בקטע הבא, תגדיר אימות מקור מאומת כדי לוודא ששרת המקור שלך באמת מדבר אל Cloudflare ולא לשרת אחר. על ידי כך, Nginx יוגדר לקבל רק בקשות שמשתמשות בתעודה לקוח תקפה מ-Cloudflare; כל הבקשות שלא עברו דרכו של Cloudflare ייזורקו.
שלב 3 — הגדרת אימות מקור מאומת
תעודת המקור של Cloudflare תעזור ל-Cloudflare לוודא שהיא מדברת עם השרת המקור הנכון. שלב זה ישתמש באימות לקוח TLS כדי לוודא ששרת המקור שלך ב-Nginx מדבר עם Cloudflare.
במשאב TLS המאומת על ידי לקוח, שני הצדדים מספקים תעודת אימות. שרת המקור מוגדר לקבל בקשות שמשתמשות בתעודת לקוח תקפה מ-Cloudflare בלבד. בקשות שלא עברו דרך Cloudflare יישלכו מאחר שאין להן את תעודת Cloudflare. זה אומר שתוקפים לא יכולים להתחנן את אמצעי האבטחה של Cloudflare ולהתחבר ישירות לשרת ה-Nginx שלך.
Cloudflare מציגה תעודות שנחתמות על ידי CA עם התעודה הבאה:
-----BEGIN CERTIFICATE-----
MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
+4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
fVQ6VpyjEXdiIXWUq/o=
-----END CERTIFICATE-----
ניתן גם להוריד את התעודה ישירות מ-תיעוד ה-Cloudflare.
העתק את התעודה זו.
לאחר מכן, צור את הקובץ /etc/ssl/cloudflare.crt
כדי להחזיק את תעודת ה-Cloudflare:
הוסף את התעודה לקובץ. לאחר מכן, שמור את הקובץ וצא מהעורך.
כעת עדכן את התצורה של Nginx כך שתשתמש באימות מקור מאומת ב-TLS. פתח את קובץ התצורה עבור הדומיין שלך:
הוסף את ההפנייה ssl_client_certificate
ואת ההפנייה ssl_verify_client
כפי שמוצג בדוגמה הבאה:
שמור את הקובץ וצא מהעורך.
באשר לשלב הבא, בדוק את Nginx כדי לוודא שאין שגיאות תחביר בתצורת ה-Nginx שלך:
אם לא נמצאו בעיות, הפעל מחדש את Nginx כדי להפעיל את השינויים שלך:
לסיים את ההפעלת משיכות מאומתות, פתח את החלק SSL/TLS בלוח הבקרה של Cloudflare, נווט לכרטיסיית שרת מקור והפעל את אפשרות משיכות מקור מאומתות.
עכשיו בקר באתר האינטרנט שלך בכתובת https://שם_הדומיין_שלך
כדי לוודא שהוגדר כראוי. כפי שקרה קודם, תראה את עמוד הבית.
כדי לוודא שהשרת שלך יקבל רק בקשות שנחתמו על ידי תעודת ה-CA של Cloudflare, השבת את אפשרות משיכות מקור מאומתות ואז טען מחדש את האתר שלך. צפית לקבלת הודעת שגיאה זו:
השרת המקור שלך מביא שגיאה אם תעודת ה-CA של Cloudflare לא חתומה על בקשה.
הערה: רוב הדפדפנים יאכסנו בקשות, לכן כדי לראות את השינוי הנ"ל, ניתן להשתמש במצב דפדפן פרטי או בכלי דפדפן פרטי. כדי למנוע מ-Cloudflare לאחסן בקשות בזמן ההתקנה של האתר שלך, נווט לסקירה כללית בלוח הבקרה של Cloudflare והפעל את מצב הפיתוח.
עכשיו שאתה יודע שהכל עובד כראוי, חזור לחלק SSL/TLS בלוח הבקרה של Cloudflare, נווט לכרטיסיית שרת מקור והפעל מחדש את אפשרות משיכות מקור מאומתות כדי להפעיל אותה שוב.
מסקנה
במדריך זה, אתה מבטיח את האתר שלך המופעל על Nginx על ידי הצפנת תעבורה בין Cloudflare לשרת Nginx באמצעות תעודת Origin CA מ-Cloudflare. לאחר מכן אתה מגדיר Authenticated Origin Pulls על השרת Nginx כדי לוודא שהוא מקבל רק בקשות משרתי Cloudflare, מונע כל אחד אחר מהתחברות ישירה לשרת Nginx.