סדרת RHCSA: לאבטח את SSH, להגדיר את שם המארח ולאפשר שירותי רשת – חלק 8

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

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

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

RHCSA: Secure SSH and Enable Network Services – Part 8

התקנת ואבטחת תקשורת SSH

כדי שתוכלו להתחבר מרחוק לתיבת RHEL 7 באמצעות SSH, עליכם להתקין את החבילות openssh, openssh-clients ו־openssh-servers. הפקודה הבאה לא רק תתקין את תוכנית הכניסה המרחוק, אלא גם את כלי ההעברת קבצים המאובטח, כמו כן כלי ההעתקה המרחקת:

# yum update && yum install openssh openssh-clients openssh-servers

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

לאחר ההתקנה, ישנם כמה דברים בסיסיים שעליכם לקחת בחשבון אם ברצונכם לאבטח את הגישה מרחוק לשרת SSH שלכם. הגדרות הבאות צריכות להיות נוכחות בקובץ /etc/ssh/sshd_config.

1. שנה את הפורט בו השירות של sshd יאזין מ-22 (הערך המוגדר כברירת מחדל) לפורט גבוה (2000 או יותר), אך קודם כל ודא שהפורט שנבחר לא בשימוש.

לדוגמה, נניח שבחרת בפורט 2500. השתמש ב־netstat כדי לבדוק האם הפורט שנבחר בשימוש או לא:

# netstat -npltu | grep 2500

אם netstat אינו מחזיר כלום, תוכל להשתמש בבטחה בפורט 2500 ל-sshd, ועליך לשנות את ההגדרה של הפורט בקובץ התצורה כדלקמן:

Port 2500

2. אפשר רק ל-פרוטוקול 2:

Protocol 2

3. הגדר את זמן הפסקת האימות ל־2 דקות, אל תאפשר כניסת root, והגבל במינימום את רשימת המשתמשים שמורשים להתחברות דרך ssh:

LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4. באפשרותך, השתמש באימות מבוסס מפתחות במקום אימות באמצעות סיסמה:

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

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

  1. אפשר כניסה למערכת באמצעות SSH ללא סיסמה

הגדרת רשת ופיתרון שמות

1. כל מנהל מערכות צריך להיות מוכר היטב עם קבצי התצורה המערכתיים הבאים:

  1. /etc/hosts משמש לפתירת שמות <—> כתובות IP ברשתות קטנות.

כל שורה בקובץ /etc/hosts מכילה את המבנה הבא:

IP address - Hostname - FQDN

לדוגמה,

192.168.0.10	laptop	laptop.gabrielcanepa.com.ar

2. /etc/resolv.conf מציין את כתובות ה-IP של שרתי DNS ואת התחום לחיפוש, שמשמש להשלמת שם שאילתה נתון לשם דומיין מובא במלואו כאשר לא סופק סיומת דומיין.

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

nameserver - IP address

לדוגמה,

nameserver 8.8.8.8

3. 3. /etc/host.conf מציין את השיטות והסדר שבו שמות מארחים מפורטים ברשת. כלומר, מספר למפתח השמות אילו שירותים להשתמש בהם, ובאיזה סדר.

אף על פי שקובץ זה מכיל מספר אפשרויות, ההגדרה הנפוצה והבסיסית כוללת שורה כזו:

order bind,hosts

שמציינת כי המפתח צריך לחפש תחילה בשרתי השמות שצוינו ב-resolv.conf ואז בקובץ /etc/hosts לפתירת שמות.

4. /etc/sysconfig/network מכיל מידע על ניתוב ומארח גלובלי עבור כל ממשקי הרשת. ניתן להשתמש בערכים הבאים:

NETWORKING=yes|no
HOSTNAME=value

כאשר הערך צריך להיות שם דומיין מובא במלואו (FQDN).

GATEWAY=XXX.XXX.XXX.XXX

