הגדרת שרת ראשונית עם Rocky Linux 9

הקדמה

כאשר אתה יוצר שרת Rocky Linux 9 חדש, ישנם כמה שלבי הגדרה שעליך לבצע מוקדם כחלק מההגדרה הראשונית. זה ישפר את האבטחה ואת השימושיות של השרת שלך ויתן לך בסיס איתות עמוק לבנייה נוספת.

שלב 1 — התחברות כמשתמש רוט

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

אם עדיין לא מחובר לשרת שלך, היכנס כעת כמשתמש root באמצעות הפקודה הבאה (החלף את חלק המודגש של הפקודה בכתובת ה-IP הציבורית של השרת שלך):

  1. ssh root@your_server_ip

קבל את האזהרה בנוגע לאמינות המארח אם היא מופיעה. אם אתה משתמש באימות בסיס-נתונים, ספק את הסיסמה שלך למשתמש root כדי להתחבר. אם אתה משתמש במפתח SSH שמוגן בסיסמה, ייתכן שיתבקש ממך להזין את הסיסמה לראשונה בכל ישיבה שתשתמש במפתח. אם זו הפעם הראשונה שלך שאתה נכנס לשרת עם סיסמה, ייתכן ויבקש ממך לשנות את סיסמת ה-root.

אודות Root

המשתמש root הוא המשתמש המנהלי בסביבת Linux ויש לו הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה הרבה. בשל ההרגשה הגבוהה של ערכי המשתמש root, אתה משולם מלהשתמש בו בקביעות. זה בגלל שחלק מהכוח הנטמע בחשבון ה-root הוא היכולת לבצע שינויים מאוד הרסניים, גם בטעות.

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

שלב 2 — יצירת משתמש חדש

לאחר שהתחברת כ-root, תוכל ליצור חשבון משתמש חדש שתשתמש בו להתחברות מעכשיו והלאה.

מדובר בדוגמה שיוצרת משתמש חדש בשם sammy, אך עליך להחליף אותו בשם משתמש שאתה מעדיף:

  1. adduser sammy

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

  1. passwd sammy

יתבקש ממך להזין את הסיסמה פעמיים. לאחר עשיית זאת, המשתמש שלך יהיה מוכן לשימוש, אך תתן למשתמש זה הרשאות נוספות להשתמש בפקודת sudo. זה יאפשר לך להריץ פקודות כמו root כאשר נדרש.

שלב 3 — הענקת הרשאות מנהליות

כעת, יש לך חשבון משתמש חדש עם הרשאות חשבון רגילות. אך לפעמים ייתכן שתצטרך לבצע משימות מנהליות.

כדי למנוע צורך בהתנתקות מהחשבון הרגיל שלך והתחברות מחדש כמו root, ניתן להגדיר מה שנקרא כ"הרשאות שוליים" או הרשאות root עבור החשבון הרגיל שלך. זה יאפשר למשתמש הרגיל שלך להריץ פקודות עם הרשאות מנהליות על ידי שימוש במילה sudo לפני כל פקודה.

כדי להוסיף את הרשאות אלה למשתמש החדש שלך, עליך להוסיף את המשתמש החדש לקבוצת wheel. כברירת מחדל, ב-Rocky Linux 9, משתמשים ששייכים לקבוצת wheel רשאים להשתמש בפקודת sudo.

כמשתמש root, הפעל את הפקודה הזו כדי להוסיף את המשתמש החדש שלך לקבוצת wheel (החלף את המילה המודגשת בשם המשתמש החדש שלך):

  1. usermod -aG wheel sammy

עכשיו, כשאתה מחובר כמשתמש הרגיל שלך, תוכל להקליד sudo לפני הפקודות כדי לבצע פעולות עם הרשאות של מנהל מערכת.

שלב 4 — הגדרת חומת אש

חומות אש מספקים רמת בסיס של אבטחה לשרת שלך. אלו היו עוסקים בדחיית תעבורה לכל יציאה בשרת שלך, למעט לאלו היושרות/שירותים שאישרת במפורש. ב-Rocky Linux יש שירות בשם firewalld שמבצע את הפעולה הזו. יש כלי בשם firewall-cmd המשמש להגדיר מדיניות אש של firewalld.

הערה: אם השרתים שלך פועלים על DigitalOcean, תוכל להשתמש באופציה להשתמש ב־DigitalOcean Cloud Firewalls במקום firewalld. יש להשתמש בחומת אש אחת בלבד בכל פעם כדי למנוע כללי חוקים שמתקיימים שיכולים להיות קשים לאיתור.

התקן תחילה את firewalld:

  1. dnf install firewalld -y

הגדרות ברירת המחדל של firewalld מאפשרות חיבורים ל־ssh, כך שניתן להפעיל את החומה מיד:

  1. systemctl start firewalld

בדוק את מצב השירות כדי לוודא שהוא התחיל:

  1. systemctl status firewalld
Output
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago Docs: man:firewalld(1) Main PID: 15060 (firewalld) Tasks: 4 (limit: 10938) Memory: 28.1M CPU: 6.127s CGroup: /system.slice/firewalld.service └─15060 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

הער כי זה גם פעיל וגם מופעל, שפעל באופן ברירת מחדל אם השרת מופעל מחדש.

