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

ปิดใช้งานและลบบริการที่ไม่ต้องการในการติดตั้งขั้นต่ำของ RHEL/CentOS 7


การติดตั้งขั้นต่ำของ RHEL/CentOS 7 สำหรับเซิร์ฟเวอร์มาพร้อมกับบริการที่ติดตั้งไว้ล่วงหน้าบางส่วน เช่น Postfix Mail Transfer Agent daemon, Avahi mdns daemon (multicast Domain Name System) และบริการ Chrony ซึ่งมีหน้าที่ดูแลรักษานาฬิกาของระบบ

มาถึงคำถาม.. ทำไม พ. จึงต้องปิดการใช้งานบริการเหล่านี้ทั้งหมด หากติดตั้งไว้ล่วงหน้าแล้ว? เหตุผลหลักประการหนึ่งคือการเพิ่มระดับความปลอดภัยของระบบ เหตุผลที่สองคือปลายทางสุดท้ายของระบบ และประการที่สามคือทรัพยากรระบบ

ความต้องการ

  1. CentOS 7 การติดตั้งขั้นต่ำ
  2. RHEL 7 การติดตั้งขั้นต่ำ

หากคุณวางแผนที่จะใช้ RHEL/CentOS 7 ที่ติดตั้งใหม่เพื่อโฮสต์ สมมติว่าเป็นเว็บไซต์ขนาดเล็กที่ทำงานบน Apache หรือ Nginx หรือเพื่อให้บริการเครือข่าย เช่น DNS , DHCP, การบูต PXE, เซิร์ฟเวอร์ FTP ฯลฯ หรือบริการอื่นๆ ที่ไม่จำเป็นต้องเรียกใช้ Postifx MTA daemon, Chrony หรือ Avahi daemon แล้วเหตุใดเราจึงควรติดตั้ง daemons ที่ไม่จำเป็นเหล่านี้ไว้ทั้งหมดหรือแม้กระทั่งทำงานบนเซิร์ฟเวอร์ของคุณ

บริการภายนอกหลักที่เซิร์ฟเวอร์ของคุณต้องการในการทำงานอย่างแท้จริงหลังจากที่คุณทำการติดตั้งขั้นต่ำจะเป็นเพียง SSH daemon เพื่อที่จะอนุญาตการเข้าสู่ระบบระยะไกลบนระบบ และในบางกรณี บริการ NTP เพื่อ ซิงโครไนซ์นาฬิกาภายในเซิร์ฟเวอร์ของคุณกับเซิร์ฟเวอร์ NTP ภายนอกอย่างแม่นยำ

ปิดการใช้งาน/ลบบริการ Postfix MTA, Avahi และ Chrony

1. หลังจากการติดตั้งเสร็จสิ้น ให้เข้าสู่ระบบเซิร์ฟเวอร์ของคุณด้วยบัญชี root หรือผู้ใช้ที่มีสิทธิ์ใช้งาน root และทำการอัปเดตระบบ เพื่อให้แน่ใจว่าระบบของคุณทันสมัย - อัปเดตพร้อมแพ็คเกจและแพตช์ความปลอดภัยทั้งหมด

yum upgrade

2. ขั้นตอนต่อไปคือการติดตั้งยูทิลิตี้ระบบที่มีประโยชน์โดยใช้ YUM Package Manager เช่น net-tools (แพ็คเกจนี้ให้เวอร์ชั่นเก่ากว่า
แต่คำสั่ง ifconfig ที่ดี), โปรแกรมแก้ไขข้อความ nano, wget และ curl สำหรับการถ่ายโอน URL, lsof (เพื่อแสดงรายการไฟล์ที่เปิดอยู่) และ bash-completion ซึ่งจะเติมคำสั่งที่พิมพ์ให้สมบูรณ์โดยอัตโนมัติ

yum install nano bash-completion net-tools wget curl lsof

3. ตอนนี้คุณสามารถเริ่มปิดการใช้งานและลบบริการที่ไม่พึงประสงค์ที่ติดตั้งไว้ล่วงหน้าได้แล้ว ก่อนอื่น ให้รับรายการบริการที่เปิดใช้งานและทำงานอยู่ทั้งหมดโดยการรันคำสั่ง netstat กับซ็อกเก็ตเครือข่าย TCP, UDP และ Listen state

netstat -tulpn  	## To output numerical service sockets

netstat -tulp      	## To output literal service sockets

