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

הקדמה

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

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

כדי להתחבר לשרת שלך, תצטרך לדעת את כתובת ה-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 8, משתמשים שנמצאים בקבוצת 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 Thu 2020-02-06 16:39:40 UTC; 3s ago Docs: man:firewalld(1) Main PID: 13180 (firewalld) Tasks: 2 (limit: 5059) Memory: 22.4M CGroup: /system.slice/firewalld.service └─13180 /usr/libexec/platform-python -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.

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

אם חשבון ה־Root משתמש באימות סיסמה

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

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

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

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

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

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

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

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

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

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

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

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

סיכום

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

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