כאשר XXX.XXX.XXX.XXX הוא כתובת ה-IP של שער הרשת.

GATEWAYDEV=value

במכשיר עם מספר כרטיסי רשת, ערך הוא המכשיר שער, כמו enp0s3.

5. קבצים בתוך /etc/sysconfig/network-scripts (קבצי הגדרת מתאמי רשת).

בתוך התיקייה שצוינה למעלה, תמצא מספר קבצי טקסט פשוטים בשם.

ifcfg-name

שבו השם הוא שם ה-NIC כפי שמוחזר על ידי ip link show:

Check Network Link Status

לדוגמה:

Network Files

מלבד כרטיס הרשת loopback, תוכל לצפות בהגדרה דומה ל-NIC שלך. שים לב שקיימים משתנים שיכולים לדרוס את אלו הנמצאים ב־/etc/sysconfig/network עבור ממשק זה בפרט. כל שורה מפורטת להבהרה במאמר זה אך בקובץ האמיתי עליך להימנע מהערות:

HWADDR=08:00:27:4E:59:37 # The MAC address of the NIC
TYPE=Ethernet # Type of connection
BOOTPROTO=static # This indicates that this NIC has been assigned a static IP. If this variable was set to dhcp, the NIC will be assigned an IP address by a DHCP server and thus the next two lines should not be present in that case.
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no # Should be added to the Ethernet interface to prevent NetworkManager from changing the file.
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
ONBOOT=yes # The operating system should bring up this NIC during boot

הגדרת שמות מארח

ב־Red Hat Enterprise Linux 7, הפקודה hostnamectl משמשת לשאילתה והגדרה של שם המארח של המערכת.

כדי להציג את שם המארח הנוכחי, הקלד:

# hostnamectl status
Check System Hostname

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

# hostnamectl set-hostname [new hostname]

לדוגמה,

# hostnamectl set-hostname cinderella

על מנת שהשינויים ייכנסו לתוקף עליך לאתחל את השירות hostnamed (בצורה זו לא תצטרך להתנתק ולהתחבר מחדש כדי להחיל את השינוי):

# systemctl restart systemd-hostnamed
Set System Hostname

בנוסף, RHEL 7 כוללת גם את הכלי nmcli שניתן להשתמש בו למטרה זו. כדי להציג את שם המארח, הריץ:

# nmcli general hostname

וכדי לשנות אותו:

# nmcli general hostname [new hostname]

לדוגמה,

# nmcli general hostname rhel7
Set Hostname Using nmcli Command

הפעלת שירותי רשת בהתמצאות קצת

לסיים, בואו נראה איך אפשר לוודא ששירותי הרשת מופעלים אוטומטית בעת ההפעלה. במונחים פשוטים, זה נעשה על ידי יצירת סימלינקים לקבצים מסוימים שצויינו בסעיף [התקן] של קבצי התצורה של השירות.

במקרה של firewalld (/usr/lib/systemd/system/firewalld.service):

[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service

כדי להפעיל את השירות:

# systemctl enable firewalld

מצד שני, ניטור firewalld מחייב הסרת הסימלינקים:

# systemctl disable firewalld
Enable Service at System Boot

מסקנה

במאמר זה סיכמנו איך להתקין ולאבטח חיבורים דרך SSH לשרת RHEL, איך לשנות את שמו, ולבסוף איך לוודא ששירותי הרשת מופעלים בעת ההפעלה. אם אתה מזהה ששירות מסוים נכשל להתחיל באופן תקין, תוכל להשתמש ב־systemctl status -l [service] וב־journalctl -xn כדי לאבחן אותו.

אל תהסס לספר לנו מה אתה חושב על המאמר באמצעות טופס התגובה למטה. שאלות גם מתקבלות בברכה. אנחנו מצפים לשמוע ממך!

Source:
https://www.tecmint.com/rhcsa-series-secure-ssh-set-hostname-enable-network-services-in-rhel-7/