שרת האפאצ'י הוא אחד מהשרתים הפופולריים והמשמשים ביותר לשרת קבצים ואתרים. זה קל להתקין ולהגדיר כדי לענות על דרישות האירוח שלך. אולם, ההגדרות ברירת המחדל אינן מאובטחות מספיק כדי לספק את ההגנה הנדרשת לאתר שלך.
במדריך זה, אנו מסתכלים על כמה טיפים ותחבורות לחיזוק שרת האפאצ'י שלך.
1. כיצד להסתיר את מידע גרסת האפאצ'י והמערכת ההפעלה
ברירת המחדל, שרת האפאצ'י מציג את גרסתו במקרה שאתה גולש לכתובת שגויה של אתר. להלן דוגמה לעמוד שגיאה שמציין שהדף אינו נמצא באתר. השורה האחרונה מציינת את גרסת האפאצ'י, מערכת ההפעלה, כתובת ה-IP והפורט שבו הוא מאזין.

זה לעולם לא רע להציג את המידע של שרת האתר שלך מאחר וזה עשוי להיות מתנה טובה להאקרים במשימת הרקוניזנס שלהם. כדי להוסיף שכבת אבטחה ולהקשות על האקרים, מומלץ להסתיר את מידע שרת האתר.
כדי לעשות זאת, פתח את קובץ ההגדרה המוגדר ברירת המחדל של אפאצ'י על הפצות המבוססות על Debian.
$ sudo vim /etc/apache2/apache2.conf
מערכות המבוססות על RHEL כמו RHEL, Fedora, CentOS, Rocky, ו־AlmaLinux.
$ sudo vim /etc/httpd/conf/httpd.conf
הוסף את השורות הבאות בסופו של הקובץ.
ServerTokens Prod ServerSignature Off
שמור את השינויים ואתחל שוב את שרת האינטרנט של Apache.
$ sudo systemctl restart apache2 [On Debian, Ubuntu and Mint] $ sudo systemctl restart httpd [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
עכשיו טען מחדש את האתר והפעם, מידע על שרת האינטרנט לא יוצג.

2. נטרל את המצב המורשה ב־Apache לרשימת ספריות
ברירת המחדל, Apache מאפשר רשימת ספריות, ומבקרים עשויים לראות קבצים או ספריות שיש לך בספריית ה־Document Root.
כדי להדגיש זאת, ניצור ספרייה בשם test.
$ sudo mkdir -p /var/www/html/test
בשלב הבא, ננווט אל הספרייה וניצור מספר קבצים.
$ cd /var/www/html/test $ sudo touch app.py main.py
עכשיו, אם נגיע לכתובת ה־URL, http://localhost/test
, נוכל לראות את רשימת הספרייה.

כדי לנטרל את רשימת הספריות, נכנס לקובץ התצורה הראשי של Apache ונחפש את המאפיין 'Directory'. נגדיר את הפרמטר 'Options' ל־'-Indexes'
כפי שמוצג.
<Directory /opt/apache/htdocs> Options -Indexes </Directory>
טען מחדש את Apache, והפעם כאשר אתה מבקר בכתובת URL, הספריות לא יוצגו יותר.

3. עדכן באופן תדיר את Apache
תמיד מומלץ לעדכן את כל היישומים שלך, מאחר והיישומים העדכניים מגיעים עם תיקוני באגים ותיקוני אבטחה שמתקנים חולשות תחתונות הנמצאות בגרסאות ישנות של התוכנה.
לכן, מומלץ לשדרג באופן קבוע את היישומים שלך לגרסאות העדכניות ביותר.
$ sudo apt update && sudo apt upgrade [On Debian, Ubuntu and Mint] $ sudo dnf upgrade [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]

4. שימוש בהצפנת HTTPS על שרת אפאצ'י
אפאצ'י, כברירת מחדל, משתמש בפרוטוקול HTTP שהוא פרוטוקול חלש ובלתי מאובטח שנוטה להירגעת סודיות. על מנת לשפר את האבטחה של האתר שלך ובמיוחד לשפר את דירוגי ה-SEO שלך בגוגל, כדאי להצפין את האתר שלך באמצעות תעודת SSL.
בכך הוא מחליף את הפרוטוקול הברירת מחדל של HTTP ב־HTTPS, ובכך קשה יותר לכל אחד להתפנק ולפענח את התקשורת שנשלחת ומתקבלת מהשרת.
צפה באיך לאבטח את שרת האינטרנט של אפאצ'י באמצעות תעודת SSL של Let's Encrypt על לינוקס.
- איך לאבטח את שרת האינטרנט של אפאצ'י באמצעות תעודת SSL של Let's Encrypt ב־RHEL
- איך לאבטח את שרת האינטרנט של אפאצ'י באמצעות תעודת SSL של Let's Encrypt באובונטו ובדביאן
5. הפעלת הצפנת HSTS המחמירה את התעבורה של HTTP עבור אפאצ'י
על מנת להצפין את האתר שלך עם תעודת TLS/SSL, שקול ליישם את המנגנון הבטיחותי של HSTS מעל ל־HTTPS.
HTTP Strict Transport Security (HSTS) הוא מנגנון מדיניות המגן על אתרי האינטרנט מהתקפות אמצע-אדם והשלכת עוגיות. זה קורה כאשר התוקפים מורידים את פרוטוקול ה־HTTPS לפרוטוקול הבלתי מאובטח של HTTP.
HSTS מאפשר לשרת האינטרנט להצהיר בצורה מחמירה כי דפדפני האינטרנט צריכים להתקשר אליו רק דרך פרוטוקול ה־HTTPS, ולעולם לא דרך פרוטוקול ה־HTTP.
כדי להפעיל את HSTS, ודא שהאתר שלך רץ על HTTPS ושיש לו תעודת TLS/SSL תקפה.
לאחר מכן, הפעל את מודול הכותרות עבור אפאצ'י:
$ sudo a2enmod headers
לאחר מכן הפעל מחדש את אפאצ'י כדי להחיל את השינויים.
$ sudo systemctl restart apache2
לאחר מכן, גש לקובץ התצורה של מארח הווירטואלי של הדומיין שלך.
$ sudo vim /etc/apache2/sites-available/mydomain.conf
לאחר מכן, הוסף שורה זו בתוך הבלוק <VirtualHost *:443>
:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
זה נראה כך.
<VirtualHost *:443> # ..... # .... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost>
הפרמטר max-age מורה לדפדפני האינטרנט לגשת לאתר שלך באמצעות HTTPS לשנה הבאה (31536000 = 1 שנה).
לבסוף, הפעל מחדש את אפאצ'י כדי להפעיל את מדיניות ה־HSTS.
$ sudo systemctl restart apache2
6. הפעלת HTTP/2 על אפאצ'י
בשנת 2015, יצא HTTP/2, שהוא גרסה חדשה של פרוטוקול ה־HTTP המטריד לטובה שאליו המייצרים של HTTP/1.1 לא פיקחו על מנת לפתור או לטפל בבעיות מרובות.
HTTP/1.1 עדיין בשימוש רחב, הוא משווק עם בעיות ביצועים המשותפות לשימוש בחיבורי TCP מרובים לעיבוד בקשות מרובות מדפדפן, מה שמביא להוצאת משאבים גבוהה בצד הלקוח ולסחיפת ביצועי הרשת.
כשיושרו היישומים במורכבותם ובפונקציונליותם, HTTP/2 נוצר כדי לפתור את החסרונות של HTTP/1.1 הכוללים כותרות HTTP ארוכות, מהירויות טעינת דפי האינטרנט איטיות, וסחיפת ביצועים כללית.
HTTP/2 מספק יותר הגנה ופרטיות ממקדמו. גם חשוב יותר, היא משפרת את הביצועים דרך השימוש בזרמים מרובים של נתונים. בעזרת HTTP/2 חיבור TCP יחיד מבטיח שימוש יעיל ברוחב הפס, גם כאשר משדרים זרמים מרובים של נתונים.
בדוק כיצד לאפשר HTTP/2 בשרת האינטרנט Apache באמצעות:
7. הגבלת גישה לתיקיות רגישות באפאצ'י
אמצעי אבטחה נוסף שיתכן ותרצה להחיל הוא להגביל גישה לתיקיות שעשויות להכיל מידע רגיש כגון נתוני משתמש, לוגים, וקבצי הגדרות.
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html # Other virtual host settings <Directory /var/www/html/sensitive_directory> Require all denied </Directory> </VirtualHost>
בהגדרה שניתן להעתיק למעלה, Require all denied
מסרב גישה לכל מי שמנסה לגשת לקבצים בתיקייה /תיקיית_רגישה.
שמור את השינויים וצא מהקובץ. לאחר מכן, הפעל מחדש את אפאצ'י כדי שהשינויים ייכנסו לתוקף.
נטרלו את ההוראה ServerSignature ב-Apacheההוראה ServerSignature בקובץ התצורה של Apache מוסיפה כותרת תחתונה למסמך שיוצר השרת המכילה מידע אודות התצורה של השרת כגון הגרסה והמערכת הפעלה עליה הוא פועל. חשיפת פרטים קריטיים אודות השרת האינטרנט שלך לפעילות זדונית תגביר באופן משמעותי את הסיכוי לתקיפה.
כדי למנוע חשיפת מידע כזה, עליך לנטרל את ההוראה הזו בקובץ התצורה של Apache:
ServerSignature Off
שמור את השינויים ואתחל שוב את Apache כדי שהשינויים יכנסו לתוקף.
$ sudo systemctl restart apache2
9. הגדירו את ההוראה 'ServerTokens' ל-'Prod'
ההוראה 'ServerTokens' שולטת במידע שהשרת שולח כולל גרסת Apache (גרסה ראשית ומשנית), מערכת ההפעלה וסוג השרת האינטרנט שפועל.
המינימום של מידע שתרצה לחשוף לציבור הוא שהשרת האינטרנט הוא Apache. כל דבר אחר יחשוף את השרת שלך לתקיפות פוטנציאליות. לכן, מומלץ להגדיר את ההוראה 'ServerTokens' בקובץ התצורה של Apache ל-'prod'.
ServerTokens Off
כתמיד, שמור את השינויים וודא שאתה מאתחל מחדש את Apache.
10. אבטחו את Apache עם Fail2ban
Fail2ban הוא אפליקציית מניעת פריצות קוד פתוחה שמגנה על מערכות Linux מפני איומים חיצוניים כולל התקפות DoS והתקפות כפתור-אלץ. הוא פועל על ידי מעקב קבוע אחרי יומני המערכת לפעילות זדונית ומאסר מארחים שתואמים תבניות שמדמות התנהגות של התקפה.
Fail2ban ניתן להגדיר להגן על Apache מהתקפות DoS על ידי מעקב קבוע בלוגים של Apache עבור ניסיונות כניסה נכשלים וחסימה זמנית של כתובות IP מפריצות.
בדוק איך להתקין Fail2ban על Linux באמצעות:
11. השבתת מודולים לא מיותרים
מודולי Apache הם פשוט תוכניות שמורכבות כדי להרחיב את פונקציונליות שרת האינטרנט. הפונקציות שמורכבות על ידי המודולים כוללות אימות בסיסי, אחסון מטמון תוכן, הצפנה, אבטחה, ועוד.
תמיד מומלץ להשבית את כל המודולים שאינם בשימוש כרגע כדי למזער את הסיכויים להיות קורבן לתקיפה.
כדי להציג את כל המודולים שהופעלו, הרץ את הפקודה
$ apache2ctl -M

כדי לבדוק האם מודול מסוים מופעל, לדוגמה, מודול ההפניה, הרץ את הפקודה.
$ apache2ctl -M | grep rewrite

כדי להשבית את המודול, הרץ את הפקודה:
$ sudo a2dismod rewrite

12. השתמש במודולי mod_security ו־mod_evasive כדי לאבטח את Apache
ניתן להפעיל את מודולי mod_security ו־mod_evasive כדי לאבטח את Apache מהתקפות כוח גס או התקפות DDoS.
- מודול mod_security פועל ככמו חומת אש ליישומי אינטרנט (WAF) וחוסם תעבורה חשודה ולא רצויה לאתר שלך.
- מודול mod_evasive מגן על השרת שלך מתקיפות כוח גס והתקפות שירות (DoS).
למד עוד כיצד להגן על Apache באמצעות מודולי mod_security ו־mod_evasive־.
13. הגבלת שירותים לא רצויים ב־Apache
כדי להבטיח את Apache נוסיף שקיפות לשירותים מסוימים כמו קישורי סמלים וביצוע CGI אם אינם נדרשים כרגע. כברירת מחדל, Apache עוקב אחר סמלי קישור, נוכל לכבות את התכונה הזו כמו גם את התכונה -Includes
ו־CGI בשורה אחת
כדי לעשות זאת, נוסיף את השורה '-ExecCGI -FollowSymLinks -Includes'
עבור ההוראה ‘Options’ בקטע ה־‘Directory’־.
<Directory /your/website/directory> Options -ExecCGI -FollowSymLinks -Includes </Directory>
ניתן גם להשיג זאת ברמת ספרייה. לדוגמה, כאן, אנחנו מכבים Includes ו־Cgi בפעולת קובץ עבור הספרייה “/var/www/html/mydomain1”.
<Directory "/var/www/html/mydomain1"> Options -Includes -ExecCGI </Directory>
שמור את השינויים ואתחל את Apache מחדש.
14. הגבלת גודל העלאת הקבצים ב־Apache
דרך נוספת לאבטחת שרת האינטרנט שלך היא להגביל את גודל כלל הבקשות ה־HTTP הנשלחות לשרת האינטרנט מלקוח. תוכל להגדיר את זה בהקשר של השרת, לפי ספרייה, לפי קובץ או לפי מיקום
למשל, אם ברצונך לאפשר העלאת קבצים לספרייה מסוימת, לדוגמה /var/www/domain.com/wp-uploads ולהגביל את גודל הקובץ שנטען ל־4M = 4194304Bytes, תוסיף את ההוראה הבאה לקובץ התצורה של Apache או לקובץ .htaccess.
<Directory "/var/www/domain.com/wp-uploads"> LimitRequestBody 4194304 </Directory>
שמור את השינויים וזכור לאתחל את אפאצ'י.
אתה יכול להגדיר את זה בהקשר של השרת, לפי ספרייה, לפי קובץ או לפי מיקום. ההנחיה מסייעת למנוע התנהגות של בקשות לקוחות לא תקינה שלפעמים יכולה להיות סוג של התקפת סירוב שירות (DoS).
15. הפעלת לוגים באפאצ'י
הלוגים מספקים את כל הפרטים על בקשות לקוח וכל מידע אחר הנוגע לביצועי השרת שלך. זה מספק מידע שימושי במקרה שמשהו לא בסדר. הפעלת לוגים באפאצ'י, במיוחד בקבצי מארח וירטואליים, מאפשרת לך לאתר בעיה במקרה שמשהו לא בסדר עם השרת האינטרנט.
כדי להפעיל לוגים, עליך לכלול את מודול ה-mod_log_config, שמספק שני הנחיות ראשיות ללוגים.
- ErrorLog – מציין את נתיב קובץ הלוג שגיאות.
- CustomLog – יוצר ומעצב קובץ לוג.
אתה יכול להשתמש בתכונות אלה בקובץ מארח וירטואלי במקטע המארח הוירטואלי כדי להפעיל לוגים.
<VirtualHost 172.16.25.125:443> ServerName example.com DocumentRoot /var/www/html/example/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
ההנחיה {APACHE_LOG_DIR}
במערכות Debian מוגדרת כנתיב /var/log/apache2.
16. הפעלת אפאצ'י כמשתמש וקבוצה נפרדים
הפעלת אפאצ'י כמשתמש וקבוצה נפרדים היא פרקטיקה אבטחתית נפוצה. על ידי כך, תוכל לבדל את תהליך שרת האינטרנט מתהליכי מערכת אחרים ולהפחית נזקים אפשריים אם השרת האינטרנט נפגע.
ראשית, תרצה ליצור משתמש וקבוצה חדשים במיוחד עבור אפאצ'י.
$ sudo groupadd apachegroup $ sudo useradd -g apachegroup apacheuser
לאחר מכן, תצטרך לערוך את קובץ התצורה של אפאצ'י כדי לציין את המשתמש והקבוצה החדשים.
User apacheuser Group apachegroup
מאחר שאתה משנה את המשתמש והקבוצה שבהם אפאצ'י פועל, עשוי להיות עליך לעדכן את הבעלות על ספריות וקבצים באינטרנט כדי להבטיח שאפאצ'י עדיין יכול לקרוא אותם.
$ sudo chown -R apacheuser:apachegroup /var/www/html
לאחר שעשית את השינויים הללו, אתה יכול לאתחל את אפאצ'י כדי ליישם אותם:
$ sudo systemctl restart httpd # For RHEL/CentOS $ sudo systemctl restart apache2 # For Debian/Ubuntu
17. הגנה מפני התקפות DDoS וחיזוק
והיא נכונה שלא ניתן להגן לחלוטין על האתר שלך מפני התקפות DDoS. אך, כאן יש כמה הנחיות שיכולות לעזור לך להוזיל ולנהל אותן.
- TimeOut – ההנחיה הזו מאפשרת לך לציין את משך הזמן שהשרת ימתין לאירועים מסוימים להשלמתם לפני שהוא יחזיר שגיאה. הערך המוגדר כברירת מחדל הוא 300 שניות. עבור אתרים שעלולים להיתקל בהתקפות DDoS, מומלץ לשמור ערך זה נמוך. אך, הגדרת הערך המתאימה תלויה במידת הבקשות הטבעיות שהאתר שלך מקבל. שים לב: ערך זמן נמוך עשוי לגרום לבעיות עם סקריפטי CGI כמה.
- MaxClients – ההנחיה הזו מגדירה את המגבלה על מספר החיבורים שיכולים לשרת בו זמנית. כל חיבורים חדשים מעבר למגבלה הזו יופנו לתור. זמין בשני ה- MPMs של פריפורק ו- עובד. הערך המוגדר כברירת מחדל הוא 256.
- KeepAliveTimeout – ההנחיה הזו מציינת את משך הזמן שהשרת ימתין לבקשה הבאה לפני שהוא יסגור את החיבור. הערך המוגדר כברירת מחדל הוא 5 שניות.
- LimitRequestFields – ההנחיה הזו מגבילה את מספר שדות הכותרת בבקשת HTTP שמקובלים על ידי לקוחות. הערך הברירת מחדל הוא 100. אם התקפות DDoS מתרחשות עקב מספר יתר של כותרות בקשת HTTP, מומלץ להפחית את הערך הזה.
- LimitRequestFieldSize – ההנחיה הזו מגדירה מגבלת גודל עבור כותרת בקשת HTTP.
18. בצע בדיקות שורש איומים רגילות
דרך נוספת להגנה על שרת האינטרנט שלך היא בביצוע בדיקות קבועות של חולשות אבטחה. זה עוזר לזהות פתחים אבטחה פוטנציאליים שעשויים להיות מושתלים על ידי האקרים כדי לקבל גישה לקבצים רגישים או להכניס תוכנות זדוניות.
כלי בדיקות חולשות אבטחה גם עוזרים לזהות הגדרות תצורה לא בטוחות ועוזרים בבדיקה לצורך עמידות. כלי בדיקות חולשות אבטחה פופולריים כוללים את Acutenix, Nessus, Nexpose, Sucuri, ועוד רבים.
מסקנה
אלו הם כמה מטיפי החזקת Apache שניתן ליישם על השרת שלך כדי לספק שכבת הגנה נוספת ולשמור על פריצות במרחק מבט.