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

20 เคล็ดลับความปลอดภัยในการเสริมความแข็งแกร่งของเซิร์ฟเวอร์ CentOS - ตอนที่ 1


บทช่วยสอนนี้ครอบคลุมเฉพาะเคล็ดลับความปลอดภัยทั่วไปสำหรับ CentOS 8/7 ซึ่งสามารถใช้เพื่อทำให้ระบบแข็งแกร่งขึ้น เคล็ดลับรายการตรวจสอบมีวัตถุประสงค์เพื่อใช้เป็นส่วนใหญ่กับเซิร์ฟเวอร์ Bare-Metal ประเภทต่างๆ หรือบนเครื่อง (ทางกายภาพหรือเสมือน) ที่ให้บริการเครือข่าย

อย่างไรก็ตาม เคล็ดลับบางส่วนสามารถนำไปใช้กับเครื่องอเนกประสงค์ได้เช่นกัน เช่น เดสก์ท็อป แล็ปท็อป และคอมพิวเตอร์บอร์ดเดี่ยวขนาดการ์ด (Raspberry Pi)

ความต้องการ

  • CentOS 8 การติดตั้งขั้นต่ำ
  • CentOS 7 การติดตั้งขั้นต่ำ

1. การป้องกันทางกายภาพ

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

รหัสผ่าน BIOS สามารถเปลี่ยนได้โดยการรีเซ็ตจัมเปอร์บนเมนบอร์ดหรือโดยการถอดแบตเตอรี่ CMOS นอกจากนี้ ผู้บุกรุกสามารถขโมยฮาร์ดดิสก์หรือติดฮาร์ดดิสก์ใหม่โดยตรงกับอินเทอร์เฟซของเมนบอร์ด (SATA, SCSI ฯลฯ) บูตเครื่องด้วย Linux live distro และโคลนหรือคัดลอกข้อมูลโดยไม่ทิ้งร่องรอยของซอฟต์แวร์ใดๆ

2. ลดผลกระทบจากการสอดแนม

ในกรณีที่มีข้อมูลที่ละเอียดอ่อนสูง คุณควรใช้การป้องกันทางกายภาพขั้นสูง เช่น การวางและล็อคเซิร์ฟเวอร์ไว้ใน Faraday Cage หรือใช้โซลูชัน TEMPEST ทางการทหาร เพื่อลดผลกระทบของการสอดแนมระบบผ่านทางวิทยุหรือการรั่วไหลของไฟฟ้า

3. รักษาความปลอดภัย BIOS/UEFI

เริ่มต้นกระบวนการทำให้เครื่องของคุณแข็งแกร่งขึ้นโดยการรักษาความปลอดภัยการตั้งค่า BIOS/UEFI โดยเฉพาะการตั้งรหัสผ่าน BIOS/UEFI และปิดการใช้งานอุปกรณ์สื่อสำหรับบูต (CD, DVD, ปิดการใช้งานการสนับสนุน USB) ใน เพื่อป้องกันไม่ให้ผู้ใช้ที่ไม่ได้รับอนุญาตแก้ไขการตั้งค่า BIOS ของระบบหรือเปลี่ยนลำดับความสำคัญของอุปกรณ์บู๊ตและการบู๊ตเครื่องจากสื่ออื่น

เพื่อที่จะใช้การเปลี่ยนแปลงประเภทนี้กับเครื่องของคุณ คุณต้องอ่านคำแนะนำเฉพาะจากคู่มือผู้ผลิตเมนบอร์ด

4. ตัวโหลดการบูตที่ปลอดภัย

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

5. ใช้พาร์ติชั่นดิสก์แยกกัน

เมื่อติดตั้ง CentOS บนระบบที่ใช้เป็นเซิร์ฟเวอร์ที่ใช้งานจริง ให้ใช้พาร์ติชันเฉพาะหรือฮาร์ดดิสก์เฉพาะสำหรับส่วนต่อไปนี้ของระบบ:

/(root) 
/boot  
/home  
/tmp 
/var 

6. ใช้ LVM และ RAID เพื่อความซ้ำซ้อนและการเติบโตของระบบไฟล์

พาร์ติชัน /var เป็นสถานที่สำหรับเขียนข้อความบันทึกลงดิสก์ ส่วนนี้ของระบบสามารถขยายขนาดได้แบบทวีคูณบนเซิร์ฟเวอร์ที่มีการรับส่งข้อมูลจำนวนมากซึ่งเปิดเผยบริการเครือข่าย เช่น เว็บเซิร์ฟเวอร์หรือไฟล์เซิร์ฟเวอร์