עכשיו שהשירות פועל, ניתן להשתמש בכלי firewall-cmd כדי לקבל ולהגדיר מידע על מדיניות הגנה לגדר.

נתחיל על ידי לרשום אילו שירותים כבר מורשים:

  1. firewall-cmd --permanent --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

כדי לראות אילו שירותים נוספים תוכל להפעיל לפי שם, הקלד:

  1. firewall-cmd --get-services

כדי להוסיף שירות שצריך לאפשר, השתמש בדגל --add-service:

  1. firewall-cmd --permanent --add-service=http

זה יוסיף את השירות http ויאפשר תעבורת TCP נכנסת ליציאה 80. ההגדרה תעדכן לאחר שתטעין מחדש את הגנת האש:

  1. firewall-cmd --reload

זכור שתצטרך לפתוח באופן ברור את הגנת האש (עם שירותים או יציאות) עבור כל שירות נוסף שתקבע בהמשך.

שלב 5 — אפשר גישה חיצונית למשתמש הרגיל שלך

עכשיו שיש לך משתמש רגיל לשימוש יומיומי, עליך לוודא שניתן להשתמש בו לכניסה ב-SSH לשרת שלך.

הערה: עד שתוודא שאתה יכול להתחבר ולהשתמש ב-sudo עם המשתמש החדש שלך, עליך להישאר מחובר כ-root. בכך תוכל לטרוח ולבצע שינויים נדרשים כמו root במקרה של בעיה. אם אתה משתמש ב-DigitalOcean Droplet ויש לך בעיות עם חיבור ה-SSH של root, תוכל להתחבר ל-Droplet באמצעות DigitalOcean Console.

התהליך להגדיר גישת SSH למשתמש החדש שלך תלוי אם חשבונך root משתמש בסיסמה או מפתחות SSH לאימות.

אם חשבון ה-Root משתמש באימות באמצעות סיסמה

אם התחברת לחשבון ה-root באמצעות סיסמה, אז אימות באמצעות סיסמה מופעל עבור SSH. תוכל להתחבר לחשבון המשתמש החדש שלך באמצעות SSH, פתח סשן טרמינל חדש והשתמש ב-SSH עם שם המשתמש החדש שלך:

  1. ssh sammy@your_server_ip

לאחר שתזין את סיסמת המשתמש הרגילה שלך, תתחבר. זכור, אם יש לך צורך להריץ פקודה עם הרשאות מנהל, הקלד sudo לפני כך כמו כן:

  1. sudo command_to_run

יתבקש ממך להזין את סיסמת המשתמש הרגילה שלך כשאתה משתמש ב-sudo לפעם הראשונה בכל סשן (ותקופתית לאחר מכן).

לשדרג את ביטחון השרת שלך, עליך להגדיר מפתחות SSH במקום שימוש באימות בסיסי של סיסמה. יש לעקוב אחרי המדריך הבא כדי לדעת כיצד להגדיר אימות מבוסס מפתחות ב־Rockey Linux 9.

אם חשבון ה־Root משתמש באימות מפתחות של SSH

אם התחברת לחשבון root באמצעות מפתחות SSH, אז האימות באמצעות סיסמה מושבת עבור SSH. עליך להוסיף העתק של המפתח הציבורי שלך לקובץ ~/.ssh/authorized_keys של המשתמש החדש כדי להתחבר בהצלחה.

מכיוון שהמפתח הציבורי שלך כבר נמצא בקובץ ~/.ssh/authorized_keys של חשבון ה־root בשרת, תוכל להעתיק את הקובץ ואת מבנה התיקיות לחשבון המשתמש החדש שלך.

הדרך הכי ישירה להעתיק את הקבצים עם הרשאות ואישורים נכונים היא עם פקודת rsync. זה יעתיק את תיקיית ה־root של המשתמש עם הקובץ .ssh, ישמור על ההרשאות, וישנה את בעלי הקבצים, הכל בפקודה אחת. ודא שאתה משנה את החלקים המודגשים בפקודה למתאימים לשם המשתמש הרגיל שלך:

הערה: פקודת rsync עושה טיפול שונה למקורות ויעדים שמסתיימים בסיומת נקודה חולה מאלו שאין להם סיומת נקודה חולה. כאשר אתה משתמש ב- rsync למטה, וודא שספריית המקור (~/.ssh) אינה כוללת סיומת נקודה חולה (וודא שאתה לא משתמש ב- ~/.ssh/).

אם בטעות הוספת סיומת נקודה חולה לפקודה, rsync יעתיק את התוכן של חשבון ה- root בספריית ~/.ssh לספריית הבית של משתמש ה- sudo במקום להעתיק את כל מבנה ספריית ~/.ssh. הקבצים יהיו במקום שגוי ו-SSH לא יוכל למצוא ולהשתמש בהם.

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

יש לך להזין את הסיסמה שלך כמשתמש רגיל כאשר אתה משתמש ב- sudo לפעם הראשונה בכל הפעלה (ובאופן תדיר לאחר מכן).

סיכום

בנקודה זו, יש לך יסוד יציב לשרת שלך. ניתן להתקין כל תוכנה שאת/ה זקוק/ה כעת. לדוגמה, תוכל/י להתחיל עם התקנת שרת האינג'ינקס (Nginx).

Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-9