סדרת RHCSA: התקנת, הגדרה ואבטחת שרת אינטרנט ו-FTP – חלק 9

A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.

A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.

השרת web הזמין ב- RHEL 7 הוא גרסה 2.4 של שרת HTTP Apache. بالنسبة לשרת FTP, נשתמש ב- Very Secure Ftp Daemon (aka vsftpd) כדי להגדיר חיבורים מאובטחים על ידי TLS.

RHCSA: Installing, Configuring and Securing Apache and FTP – Part 9

במאמר זה נסביר כיצד להתקין, להגדיר ולבטח שרת אינטרנט ושרת FTP ב- RHEL 7.

התקנת אפאצ'י ושרת FTP

במדריך זה נשתמש בשרת RHEL 7 עם כתובת IP סטטית של 192.168.0.18/24. כדי להתקין את אפאצ'י ואת VSFTPD, פעלו לפי הפקודה הבאה:

# yum update && yum install httpd vsftpd

כאשר ההתקנה הושלמה, שני השירותים יהיו כבולים בתחילה, אז נצטרך להפעיל אותם באופן ידני בינתיים ולפתוח אותם באופן אוטומטי החל מה阿יתחול הבא:

# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd

בנוסף, עלינו לפתוח את הנמלים 80 ו- 21, בהן מקשיבים דמונות ה- web ו- ftp, בהתאמה, על מנת לאפשר גישה לשירותים אלה מהחוץ:

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload

על מנת לוודא ששרת ה- web פועל כראוי, פתחו את הדפדפן שלכם והקישו את כתובת ה- IP של השרת. עליכם לראות את דף הבדיקה:

Confirm Apache Web Server

באשר לשרת FTP, עלינו להגדיר אותו עוד רגע, ואז נבדוק שהוא פועל כמצופה.

הגדרת ואבטחת שרת web של אפאצ'י

קובץ ההגדרה העיקרי של אפאצ'י נמצא ב- /etc/httpd/conf/httpd.conf, אך הוא עלול לסמוך על קובצי משנה הנמצאים בתוך /etc/httpd/conf.d.

למרות שההגדרה המקובלת צריכה להיות מספקת עבור רוב המקרים, אדם טוב להתמודד עם כל האפשרויות הזמינות כפי שתיארה בה 文档 הרשמי.

כמו תמיד, בואו בעזרת משרד הגדרות הראשי למעשה לעותק גיבוי:

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

ואחר כך פתחו אותו במערך טקסט המועדף עליכם וחפשו אחר המשתנים הבאים:

  1. ServerRoot: התוך המיקום בו שמורכבים הקבצים של ההגדרות, השגרורים והרשומים של השרת.
  2. Listen: מורשה לApache להקשיב על כבל הIP ו/או הפורטים הספציפיים.
  3. Include: מאפשר לכך שיש בינת להכנסת קבצים הגדרות אחרים, שחייבים לקיימים. אחרת, השרת יכשל, בניגוד להורדיטיבה IncludeOptional, המתעלמת בדממה אם הקבצים המסוגלים להגדירה לא קיימים.
  4. משתמש וקבוצה: שמות המשתמש/קבוצות של השרת httpd יורה.
  5. DocumentRoot: המיקום ממנו אפאפה יעשה את השרת לספק את המסמכים שלך. במונחים רגילים, כל הבקשות מוצאות במיקום זה, אך מקשורים וסימנים יכולים להיות מוצעים להצבעה למקומות אחרים.
  6. ServerName: ההורדיטיבה הזו מגדירה את שמות המחשב (או כבל הIP) והפורט שהשרת משתמש כדי לזהות עצמו.

הצעד הראשון באבטחת המערכת יכלול יצירת משתמש וקבוצה מוקצים (כלומר tecmint/tecmint) להפעלת שרת האינטרנט ושינוי הפורט הברירת מחדל לפורט גבוה יותר (9000 במקרה זה):

ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

ניתן לבדוק את קובץ התצורה עם.

# apachectl configtest

ואם הכל בסדר, אז לאחר מכן לאתחל את שרת האינטרנט.

# systemctl restart httpd

ואל תשכח לאפשר את הפורט החדש (ולהשבית את הישן) בגישור:

# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload

שימו לב, עקב מדיניות SELinux, ניתן להשתמש רק בפורטים שמוחזרים על ידי

# semanage port -l | grep -w '^http_port_t'

עבור שרת האינטרנט.

אם ברצונך להשתמש בפורט אחר (כלומר פורט TCP 8100), עליך להוסיף אותו להקשר פורטים של SELinux עבור שירות httpd:

# semanage port -a -t http_port_t -p tcp 8100
Add Apache Port to SELinux Policies

כדי להבטיח את ההתקנה של Apache שלך נוסף, עקוב אחר השלבים האלה:

1. המשתמש שבו מריץ Apache לא צריך לקבל גישה לשל פקודות:

# usermod -s /sbin/nologin tecmint

2. השבת את רשימת הספריות כדי למנוע מהדפדפן להציג את תוכן הספרייה אם אין index.html בספרייה זו.

ערוך את /etc/httpd/conf/httpd.conf (ואת קבצי התצורה עבור מארחים וירטואליים, אם יש) וודא שההוראה Options, גם ברמות העליונות וברמות הבלוקים של הספרייה, מוגדרת ל None:

Options None

3. הסתר מידע על שרת האינטרנט והמערכת הפעלה בתגובות HTTP. ערוך את /etc/httpd/conf/httpd.conf כדלקמן:

ServerTokens Prod 
ServerSignature Off

עכשיו אתה מוכן להתחיל לספק תוכן מהתיקייה שלך /var/www/html.

הגדרת ואבטחת שרת FTP

כמו במקרה של Apache, קובץ ההגדרות העיקרי עבור Vsftpd (/etc/vsftpd/vsftpd.conf) מסומן היטב ועל אף שההגדרות ברירת המחדל צריכות להתאים לרוב היישומים, עליך להכיר את התיעוד ואת דף הרווח (man vsftpd.conf) כדי להפעיל את שרת ה-ftp ביעילות יותר (אני לא יכול להדגיש זאת מספיק!).

במקרה שלנו, אלה הן ההוראות המשמשות:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

על ידי שימוש ב- chroot_local_user=YES, משתמשים מקומיים יינחסו (ברירת המחדל) לכלא chroot בתיקיית הבית שלהם ישירות לאחר התחברות. זה אומר שמשתמשים מקומיים לא יוכלו לגשת לקבצים מחוץ לתיקיות הבית המתאימות שלהם.

לבסוף, כדי לאפשר ל-ftp לקרוא קבצים בתיקיית הבית של המשתמש, הגדר את הבוליאני של SELinux הבא:

# setsebool -P ftp_home_dir on

כעת תוכל להתחבר לשרת ה-ftp באמצעות לקוח כגון Filezilla:

Check FTP Connection

שים לב ש- /var/log/xferlog רשומות יורדות ומעלות, שמותאמות לרשימת התיקיות לעיל:

Monitor FTP Download and Upload

קרא גם: הגבלת רוחב פס של רשת FTP המשמש יישומים במערכת Linux עם Trickle

סיכום

במדריך זה הסברנו כיצד להגדיר שרת רשת ו-FTP. עקב הרחבות הנושא, אין אפשרות לכסות את כל הנושאים הנלמדים (כגון שרתי אינטרנט וירטואליים). לכן, אני ממליץ גם לבדוק מאמרים נוספים מצוינים באתר זה על Apache.

Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/