ดังนั้น ให้ใช้พาร์ติชั่นขนาดใหญ่สำหรับ /var หรือพิจารณาตั้งค่าพาร์ติชั่นนี้โดยใช้โลจิคัลวอลุ่ม (LVM) หรือรวมฟิสิคัลดิสก์หลายตัวเป็นอุปกรณ์ RAID 0 เสมือนที่มีขนาดใหญ่กว่าตัวเดียวเพื่อรักษาขนาดใหญ่ จำนวนข้อมูล สำหรับข้อมูล ความซ้ำซ้อนให้พิจารณาใช้เค้าโครง LVM ที่ด้านบนของระดับ RAID 1

สำหรับการตั้งค่า LVM หรือ RAID บนดิสก์ ให้ปฏิบัติตามคำแนะนำที่เป็นประโยชน์ของเรา:

  1. ตั้งค่า Disk Storage ด้วย LVM ใน Linux
  2. สร้างดิสก์ LVM โดยใช้ vgcreate, lvcreate และ lvextend
  3. รวมดิสก์หลาย ๆ อันไว้ในที่เก็บข้อมูลเสมือนขนาดใหญ่ที่เดียว
  4. สร้าง RAID 1 โดยใช้ดิสก์สองตัวใน Linux

7. แก้ไขตัวเลือก fstab เพื่อรักษาความปลอดภัยพาร์ติชันข้อมูล

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

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

เพื่อป้องกันการเลื่อนระดับสิทธิ์และการดำเนินการสคริปต์ตามอำเภอใจ ให้สร้างพาร์ติชันแยกต่างหากสำหรับ /tmp และต่อเชื่อมเป็น nosuid, nodev และ noexec .

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. เข้ารหัสฮาร์ดดิสก์ในระดับบล็อกด้วย LUKS

เพื่อป้องกันการสอดแนมข้อมูลที่ละเอียดอ่อนในกรณีที่มีการเข้าถึงฮาร์ดไดรฟ์ของเครื่อง ฉันขอแนะนำให้คุณเรียนรู้วิธีเข้ารหัสดิสก์โดยอ่านบทความของเรา การเข้ารหัสข้อมูลฮาร์ดดิสก์ Linux ด้วย LUKS

9. ใช้ PGP และการเข้ารหัสคีย์สาธารณะ

ในการเข้ารหัสดิสก์ ให้ใช้คำสั่ง PGP และ Public-Key Cryptography หรือ OpenSSL เพื่อเข้ารหัสและถอดรหัสไฟล์ที่ละเอียดอ่อนด้วยรหัสผ่านดังที่แสดงในบทความนี้ กำหนดค่าที่เก็บข้อมูลระบบ Linux ที่เข้ารหัส

10. ติดตั้งเฉพาะจำนวนแพ็คเกจขั้นต่ำที่จำเป็นเท่านั้น

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

11. อัพเดตระบบบ่อยๆ

อัพเดตระบบอย่างสม่ำเสมอ ทำให้เคอร์เนล Linux ซิงค์กับแพตช์รักษาความปลอดภัยล่าสุดและซอฟต์แวร์ที่ติดตั้งทั้งหมดให้ทันสมัยเป็นเวอร์ชันล่าสุดโดยออกคำสั่งด้านล่าง:

yum update

12. ปิดการใช้งาน Ctrl+Alt+Del

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

systemctl mask ctrl-alt-del.target 

13. ลบแพ็คเกจซอฟต์แวร์ที่ไม่จำเป็น

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

ตรวจสอบแพ็คเกจที่ติดตั้งโดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:

rpm -qa

สร้างรายการโลคัลของแพ็คเกจที่ติดตั้งทั้งหมด

yum list installed >> installed.txt

ศึกษารายการซอฟต์แวร์ที่ไม่มีประโยชน์และลบแพ็คเกจโดยออกคำสั่งด้านล่าง:

yum remove package_name

14. เริ่มบริการ Systemd ใหม่หลังจากอัพเดต Daemon

ใช้ตัวอย่างคำสั่งด้านล่างเพื่อรีสตาร์ทบริการ systemd เพื่อใช้การอัปเดตใหม่

systemctl restart httpd.service

15. ลบบริการที่ไม่จำเป็นออก

ระบุบริการที่กำลังฟังบนพอร์ตเฉพาะโดยใช้คำสั่ง ss ต่อไปนี้

ss -tulpn

หากต้องการแสดงรายการบริการที่ติดตั้งทั้งหมดพร้อมกับปัญหาสถานะเอาต์พุตให้ใช้คำสั่งด้านล่าง:

systemctl list-units -t service

ตัวอย่างเช่น การติดตั้งขั้นต่ำเริ่มต้นของ CentOS มาพร้อมกับ Postfix daemon ที่ติดตั้งตามค่าเริ่มต้น ซึ่งทำงานตามชื่อของต้นแบบภายใต้พอร์ต 25 ลบบริการเครือข่าย Postfix ในกรณีที่เครื่องของคุณจะไม่ถูกใช้เป็นเมลเซิร์ฟเวอร์

yum remove postfix

16. เข้ารหัสข้อมูลที่ส่ง

อย่าใช้โปรโตคอลที่ไม่ปลอดภัยสำหรับการเข้าถึงระยะไกลหรือการถ่ายโอนไฟล์ เช่น Telnet, FTP หรือโปรโตคอลข้อความธรรมดาสูงอื่นๆ เช่น SMTP, HTTP, NFS หรือ SMB ซึ่งโดย โดยค่าเริ่มต้น จะไม่เข้ารหัสเซสชันการตรวจสอบสิทธิ์หรือข้อมูลที่ส่ง

ใช้เฉพาะ sftp, scp สำหรับการถ่ายโอนไฟล์ และใช้ SSH หรือ VNC บนช่องทาง SSH สำหรับการเชื่อมต่อคอนโซลระยะไกลหรือการเข้าถึง GUI

ในการสร้างคอนโซล VNC ผ่าน SSH ให้ใช้ตัวอย่างด้านล่างซึ่งส่งต่อพอร์ต VNC 5901 จากเครื่องระยะไกลไปยังเครื่องท้องถิ่นของคุณ:

ssh -L 5902:localhost:5901 remote_machine

บนเครื่องท้องถิ่นให้รันคำสั่งด้านล่างเพื่อเชื่อมต่อเสมือนกับปลายทางระยะไกล

vncviewer localhost:5902

17. การสแกนพอร์ตเครือข่าย

ดำเนินการตรวจสอบพอร์ตภายนอกโดยใช้เครื่องมือ Nmap จากระบบระยะไกลผ่าน LAN การสแกนประเภทนี้สามารถใช้เพื่อตรวจสอบช่องโหว่ของเครือข่ายหรือทดสอบกฎไฟร์วอลล์

nmap -sT -O 192.168.1.10

18. ไฟร์วอลล์กรองแพ็คเก็ต

ใช้ยูทิลิตี firewalld เพื่อปกป้องพอร์ตของระบบ เปิดหรือปิดพอร์ตบริการเฉพาะ โดยเฉพาะพอร์ตที่รู้จัก (<1024)

ติดตั้ง เริ่มต้น เปิดใช้งาน และแสดงรายการกฎไฟร์วอลล์โดยใช้คำสั่งด้านล่าง:

yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all

19. ตรวจสอบโปรโตคอลแพ็กเก็ตด้วย Tcpdump

ใช้ยูทิลิตี้ tcpdump เพื่อดักจับแพ็กเก็ตเครือข่ายในเครื่อง และตรวจสอบเนื้อหาเพื่อหาการรับส่งข้อมูลที่น่าสงสัย (พอร์ตต้นทาง-ปลายทาง, โปรโตคอล TCP/IP, การรับส่งข้อมูลเลเยอร์สอง, คำขอ ARP ที่ผิดปกติ)

เพื่อการวิเคราะห์ไฟล์ tcpdump ที่จับได้ดียิ่งขึ้น ให้ใช้โปรแกรมขั้นสูง เช่น Wireshark

tcpdump -i eno16777736 -w tcpdump.pcap

20. ป้องกันการโจมตี DNS

ตรวจสอบเนื้อหาของรีโซลเวอร์ของคุณ ซึ่งโดยทั่วไปคือไฟล์ /etc/resolv.conf ซึ่งกำหนดที่อยู่ IP ของเซิร์ฟเวอร์ DNS ที่ควรใช้เพื่อค้นหาชื่อโดเมน เพื่อหลีกเลี่ยงไม่ให้มีคนในเครื่อง - การโจมตีระดับกลาง, การรับส่งข้อมูลที่ไม่จำเป็นสำหรับเซิร์ฟเวอร์ DNS รูท, การปลอมแปลงหรือสร้างการโจมตี DOS

นี่เป็นเพียงส่วนแรก ในส่วนถัดไป เราจะพูดถึงเคล็ดลับด้านความปลอดภัยอื่นๆ สำหรับ CentOS 8/7