4. ดังที่คุณเห็นว่า Postfix เริ่มต้นแล้วและรับฟังบน localhost บนพอร์ต 25 Avahi daemon จะผูกกับอินเทอร์เฟซเครือข่ายทั้งหมดและ Cronyd บริการเชื่อมโยงกับ localhost และอินเทอร์เฟซเครือข่ายทั้งหมดบนพอร์ตที่แตกต่างกัน ดำเนินการลบบริการ Postfix MTA โดยใช้คำสั่งต่อไปนี้

systemctl stop postfix
yum remove postfix

5. ถัดไป ลบบริการ Chronyd ซึ่งจะถูกแทนที่ด้วยเซิร์ฟเวอร์ NTP โดยใช้คำสั่งต่อไปนี้

systemctl stop chronyd
yum remove chrony

6. ตอนนี้ได้เวลาลบ Avahi daemon แล้ว ดูเหมือนว่าใน RHEL/CentOS 7 Avahi daemon จะแน่นหนามากและขึ้นอยู่กับบริการ Network Manager การดำเนินการลบ Avahi daemon อาจทำให้ระบบของคุณไม่มีการเชื่อมต่อเครือข่าย

ดังนั้นให้ใส่ใจเป็นพิเศษกับขั้นตอนนี้ หากคุณต้องการการกำหนดค่าเครือข่ายอัตโนมัติโดย Network Manager จริงๆ หรือคุณต้องแก้ไขอินเทอร์เฟซของคุณ
ผ่านเครือข่าย nmtui และยูทิลิตีอินเทอร์เฟซ คุณควรหยุดและปิดใช้งาน Avahi daemon เท่านั้น และไม่ดำเนินการลบใดๆ เลย

หากคุณยังคงต้องการลบบริการนี้โดยสิ้นเชิง คุณต้องแก้ไขไฟล์การกำหนดค่าเครือข่ายที่อยู่ใน /etc/sysconfig/network-scripts/ifcfg-interface_name ด้วยตนเอง จากนั้นจึงเริ่มและเปิดใช้งานบริการเครือข่าย

ออกคำสั่งต่อไปนี้เพื่อลบ Avahi mdns daemon ข้อควรระวัง: อย่าพยายามลบ Avahi daemon หากคุณเชื่อมต่อผ่าน SSH

systemctl stop avahi-daemon.socket avahi-daemon.service
systemctl disable avahi-daemon.socket avahi-daemon.service
--------- Stop here if you don't want removal --------- 

yum remove avahi-autoipd avahi-libs avahi

7. ขั้นตอนนี้จำเป็นเฉพาะในกรณีที่คุณลบ Avahi daemon และการเชื่อมต่อเครือข่ายของคุณขัดข้อง และคุณต้องกำหนดค่าการ์ดอินเทอร์เฟซเครือข่ายด้วยตนเองอีกครั้ง

หากต้องการแก้ไข NIC ของคุณเพื่อใช้ IPv6 และ ที่อยู่ IP แบบคงที่ ให้ไปที่เส้นทาง /etc/sysconfig/network-scripts/ เปิดไฟล์อินเทอร์เฟซ NIC (โดยปกติการ์ดใบแรกจะมีชื่อว่า ifcfg-eno1677776 และได้รับการกำหนดค่าโดย Network Manager แล้ว) และใช้ข้อความที่ตัดตอนมาต่อไปนี้เป็นแนวทางในกรณีที่
ของคุณ อินเทอร์เฟซเครือข่ายไม่มีการกำหนดค่า

IPV6INIT=no
IPV6_AUTOCONF=yes
BOOTPROTO=none
DEVICE=eno16777736
ONBOOT=yes
UUID=c3f0dc21-d2eb-48eb-aadf-10a520b13df0
TYPE=Ethernet
#DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME="System eno16777736"
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=00:0C:29:E2:06:E9
                IPADDR=192.168.1.25
                NETMASK=255.255.255.0
                GATEWAY=192.168.1.1
                DNS1=192.168.1.1
                DNS2=8.8.8.8

การตั้งค่าที่สำคัญที่สุดที่คุณควรคำนึงถึงคือ:

  1. BOOTPROTO – ตั้งค่าเป็นไม่มีหรือคงที่ – สำหรับที่อยู่ IP แบบคงที่
  2. ONBOOT – ตั้งค่าเป็นใช่ – เพื่อแสดงอินเทอร์เฟซของคุณหลังจากรีบูต
  3. DEFROUTE – คำสั่งที่มีเครื่องหมาย # หรือถูกลบออกทั้งหมด – ห้ามใช้เส้นทางเริ่มต้น (หากคุณใช้ที่นี่ คุณควรเพิ่ม “DEFROUTE: no” ให้กับอินเทอร์เฟซเครือข่ายทั้งหมด ไม่ใช้เป็นเส้นทางเริ่มต้น)

