ค้นหาเว็บไซต์

ซีรี่ส์ RHCSA: การรักษาความปลอดภัย SSH การตั้งชื่อโฮสต์ และการเปิดใช้งานบริการเครือข่าย - ตอนที่ 8


ในฐานะผู้ดูแลระบบ คุณมักจะต้องเข้าสู่ระบบระยะไกลเพื่อดำเนินงานด้านการดูแลระบบที่หลากหลายโดยใช้โปรแกรมจำลองเทอร์มินัล คุณจะไม่ค่อยได้นั่งอยู่หน้าเทอร์มินัลจริง (จริง) ดังนั้นคุณจึงต้องตั้งค่าวิธีการล็อกออนจากระยะไกลไปยังเครื่องที่คุณจะถูกขอให้จัดการ

นั่นอาจเป็นสิ่งสุดท้ายที่คุณต้องทำที่หน้าอาคารผู้โดยสาร ด้วยเหตุผลด้านความปลอดภัย การใช้ Telnet เพื่อจุดประสงค์นี้ไม่ใช่ความคิดที่ดี เนื่องจากการรับส่งข้อมูลทั้งหมดจะถูกส่งผ่านสายในรูปแบบข้อความธรรมดาที่ไม่ได้เข้ารหัส

นอกจากนี้ ในบทความนี้ เราจะทบทวนวิธีกำหนดค่าบริการเครือข่ายให้เริ่มโดยอัตโนมัติเมื่อบูตเครื่อง และเรียนรู้วิธีตั้งค่าเครือข่ายและการแก้ปัญหาชื่อโฮสต์แบบคงที่หรือแบบไดนามิก

การติดตั้งและการรักษาความปลอดภัยการสื่อสาร SSH

เพื่อให้คุณสามารถเข้าสู่ระบบจากระยะไกลไปยังกล่อง RHEL 7 โดยใช้ SSH คุณจะต้องติดตั้ง openssh, openssh -ไคลเอนต์ และแพ็คเกจ openssh-servers คำสั่งต่อไปนี้ไม่เพียงแต่จะติดตั้งโปรแกรมล็อกอินระยะไกล แต่ยังติดตั้งเครื่องมือถ่ายโอนไฟล์ที่ปลอดภัย รวมถึงยูทิลิตี้คัดลอกไฟล์ระยะไกล:


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

โปรดทราบว่าเป็นความคิดที่ดีที่จะติดตั้งเซิร์ฟเวอร์คู่กัน เนื่องจากคุณอาจต้องการใช้เครื่องเดียวกันกับทั้งไคลเอนต์และเซิร์ฟเวอร์ในบางจุด

หลังการติดตั้ง มีสองสิ่งพื้นฐานที่คุณต้องคำนึงถึงหากคุณต้องการรักษาความปลอดภัยการเข้าถึงเซิร์ฟเวอร์ SSH ของคุณจากระยะไกล การตั้งค่าต่อไปนี้ควรมีอยู่ในไฟล์ /etc/ssh/sshd_config

1. เปลี่ยนพอร์ตที่ sshd daemon จะรับฟังจาก 22 (ค่าเริ่มต้น) เป็นพอร์ตสูง (2000 หรือสูงกว่า) แต่ก่อนอื่นต้องแน่ใจว่าไม่ได้ใช้พอร์ตที่เลือก

ตัวอย่างเช่น สมมติว่าคุณเลือกพอร์ต 2500 ใช้ netstat เพื่อตรวจสอบว่ามีการใช้พอร์ตที่เลือกหรือไม่:


netstat -npltu | grep 2500

หาก netstat ไม่ส่งคืนสิ่งใด คุณสามารถใช้พอร์ต 2500 สำหรับ sshd ได้อย่างปลอดภัย และคุณควรเปลี่ยนการตั้งค่าพอร์ตในไฟล์การกำหนดค่าดังนี้:


Port 2500

2. อนุญาตเฉพาะ โปรโตคอล 2:


Protocol 2

3. กำหนดค่าการหมดเวลาการตรวจสอบสิทธิ์เป็น 2 นาที ไม่อนุญาตให้เข้าสู่ระบบรูท และจำกัดรายชื่อผู้ใช้ขั้นต่ำที่ได้รับอนุญาตให้เข้าสู่ระบบผ่าน 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

ในเครื่องที่มี NIC หลายตัว ค่าคืออุปกรณ์เกตเวย์ เช่น enp0s3

5. ไฟล์ภายใน /etc/sysconfig/network-scripts (ไฟล์การกำหนดค่าอะแดปเตอร์เครือข่าย)

ภายในไดเร็กทอรีที่กล่าวถึงก่อนหน้านี้ คุณจะพบไฟล์ข้อความธรรมดาหลายไฟล์ชื่อ


ifcfg-name

โดยที่ name คือชื่อของ NIC ที่ส่งคืนโดย การแสดงลิงก์ ip:

ตัวอย่างเช่น:

นอกเหนือจากอินเทอร์เฟซ 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

หากต้องการเปลี่ยนชื่อโฮสต์ให้ใช้


hostnamectl set-hostname [new hostname]

ตัวอย่างเช่น,


hostnamectl set-hostname cinderella

เพื่อให้การเปลี่ยนแปลงมีผล คุณจะต้องรีสตาร์ท ชื่อโฮสต์ daemon (ด้วยวิธีนี้ คุณจะไม่ต้องออกจากระบบและเปิดใหม่อีกครั้งเพื่อใช้การเปลี่ยนแปลง):


systemctl restart systemd-hostnamed

นอกจากนี้ RHEL 7 ยังมียูทิลิตี nmcli ที่สามารถใช้เพื่อวัตถุประสงค์เดียวกันอีกด้วย หากต้องการแสดงชื่อโฮสต์ ให้รัน:


nmcli general hostname

และหากต้องการเปลี่ยนแปลง:


nmcli general hostname [new hostname]

ตัวอย่างเช่น,


nmcli general hostname rhel7

การเริ่มบริการเครือข่ายเมื่อบู๊ต

สรุปให้เราดูว่าเราจะแน่ใจได้อย่างไรว่าบริการเครือข่ายจะเริ่มทำงานโดยอัตโนมัติเมื่อบูตเครื่อง พูดง่ายๆ ก็คือทำได้โดยการสร้างลิงก์ไปยังไฟล์บางไฟล์ที่ระบุในส่วน [ติดตั้ง] ของไฟล์การกำหนดค่าบริการ

ในกรณีของ firewalld (/usr/lib/systemd/system/firewalld.service):


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

หากต้องการเปิดใช้งานบริการ:


systemctl enable firewalld

ในทางกลับกัน การปิดใช้งานไฟร์วอลล์จะทำให้สิทธิ์ในการลบสัญลักษณ์:


systemctl disable firewalld

บทสรุป

ในบทความนี้ เราได้สรุปวิธีการติดตั้งและรักษาความปลอดภัยการเชื่อมต่อผ่าน SSH ไปยังเซิร์ฟเวอร์ RHEL วิธีเปลี่ยนชื่อ และสุดท้ายวิธีตรวจสอบให้แน่ใจว่าบริการเครือข่ายเริ่มต้นแล้ว บูต หากคุณสังเกตเห็นว่าบริการบางอย่างไม่สามารถเริ่มต้นได้อย่างถูกต้อง คุณสามารถใช้ systemctl status -l [service] และ journalctl -xn เพื่อแก้ไขปัญหาได้

โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับบทความนี้โดยใช้แบบฟอร์มความคิดเห็นด้านล่าง ยังยินดีต้อนรับคำถาม เราหวังว่าจะได้ยินจากคุณ!