8. หากโครงสร้างพื้นฐานของคุณมีเซิร์ฟเวอร์ DHCP ที่จะกำหนดที่อยู่ IP โดยอัตโนมัติ ให้ใช้ข้อความที่ตัดตอนมาต่อไปนี้สำหรับการกำหนดค่าอินเทอร์เฟซเครือข่าย

IPV6INIT=no
IPV6_AUTOCONF=yes
BOOTPROTO=dhcp
DEVICE=eno16777736
ONBOOT=yes
UUID=c3f0dc21-d2eb-48eb-aadf-10a520b13df0
TYPE=Ethernet
##DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME="System eno16777736"
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=00:0C:29:E2:06:E9

เช่นเดียวกับการกำหนดค่าด้วยที่อยู่ IP แบบคงที่ ตรวจสอบให้แน่ใจว่า BOOTPROTO ได้รับการตั้งค่าเป็น dhcp คำสั่ง DEFROUTE ได้รับการใส่ความคิดเห็นหรือลบออก และอุปกรณ์ได้รับการกำหนดค่าเป็น เริ่มต้นโดยอัตโนมัติเมื่อบู๊ต หากคุณไม่ได้ใช้ IPv6 เพียงลบหรือแสดงความคิดเห็นบรรทัดทั้งหมดที่มี IPV6

9. เพื่อที่จะใช้การกำหนดค่าใหม่สำหรับอินเทอร์เฟซเครือข่ายของคุณ คุณต้องรีสตาร์ทบริการเครือข่าย หลังจากที่คุณรีสตาร์ท daemon เครือข่ายแล้ว ให้ใช้ ifconfig
หรือคำสั่ง ip addr show เพื่อรับการตั้งค่าอินเทอร์เฟซของคุณและลองส่ง Ping ชื่อโดเมนเพื่อดูว่าเครือข่ายใช้งานได้หรือไม่

service network restart	## Use this command before systemctl
chkconfig network on
systemctl restart network
ifconfig
ping domain.tld

10. ในการตั้งค่าขั้นสุดท้าย ตรวจสอบให้แน่ใจว่าคุณได้ตั้งชื่อให้กับระบบ ชื่อโฮสต์ โดยใช้ยูทิลิตี้ hostnamectl และตรวจสอบการกำหนดค่าของคุณด้วย ชื่อโฮสต์ คำสั่ง

hostnamectl set-hostname FQDN_system_name
hostnamectl status
hostname
hostname -s   	## Short name
hostname -f   	## FQDN name

11. เท่านั้นเอง! ในการทดสอบครั้งสุดท้าย ให้รันคำสั่ง netstat อีกครั้งเพื่อดูว่าบริการใดบ้างที่ทำงานอยู่บนระบบของคุณ

netstat -tulpn
netstat -tulp

12. นอกจากเซิร์ฟเวอร์ SSH แล้ว หากเครือข่ายของคุณใช้ DHCP เพื่อดึงการกำหนดค่า IP แบบไดนามิก ไคลเอ็นต์ DHCP ควรทำงานและใช้งานบนพอร์ต UDP

netstat -tulpn

13. เป็นทางเลือกแทนยูทิลิตี netstat คุณสามารถส่งออกซ็อกเก็ตเครือข่ายที่ทำงานอยู่โดยใช้คำสั่ง Sockets Statistics

ss -tulpn 

14. รีบูทเซิร์ฟเวอร์ของคุณและรันคำสั่ง systemd-analize เพื่อพิจารณาประสิทธิภาพเวลาบูตระบบของคุณ และใช้ ฟรี และ ดิสก์
คำสั่งฟรี
เพื่อแสดงสถิติ RAM และ HDD และคำสั่ง top เพื่อดูทรัพยากรระบบที่ใช้มากที่สุด

free -h
df -h
top 

ยินดีด้วย! ตอนนี้ คุณมีสภาพแวดล้อมระบบ RHEL/CentOS 7 ที่เรียบง่ายสะอาดตา พร้อมติดตั้งและใช้งานบริการน้อยลง และมีทรัพยากรมากขึ้นสำหรับการกำหนดค่าในอนาคต

อ่านเพิ่มเติม: หยุดและปิดใช้งานบริการที่ไม่ต้องการจาก Linux