กำลังเชื่อมต่อกับ centos 7 ผ่าน ssh สร้างกฎสำหรับแอปพลิเคชัน ขั้นตอนที่ 2: สร้างผู้ใช้ใหม่

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

ขั้นตอนที่ 1: เปลี่ยนรหัสผ่านสำหรับบัญชี - รูท

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

มาตั้งค่ากัน รหัสผ่านใหม่สำหรับราก

ขั้นตอนที่ 2: สร้างผู้ใช้ใหม่

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

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

มาสร้างบัญชีใหม่ซึ่งเราจะทำงานบนเซิร์ฟเวอร์เสมอ

ชื่อผู้ใช้ adduser

มาเพิ่มรหัสผ่านเพื่อเข้าสู่ระบบกัน

หากคุณลืมรหัสผ่านกะทันหันคุณสามารถตั้งรหัสผ่านใหม่ได้ด้วยคำสั่งเดียวกันและ รหัสผ่านเก่าจะถูกรีเซ็ต

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

ซึ่งสามารถทำได้โดยการเพิ่มบัญชีในกลุ่ม superuser - วงล้อ

gpasswd - วงล้อชื่อผู้ใช้

ตอนนี้ชื่อผู้ใช้ใหม่สามารถรันคำสั่งในฐานะรูทโดยใช้ยูทิลิตี sudo

หากต้องการเปลี่ยนไปใช้บัญชีผู้ใช้ใหม่ ให้ใช้คำสั่ง su:

ขั้นตอนที่ 3: เปิดใช้งานไฟร์วอลล์

เพื่อป้องกันสิ่งที่ไม่พึงประสงค์ การเชื่อมต่อภายนอกด้วยเซิร์ฟเวอร์ของเรา คุณต้องติดตั้งและเปิดใช้งานไฟร์วอลล์

มาติดตั้งบริการไฟร์วอลล์:

sudo yum ติดตั้งไฟร์วอลล์

มาเปิดใช้งานไฟร์วอลล์และเพิ่มลงในรายการบริการเพื่อเริ่มอัตโนมัติเมื่อระบบรีสตาร์ท:

sudo systemctl เริ่มไฟร์วอลล์;
sudo systemctl เปิดใช้งานไฟร์วอลล์;

ขั้นตอนที่ #4: ตั้งค่าการกำหนดค่า SSH

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

มาเปิดไฟล์กำหนดค่า - /etc/ssh/sshd_config:

sudo vi /etc/ssh/sshd_config.php

มาเปลี่ยนค่าของคำสั่ง PermitRootLogin

#PermitRootLogin ใช่ PermitRootLogin ไม่ใช่

#PermitRootLogin ใช่

หมายเลข PermitRootLogin

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

เราจะเปลี่ยนหมายเลขมาตรฐานด้วย พอร์ตเอสเอสเอช, เพราะ มันอยู่บนพอร์ตมาตรฐาน 22 ที่โปรแกรมกำลังดุร้ายเข้ามาทำงาน

พอร์ตทั้งหมดสามารถแบ่งออกเป็นสามกลุ่ม:

  • 0 - 1,023 - ดี ท่าเรือที่มีชื่อเสียงรวมถึงอ้างถึงพอร์ตระบบด้วย
  • 1024 - 49151 - พอร์ตที่ลงทะเบียน ยังหมายถึงพอร์ตผู้ใช้ด้วย
  • 49152 - 65535 - พอร์ตไดนามิก ซึ่งจัดเป็นพอร์ตส่วนตัวด้วย

ขั้นแรก ให้เลือกหมายเลขพอร์ตที่ SSH จะทำงาน ขอแนะนำให้เลือกค่าหมายเลขพอร์ตภายในช่วง 49152 - 65535 ในการเลือกพอร์ต คุณต้องตรวจสอบก่อนว่ามีบริการอื่นครอบครองอยู่หรือไม่ เช่น ฉันจะเลือกหมายเลขพอร์ต 63356

ตรวจสอบว่าพอร์ต 63356 ไม่ว่างด้วยคำสั่งต่อไปนี้:

แมว /etc/services | grep 63356/tcp

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

ตอนนี้ในไฟล์ /etc/ssh/sshd_config เราเปลี่ยนค่าของคำสั่ง Port:

#พอร์ต22พอร์ต63356

#ท่าเรือ22

พอร์ต 63356

มาเริ่มบริการ SSH ใหม่เพื่อยอมรับการตั้งค่า

sudo systemctl รีสตาร์ท sshd

มาบอกไฟร์วอลล์ให้อนุญาตการเชื่อมต่อบนพอร์ต SSH ใหม่ - 63356

sudo firewall-cmd --zone=public --permanent --add-port=63356/tcp;
sudo firewall-cmd -- โหลดซ้ำ;

ตรวจสอบให้แน่ใจว่าพอร์ตที่เพิ่มเข้ามานั้นกำลังฟังอยู่ (ใช้งานอยู่):

เอสเอส -lntu | เกรป 63356

$ss -lntu | เกรป 63356
TCP ฟัง 0 128 *:63356 *:*
TCP ฟัง 0 128:::63356:::*

ตอนนี้เพื่อที่จะเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH คุณจะต้องระบุหมายเลขพอร์ตอย่างชัดเจนเสมอ

ssh ชื่อผู้ใช้@server_ip_adress -p 63356

ขั้นตอนที่ #5: การเปลี่ยนชื่อเซิร์ฟเวอร์ (ชื่อโฮสต์)

โฮสต์มักจะตั้งค่าของตัวแปร $HOSTNAME บนเซิร์ฟเวอร์ VPS ที่เช่าตามดุลยพินิจของตน มาเปลี่ยนชื่อโฮสต์เริ่มต้นเป็นอย่างอื่นกัน ส่วนใหญ่ชื่อโฮสต์จะเป็นโดเมนบางประเภท

ข้อมูลทั้งหมดเกี่ยวกับชื่อโฮสต์สามารถพบได้ด้วยคำสั่งต่อไปนี้:

สถานะโฮสต์ชื่อ

สถานะ $hostnamectl
ชื่อโฮสต์แบบคงที่: hostername.ru
ชื่อไอคอน: คอมพิวเตอร์-vm
แชสซี: vm
รหัสเครื่อง:
รหัสการบูต:
การจำลองเสมือน: kvm
ระบบปฏิบัติการ: CentOS ลินุกซ์ 7 (คอร์)
ชื่อระบบปฏิบัติการ CPE: cpe:/o:centos:centos:7
เคอร์เนล: Linux 3.10.0-693.2.2.el7.x86_64
สถาปัตยกรรม: x86-64

มาเปลี่ยนชื่อเซิร์ฟเวอร์กันเถอะ:

sudo hostnamectl ชุดชื่อโฮสต์ "example.ru"

ตรวจสอบให้แน่ใจว่าเปลี่ยนชื่อแล้ว:

ขั้นตอนที่ 6: ตั้งค่าเขตเวลา

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

ตรวจสอบว่าเซิร์ฟเวอร์ของเราทำงานในโซนเวลาใด:

รับรายการโซนเวลาที่ใช้ได้:

timedatectl รายการเขตเวลา

ฉันอาศัยอยู่ในเขตเวลาของมอสโก ดังนั้นจึงสะดวกสำหรับฉันที่จะให้เซิร์ฟเวอร์ทำงานในเวลาเดียวกัน

คุณสามารถตั้งเวลาเซิร์ฟเวอร์ในมอสโกได้ดังนี้:

timedatectl กำหนดเขตเวลายุโรป/มอสโก

ขั้นตอนที่ 7: การตั้งค่าสถานที่

ตำแหน่งที่ตั้งจะกำหนดภาษาที่ระบบใช้ รวมถึงคุณลักษณะระดับภูมิภาค เช่น สกุลเงิน รูปแบบตัวเลข วันที่ และชุดอักขระ

รายการสถานที่ที่มีอยู่ทั้งหมดจะถูกจัดเก็บไว้ในไดเร็กทอรี - /usr/share/i18n/locales

คุณสามารถดูสถานที่ที่ใช้โดยใช้คำสั่งด้านล่าง:

$สถานที่
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

หากคุณต้องการตั้งค่าภาษารัสเซียสำหรับรูปแบบใดๆ เช่น เวลา ให้ใช้คำสั่งต่อไปนี้:

sudo localectl ชุด-locale LC_TIME=ru_RU.UTF-8

ภาษาอันเป็นผลมาจากการดำเนินการคำสั่ง date จะเปลี่ยนเป็นภาษารัสเซีย (หลังจากรีบูตเซิร์ฟเวอร์)

หากต้องการติดตั้งภาษารัสเซียบนระบบให้ใช้คำสั่ง:

sudo localectl set-locale LANG=ru_RU.UTF-8

การตั้งค่าภาษารัสเซียสำหรับตัวแปรสภาพแวดล้อมทั้งหมด:

sudo localectl ชุด-locale LC_ALL=ru_RU.UTF-8

การตรวจสอบการติดตั้งโลแคล:

สถานะลาคาเล็คเทิล

ขั้นตอนที่ 8: ปิดการใช้งาน SElinux

ซีลีนุกซ์(อังกฤษ: Security-Enhanced Linux - Linux พร้อมความปลอดภัยที่ได้รับการปรับปรุง) - การใช้งานระบบควบคุมการเข้าใช้งานแบบบังคับซึ่งสามารถทำงานคู่ขนานกับระบบควบคุมการเข้าออกแบบเลือกคลาสสิก

แม้ว่า SElinux จะปรับปรุงการจัดการความปลอดภัย แต่ก็มีแนวโน้มที่จะขัดขวางมากกว่าที่จะนำมา ประโยชน์ที่แท้จริงฉันเลยแนะนำให้ปิดมัน

คุณสามารถตรวจสอบว่าเปิดใช้งาน SElinux หรือไม่ด้วยคำสั่งด้านล่าง:

หากต้องการปิดการใช้งาน SElinux ให้แก้ไขไฟล์ - /etc/selinux/config และตั้งค่าคำสั่ง SELINUX เป็น ค่าที่ปิดใช้งาน.

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

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

1. การตั้งค่าที่อยู่ IP แบบคงที่

สิ่งแรกที่คุณต้องทำคือตั้งค่าเครือข่ายของคุณ บน คอมพิวเตอร์ส่วนบุคคลเราใช้ DHCP เพื่อรับที่อยู่ IP และคอมพิวเตอร์จะมีที่อยู่ที่แตกต่างกันทุกครั้งที่เริ่มทำงาน เซิร์ฟเวอร์จะต้องทำงานบนที่อยู่เดียวกันเสมอ ดังนั้นเราจึงกำหนด IP แบบคงที่ให้กับมัน คุณต้องกำหนดค่า DNS และเกตเวย์เริ่มต้นด้วย แต่ก่อนอื่นให้ติดตั้งยูทิลิตี้ net-tools:

ยำติดตั้ง net-tools

ก่อนอื่นเรามาดูสิ่งที่มีอยู่กันก่อน อินเทอร์เฟซเครือข่ายและที่อยู่ IP ปัจจุบัน:

ตอนนี้คุณสามารถดำเนินการกำหนดค่าอินเทอร์เฟซผ่านไฟล์ /etc/sysconfig/network-scripts/ifcfg-enp0s3 ได้ ตัวอย่างเช่น โดยใช้โปรแกรมแก้ไข vi:

vi /etc/sysconfig/เครือข่ายสคริปต์/ifcfg-enp0s3

IPADDR = your_ip
GATEWAY = เกตเวย์_สำหรับ_เครือข่าย_การเข้าถึง
DNS1 = IP_address_DNS1
DNS2 = IP_address_DNS2

หลังจากทำการเปลี่ยนแปลง ไฟล์นี้จะมีลักษณะดังนี้:

สิ่งที่เหลืออยู่คือการรีบูตเครือข่ายเพื่อใช้การตั้งค่าใหม่:

รีสตาร์ทเครือข่ายบริการ

จากนั้นหากจำเป็น คุณสามารถเปลี่ยนที่อยู่ IP ได้ในลักษณะเดียวกัน

2. ชื่อคอมพิวเตอร์

สิ่งต่อไปที่เราต้องทำคือเปลี่ยนชื่อคอมพิวเตอร์ ชื่อคอมพิวเตอร์ปัจจุบันถูกจัดเก็บไว้ในตัวแปร HOSTNAME:

หากต้องการเปลี่ยน คุณต้องแก้ไขไฟล์ /etc/hostname และเปลี่ยนชื่อเก่าที่นั่นด้วยชื่อใหม่

vi /etc/hostname.vi

คุณยังสามารถใช้คำสั่ง hostnamectl:

ชื่อโฮสต์ ชุดชื่อโฮสต์ "ชื่อโฮสต์"

3. อัพเดต CentOS

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

ยำอัปเดต && ยำอัปเกรด

4. ติดตั้งเบราว์เซอร์

ในหลายกรณี คุณต้องใช้ CentOS จากบรรทัดคำสั่งโดยไม่มี GUI ดังนั้นคุณอาจต้องใช้เบราว์เซอร์เพื่อค้นหาบางสิ่งบนอินเทอร์เน็ต หรือตรวจสอบการทำงานของไซต์จากบรรทัดคำสั่ง หากต้องการติดตั้งลิงก์เบราว์เซอร์ ให้พิมพ์:

ลิงค์ติดตั้งยำ

คุณสามารถค้นหาคอนโซลเบราว์เซอร์อื่นๆ สำหรับ Linux ได้ เช่น Lynx หรือ Elinks

5. การตั้งค่าเขตเวลา

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

ขั้นแรกให้รับรายการเขตเวลา:

timedatectl รายการเขตเวลา

จากนั้นติดตั้งสิ่งที่คุณต้องการ เช่น ยุโรป/เคียฟ:

timedatectl ชุดเขตเวลายุโรป/เคียฟ

จากนั้นตรวจสอบ:

7. การตั้งค่าสถานที่

สถานที่จะกำหนดภาษาและการเข้ารหัสที่จะใช้กับระบบของคุณ เช่น หากต้องการเปิดใช้งานภาษารัสเซีย ให้ตั้งค่าเป็น ru_RU.UTF-8

localectl ชุด-locale LANG=ru_RU.UTF-8

ถ้าอย่างนั้นเรามาดูกันว่าเกิดอะไรขึ้น:

จากนั้นตั้งค่ารูปแบบแป้นพิมพ์:

localectl set-keymap เรา

8. ปิดการใช้งาน SELinux

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

sed -i "s/(^SELINUX=).*/SELINUX=disabled/" /etc/selinux/config

จากนั้นรีสตาร์ทคอมพิวเตอร์และตรวจสอบว่าคุณลักษณะนี้ถูกปิดใช้งานจริงหรือไม่:

9. สร้างผู้ใช้

การใช้ระบบในฐานะผู้ใช้ขั้นสูงนั้นไม่ปลอดภัย และการออกไปนั้นยิ่งไม่ปลอดภัยอีกด้วย เปิดการเข้าถึงไปยังบัญชีรูทผ่าน ssh ขั้นแรกให้สร้าง ผู้ใช้ปกติและตั้งรหัสผ่านให้:

ผู้ใช้เพิ่มชื่อผู้ใช้
#รหัสผ่านรหัสผ่าน

จากนั้นเพิ่มผู้ใช้ในกลุ่มล้อเพื่อให้ผู้ใช้สามารถเรียกใช้ในฐานะผู้ดูแลระบบ:

usermod -G ชื่อผู้ใช้ล้อ

ตอนนี้สิ่งที่เหลืออยู่คือการแก้ไขการตั้งค่า sudo โดยเพิ่มบรรทัดต่อไปนี้หากยังไม่มี:

% ล้อทั้งหมด = (ทั้งหมด) ทั้งหมด

10. เปิดใช้งานที่เก็บข้อมูลของบุคคลที่สาม

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

หากต้องการเพิ่ม Enterprise Linux Repository (EPEL) ให้รัน:

ยำติดตั้ง epel-release
# รอบต่อนาที -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

10. การตั้งค่า SSH

บ่อยครั้งที่เราต้องทำงานกับเซิร์ฟเวอร์ไม่ใช่โดยตรง แต่ทำงานผ่านเครือข่ายผ่าน SSH โดยปกติแล้วบริการ SSH จะได้รับการติดตั้งและเปิดใช้งานแล้ว แต่สำหรับบริการดังกล่าว การดำเนินงานที่เหมาะสมมีการตั้งค่าบางอย่างที่คุณต้องทำ ก่อนอื่นคุณต้องกำหนดค่าให้ใช้งานเท่านั้น โปรโตคอลที่ปลอดภัยในการดำเนินการนี้ ให้เปิดไฟล์ /etc/ssh/ssh_config และลบบรรทัด Protocol 2.1 และเพิ่มแทน:

คุณต้องปิดการใช้งานการเข้าสู่ระบบในฐานะ superuser:

หมายเลข PermitRootLogin

11. ติดตั้ง Apache เว็บเซิร์ฟเวอร์

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

ยำติดตั้ง httpd

เมื่อการติดตั้งเสร็จสมบูรณ์ คุณจะต้องเปิดใช้งาน HTTP ในไฟร์วอลล์ของคุณก่อนจึงจะสามารถดำเนินการต่อได้:

ไฟร์วอลล์-cmd --add-service=http
# ไฟร์วอลล์-cmd - ถาวร - เพิ่มพอร์ต = 3221 / tcp
# ไฟร์วอลล์-cmd --reload

ตอนนี้สิ่งที่เหลืออยู่คือเพิ่ม Apache ลงในการเริ่มต้น:

systemctl เริ่ม httpd.service
# systemctl เปิดใช้งาน httpd.service

12. ติดตั้ง PHP

PHP คือ ภาษาสมัยใหม่เว็บแอปพลิเคชันและสคริปต์ มักใช้เป็นภาษาโปรแกรม วัตถุประสงค์ทั่วไป- ในการติดตั้ง:

หลังการติดตั้งคุณต้องรีสตาร์ท Apache:

เสียงสะท้อน -e ""> /var/www/html/phpinfo.php

จากนั้นเปิดไฟล์ที่สร้างขึ้นในเบราว์เซอร์ของคุณ:

ลิงค์ http://127.0.0.1/phpinfo.php

13. การติดตั้งฐานข้อมูล

MariaDB เป็นฐานข้อมูลที่ใช้ซอร์สโค้ด MySQL การกระจาย Linux บน Red Hat ใช้ MariaDB แทน MySQL ฐานข้อมูล - สิ่งที่ไม่สามารถถูกแทนที่ได้บนเซิร์ฟเวอร์ ดังนั้นการกำหนดค่า CentOS หลังการติดตั้งจะต้องรวมการติดตั้งด้วย หากต้องการติดตั้ง MariaDB ให้พิมพ์:

ยำติดตั้งเซิร์ฟเวอร์ mariadb mariadb

จากนั้นรันและเพิ่มในการเริ่มต้น:

systemctl เริ่ม mariadb.service
# systemctl เปิดใช้งาน mariadb.service

และอนุญาตการบริการในไฟร์วอลล์:

ไฟร์วอลล์-cmd --add-service=mysql

สิ่งที่เหลืออยู่คือการเรียกใช้สคริปต์การตั้งค่า:

/usr/bin/mysql_secure_installation

14. ติดตั้ง GCC

GCC ย่อมาจาก GNU Compiler Collection ซึ่งเป็นชุดคอมไพเลอร์ที่ถือเป็นมาตรฐานสำหรับการสร้างโปรแกรมบน Linux แต่มันไม่ได้มาพร้อมกับ CentOS ตามค่าเริ่มต้น ดังนั้นในการติดตั้ง ให้พิมพ์:

จากนั้นคุณสามารถดูเวอร์ชัน GCC:

15. ติดตั้งจาวา

Java เป็นภาษาโปรแกรมเชิงวัตถุประสงค์ทั่วไป จะไม่มีการติดตั้งตามค่าเริ่มต้น ดังนั้นการกำหนดค่า CentOS 7 หลังการติดตั้งอาจรวมถึงการติดตั้งด้วย เมื่อต้องการทำเช่นนี้ ให้รัน:

ยำติดตั้ง java

จากนั้นตรวจสอบเวอร์ชัน:

ข้อสรุป

ในบทความนี้ เราดูวิธีกำหนดค่าเซิร์ฟเวอร์ CentOS 7 หลังการติดตั้ง อย่างที่คุณเห็น มีขั้นตอนพื้นฐานมากมายที่แนะนำให้ทำก่อนใช้เซิร์ฟเวอร์ในการผลิต หากคุณมีคำถามใด ๆ ถามในความคิดเห็น!

ฉันมีเซิร์ฟเวอร์ CentOS 7 ที่ติดตั้งใหม่บน VDS ด้วย การจำลองเสมือน KVM- ฉันจะพูดถึงวิธีการตั้งค่าเซิร์ฟเวอร์ขั้นพื้นฐานเพื่อใช้งานในปริมาณเท่าใดก็ได้ตามดุลยพินิจของคุณ นี่อาจเป็นเว็บเซิร์ฟเวอร์, เซิร์ฟเวอร์ VPN, เซิร์ฟเวอร์ตรวจสอบ ฉันจะพูดถึงการตั้งค่าเริ่มต้นของระบบ CentOS ซึ่งเพิ่มความปลอดภัยและความสะดวกในการทำงานกับเซิร์ฟเวอร์ ฉันทราบว่าในระบบเวอร์ชันที่ 7 มีการเปลี่ยนแปลงบางอย่างเมื่อเทียบกับเวอร์ชันก่อนหน้า

การแนะนำ

การตั้งค่าเริ่มต้นของ CentOS 7

ดังนั้นเราจึงมี: # uname -a Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP พฤหัสบดีที่ 29 มกราคม 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ก่อนอื่นเรามาอัพเดตกันก่อน ระบบพื้นฐาน:

# yum -y อัปเดต

เพื่อความสะดวกในการดูแลระบบ ฉันจะติดตั้งอยู่เสมอ ผู้บัญชาการเที่ยงคืนหรือเพียงแค่ mc:

#ifconfig

แล้วคุณจะเห็นคำตอบ:

Bash: ifconfig: ไม่พบคำสั่ง

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

แทนที่จะใช้ ifconfig ใน CentOS 7 ตอนนี้มียูทิลิตี้แล้ว ไอพี- ฉันไม่เข้าใจว่าทำไมถึงมีโปรแกรมควบคุมแยกต่างหาก การตั้งค่าเครือข่ายถ้า ifconfig จัดการกับงานได้อย่างสมบูรณ์แบบแล้ว นอกจากนี้ฉันชอบสิ่งนั้นมาโดยตลอด การแจกแจงต่างๆ Linux เป็นเรื่องเกี่ยวกับเดียวกัน การใช้ ifconfig คุณสามารถกำหนดค่าเครือข่ายได้ไม่เฉพาะใน Linux เท่านั้น แต่ยังรวมถึงใน freebsd ด้วย สะดวกครับ. และเมื่อแต่ละการแจกแจงมีเครื่องมือของตัวเอง มันก็ไม่สะดวก ดังนั้นฉันขอแนะนำให้ติดตั้ง ifconfig ปกติ

มาทำสิ่งนี้กัน:

# yum -y ติดตั้ง net-tools.x86_64

ตอนนี้ เพื่อให้ nslookup หรือคำสั่งโฮสต์ทำงานได้ เราจำเป็นต้องติดตั้งแพ็คเกจ bind-utils หากยังไม่เสร็จสิ้น ให้ใช้คำสั่ง:

#nslookup

ผลลัพธ์จะเป็น:

Bash: nslookup: ไม่พบคำสั่ง

ดังนั้นเรามาติดตั้งbind-utils:

# yum -y ติดตั้ง bind-utils

ปิดการใช้งาน SELinux การใช้และการกำหนดค่าเป็นเรื่องแยกต่างหาก ฉันจะไม่ทำสิ่งนี้ตอนนี้ ลองปิดมันดู:

# mcedit /etc/sysconfig/selinux

เปลี่ยนค่า
SELINUX=ปิดการใช้งาน
เพื่อให้การเปลี่ยนแปลงมีผล ให้รีบูต:

# รีบูต

การระบุพารามิเตอร์เครือข่าย

การเพิ่มที่เก็บข้อมูล

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

# yum -y ติดตั้ง epel-release

ติดตั้ง rpmforge:

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # yum -y ติดตั้ง http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3 -1.el7.rf.x86_64.รอบต่อนาที

การติดตั้ง iftop, atop, htop บน CentOS 7

และสุดท้าย เรามาเพิ่มยูทิลิตี้ที่มีประโยชน์บางอย่างที่อาจมีประโยชน์ระหว่างการทำงานของเซิร์ฟเวอร์

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

# yum -y ติดตั้ง iftop

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

# yum -y ติดตั้ง htop # yum -y ติดตั้งบนยอด

นี่คือลักษณะของ htop:

นั่นคือทั้งหมดสำหรับฉัน การตั้งค่าพื้นฐาน CentOS 7 เสร็จสิ้น คุณสามารถเริ่มการติดตั้งและกำหนดค่าฟังก์ชันการทำงานหลักได้

บทสรุป

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

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

  1. ตัวอย่างของการตั้งค่าเซิร์ฟเวอร์การมอนิเตอร์ zabbix หรือเชื่อมต่อ centos กับการมอนิเตอร์โดยการติดตั้งเอเจนต์เท่านั้น
  2. การตั้งค่าการแจ้งเตือนทางอีเมล zabbix ผ่านเซิร์ฟเวอร์ smtp บุคคลที่สาม
  3. การตรวจสอบโดยละเอียดของเว็บเซิร์ฟเวอร์โดยใช้ nginx + php-fpm
  4. ระบบตรวจสอบเว็บไซต์ตาม zabbix
  5. ตรวจสอบการจำลองแบบ mysql ใน zabbix

วิดีโอการตั้งค่า CentOS 7

15 สิงหาคม 2557 12:57 น 12,380 วิว | ไม่มีความคิดเห็น

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

1: เข้าสู่ระบบในฐานะผู้ใช้รูท

เมื่อคุณมีที่อยู่ IP และรหัสผ่านรูทแล้ว ให้เข้าสู่ระบบเซิร์ฟเวอร์ในฐานะผู้ใช้หลัก (รูท) หากต้องการทำสิ่งนี้ ให้ใช้คำสั่ง (แทนที่ IP ที่จัดสรรด้วยที่อยู่ IP ของคุณ):

สช [ป้องกันอีเมล]

เทอร์มินัลจะส่งคืนสิ่งที่ต้องการ:

ไม่สามารถสร้างความถูกต้องของโฮสต์ "111.22.33.444 (111.22.33.444)" ได้
ลายนิ้วมือคีย์ ECDSA คือ 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0
คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่)

เลือกใช่และป้อนรหัสผ่านรูทของคุณ

บันทึก: ไม่แนะนำให้ใช้บัญชีรูทเป็นประจำ คู่มือนี้จะช่วยคุณสร้างผู้ใช้รายอื่นสำหรับงานถาวร

2: เปลี่ยนรหัสผ่านของคุณ

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

เกี่ยวกับรหัสผ่านที่คุณตั้งไว้ ระบบเซนโอเอสระมัดระวังมาก ดังนั้นหลังจากป้อนรหัสผ่านใหม่แล้ว การแจ้งเตือน BAD PASSWORD อาจปรากฏขึ้น คุณสามารถติดตั้งเพิ่มเติมได้ รหัสผ่านที่ซับซ้อนหรือเพิกเฉยต่อข้อความ: ในความเป็นจริง CentOS จะยอมรับแม้จะง่ายเกินไปหรือ รหัสผ่านสั้นแม้ว่าจะแนะนำให้ใช้ชุดค่าผสมที่ซับซ้อนกว่านี้ก็ตาม

3: สร้างผู้ใช้ใหม่

หลังจากเข้าสู่ระบบเซิร์ฟเวอร์และเปลี่ยนรหัสผ่านรูท คุณจะต้องเข้าสู่ระบบ VPS ในฐานะรูทอีกครั้ง ส่วนนี้จะสาธิตวิธีการสร้างผู้ใช้ใหม่และตั้งรหัสผ่าน

ดังนั้นให้สร้างผู้ใช้ใหม่ เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่งต่อไปนี้ (แทนที่การสาธิตด้วยชื่อผู้ใช้ของคุณ):

การสาธิตผู้ใช้เพิ่มเติม

ตอนนี้สร้างรหัสผ่านสำหรับผู้ใช้รายนี้ (แทนที่การสาธิตด้วยชื่อผู้ใช้ที่คุณเพิ่งสร้างขึ้นอีกครั้ง):

การสาธิตรหัสผ่าน

4: สิทธิ์รูท

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

หากต้องการทำงานที่มีสิทธิ์ใช้งานรูท คุณต้องเริ่มคำสั่งด้วย sudo วลีนี้มีประโยชน์ด้วยเหตุผลสองประการ: 1) ปกป้องระบบจากข้อผิดพลาดในการทำลายที่ทำโดยผู้ใช้; 2) เก็บคำสั่งทั้งหมดที่เรียกใช้ด้วย sudo ไว้ในไฟล์ /var/log/secure ซึ่งสามารถดูได้ในภายหลัง

ตอนนี้คุณต้องเปลี่ยนการตั้งค่า sudo ของคุณ สำหรับการใช้งานนี้ โปรแกรมแก้ไขข้อความค่าเริ่มต้นของ CentOS ซึ่งเรียกว่า vi:

ค้นหาส่วนข้อกำหนดสิทธิ์ผู้ใช้ ซึ่งมีลักษณะดังนี้:

#ข้อกำหนดสิทธิพิเศษของผู้ใช้
รูตทั้งหมด = (ทั้งหมด) ทั้งหมด

หลังจากบรรทัดที่มีสิทธิ์รูท ให้ป้อน บรรทัดถัดไปซึ่งจะโอนสิทธิ์ทั้งหมดให้กับผู้ใช้ใหม่ (เพื่อเริ่มพิมพ์ใน vi ให้กด i):

สาธิตทั้งหมด = (ทั้งหมด) ทั้งหมด

ในการสิ้นสุดการป้อนข้อความ ให้กด Esc; จากนั้นพิมพ์:, wq, Enter เพื่อบันทึกและปิดไฟล์

5: ตั้งค่า SSH (ไม่บังคับ)

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

เปิดไฟล์การกำหนดค่า:

sudo vi /etc/ssh/sshd_config.php

ค้นหาส่วนต่อไปนี้และทำการเปลี่ยนแปลงตามนั้น:

พอร์ต 25000
หมายเลข PermitRootLogin

ท่าเรือ: แม้ว่าพอร์ตเริ่มต้นคือ 22 แต่คุณสามารถเปลี่ยนเป็นหมายเลขใดก็ได้ในช่วง 1025 ถึง 65536 คู่มือนี้ใช้พอร์ต SSHD 25000 โปรดทราบ: หมายเลขใหม่พอร์ตจะต้องได้รับการจดจำ/จดบันทึกไว้ เนื่องจากจะต้องเข้าสู่ระบบเซิร์ฟเวอร์ผ่าน SSH

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

เพื่อให้ SSH สามารถใช้งานได้เท่านั้น ผู้ใช้เฉพาะเพิ่มบรรทัดนี้ที่ด้านล่างของเอกสาร (แทนที่การสาธิตด้วยชื่อผู้ใช้ของคุณ):

การสาธิต AllowUsers

จากนั้นบันทึกการเปลี่ยนแปลงและปิดไฟล์

รีสตาร์ทสสส

เพื่อเปิดใช้งาน มีการเปลี่ยนแปลงให้เริ่มบริการ SSHD ใหม่:

sudo systemctl โหลด sshd.service ใหม่

หากต้องการทดสอบการตั้งค่าใหม่ (อย่าเพิ่งออกจากระบบบัญชีรูท) ให้เปิดเทอร์มินัลแล้วลงชื่อเข้าใช้เซิร์ฟเวอร์ในฐานะผู้ใช้ใหม่ (อย่าลืมป้อนที่อยู่ IP และพอร์ตที่ถูกต้อง):

ssh -p 25000 การสาธิต @ 111.22.33.444

การแจ้งเตือนควรปรากฏขึ้น:

โซน

ไฟร์วอลล์ดีมอนจัดการกลุ่มกฎโดยใช้โซนที่เรียกว่า

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

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

Firewalld มีโซนดังต่อไปนี้:

  • drop: ระดับความน่าเชื่อถือเครือข่ายต่ำสุด ทั้งหมด การจราจรขาเข้ารีเซ็ตโดยไม่มีการตอบสนอง รองรับเฉพาะการเชื่อมต่อขาออกเท่านั้น
  • บล็อก: โซนนี้คล้ายกับโซนก่อนหน้า แต่คำขอขาเข้าจะถูกทิ้งพร้อมกับข้อความ icmp-host-prohibited หรือ icmp6-adm-prohibited
  • สาธารณะ: โซนนี้แสดงถึงเครือข่ายสาธารณะที่ไม่น่าเชื่อถือ แต่อนุญาตการเชื่อมต่อขาเข้าแบบส่วนตัว
  • ภายนอก: โซน เครือข่ายภายนอก- รองรับการปลอมแปลง NAT ดังนั้นเครือข่ายภายในจึงยังคงปิดอยู่แต่ยังคงสามารถเข้าถึงได้
  • ภายใน: ด้านหลังโซนภายนอก เครือข่ายภายใน- คอมพิวเตอร์ในโซนนี้สามารถเชื่อถือได้ มีบริการเพิ่มเติม
  • dmz: ใช้สำหรับคอมพิวเตอร์ที่อยู่ใน DMZ (คอมพิวเตอร์แยกที่ไม่สามารถเข้าถึงส่วนที่เหลือของเครือข่าย) รองรับการเชื่อมต่อขาเข้าเพียงบางส่วนเท่านั้น
  • งาน: โซนเครือข่ายงาน เครื่องส่วนใหญ่บนเครือข่ายสามารถเชื่อถือได้ มีบริการเพิ่มเติม
  • บ้าน: โซนเครือข่ายในบ้าน สภาพแวดล้อมสามารถเชื่อถือได้ แต่รองรับเท่านั้น ผู้ใช้กำหนดการเชื่อมต่อขาเข้า
  • เชื่อถือได้: ทุกเครื่องบนเครือข่ายสามารถเชื่อถือได้

กำลังบันทึกกฎ

กฎไฟร์วอลล์อาจเป็นแบบถาวรหรือชั่วคราวก็ได้ หากมีกฎใดปรากฏขึ้นหรือมีการเปลี่ยนแปลงในชุด ลักษณะการทำงานปัจจุบันของไฟร์วอลล์จะเปลี่ยนไปทันที อย่างไรก็ตาม หลังจากรีบูต การเปลี่ยนแปลงทั้งหมดจะสูญหายไปหากไม่ได้รับการบันทึก

คำสั่ง firewall-cmd ส่วนใหญ่สามารถใช้แฟล็ก --permanent ซึ่งจะบันทึกกฎ หลังจากนั้นจะถูกใช้อย่างถาวร

เปิดใช้งานไฟร์วอลล์

ก่อนอื่นคุณต้องเปิดใช้งาน daemon ไฟล์หน่วย systemd เรียกว่า firewalld.service หากต้องการสตาร์ท daemon ให้ป้อน

sudo systemctl เริ่ม firewalld.service

ตรวจสอบให้แน่ใจว่าบริการกำลังทำงานอยู่:

ไฟร์วอลล์-cmd --state
วิ่ง

ขณะนี้ไฟร์วอลล์เปิดใช้งานและทำงานตามการกำหนดค่าเริ่มต้นแล้ว

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

กฎไฟร์วอลล์เริ่มต้น

ดูกฎเริ่มต้น

หากต้องการค้นหาว่าโซนใดเป็นค่าเริ่มต้น ให้ป้อน:

ไฟร์วอลล์-cmd --get-default-zone
สาธารณะ

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

หากต้องการรับรายการโซนที่ใช้งานอยู่ ให้ป้อน:


สาธารณะ
อินเทอร์เฟซ: eth0 eth1

มีอินเทอร์เฟซเครือข่ายสองแบบที่เกี่ยวข้องกับโซนสาธารณะ: eth0 และ eth1 อินเทอร์เฟซที่เชื่อมโยงกับโซนจะทำงานตามกฎของโซนนั้น

หากต้องการดูว่าโซนใช้กฎใดเป็นค่าเริ่มต้น ให้ป้อน:

ไฟร์วอลล์-cmd --รายการทั้งหมด
สาธารณะ (ค่าเริ่มต้น ใช้งานอยู่)
อินเทอร์เฟซ: eth0 eth1
แหล่งที่มา:
บริการ: ssh ไคลเอนต์ dhcpv6
พอร์ต:
สวมหน้ากาก: ไม่
ส่งต่อพอร์ต:
icmp-บล็อก:
กฎที่หลากหลาย:

ตอนนี้คุณรู้แล้วว่า:

  • สาธารณะเป็นโซนเริ่มต้นและเป็นโซนที่ใช้งานอยู่เพียงโซนเดียว
  • อินเทอร์เฟซ eth0 และ eth1 ถูกผูกไว้กับมัน
  • รองรับการรับส่งข้อมูล DHCP (การกำหนดที่อยู่ IP) และ SSH (การดูแลระบบระยะไกล)

โซนไฟร์วอลล์อื่นๆ

ตอนนี้คุณควรทำความคุ้นเคยกับโซนอื่นแล้ว

หากต้องการรับรายการโซนที่ใช้ได้ทั้งหมด ให้ป้อน:

ไฟร์วอลล์-cmd --get-zones

หากต้องการรับพารามิเตอร์สำหรับโซนเฉพาะ ให้เพิ่มแฟล็ก --zone= ให้กับคำสั่ง

ไฟร์วอลล์-cmd --zone=home --list-all
บ้าน
อินเทอร์เฟซ:
แหล่งที่มา:
บริการ: dhcpv6-client ipp-client mdns samba-client ssh
พอร์ต:
สวมหน้ากาก: ไม่
ส่งต่อพอร์ต:
icmp-บล็อก:
กฎที่หลากหลาย:

หากต้องการแสดงรายการคำจำกัดความของโซนที่มีอยู่ทั้งหมด ให้เพิ่มตัวเลือก --list-all-zones สำหรับข้อมูลเพิ่มเติม รับชมได้สะดวกผลลัพธ์สามารถส่งไปยังเพจเจอร์ได้:

ไฟร์วอลล์-cmd --รายการโซนทั้งหมด | น้อย

การตั้งค่าโซนอินเทอร์เฟซ

เริ่มแรก อินเทอร์เฟซเครือข่ายทั้งหมดถูกกำหนดให้กับโซนเริ่มต้น

การเปลี่ยนโซนอินเทอร์เฟซสำหรับหนึ่งเซสชัน

หากต้องการย้ายอินเทอร์เฟซไปยังโซนอื่นสำหรับหนึ่งเซสชัน ให้ใช้ตัวเลือก --zone= และ --change-interface=

ตัวอย่างเช่น หากต้องการย้าย eth0 ไปยังโซนหลัก คุณจะต้องป้อน:

sudo firewall-cmd --zone=home --change-interface=eth0
ความสำเร็จ

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

เพื่อให้แน่ใจว่าอินเทอร์เฟซเชื่อมโยงกับโซนใหม่ ให้ป้อน:

ไฟร์วอลล์-cmd --get-active-zones
บ้าน
อินเทอร์เฟซ: eth0
สาธารณะ
อินเทอร์เฟซ: eth1

หลังจากรีบูตไฟร์วอลล์ อินเทอร์เฟซจะถูกผูกกลับไปยังโซนเริ่มต้น

sudo systemctl รีสตาร์ท firewalld.service
ไฟร์วอลล์-cmd --get-active-zones
สาธารณะ
อินเทอร์เฟซ: eth0 eth1

การเปลี่ยนโซนอินเทอร์เฟซอย่างถาวร

หากไม่มีการระบุโซนอื่นในการตั้งค่าอินเทอร์เฟซ หลังจากรีสตาร์ทไฟร์วอลล์ อินเทอร์เฟซจะถูกผูกกลับไปยังโซนเริ่มต้น บน CentOS การกำหนดค่าดังกล่าวจะถูกจัดเก็บไว้ในไดเร็กทอรี /etc/sysconfig/network-scripts ในไฟล์รูปแบบ ifcfg-interface

หากต้องการกำหนดโซนของอินเทอร์เฟซ ให้เปิดไฟล์การกำหนดค่าของอินเทอร์เฟซนั้น เช่น:

ที่ท้ายไฟล์ ให้เพิ่มตัวแปร ZONE= และระบุโซนอื่นเป็นค่า เช่น home:

. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
โซน=บ้าน

บันทึกและปิดไฟล์

หากต้องการอัปเดตการตั้งค่า ให้รีสตาร์ทบริการเครือข่ายและไฟร์วอลล์:

sudo systemctl รีสตาร์ท network.service
sudo systemctl รีสตาร์ท firewalld.service

หลังจากรีสตาร์ท อินเทอร์เฟซ eth0 จะถูกกำหนดให้กับโซนหลัก

ไฟร์วอลล์-cmd --get-active-zones
บ้าน
อินเทอร์เฟซ: eth0
สาธารณะ
อินเทอร์เฟซ: eth1

การตั้งค่าโซนเริ่มต้น

คุณยังสามารถเลือกโซนเริ่มต้นอื่นได้

เมื่อต้องการทำเช่นนี้ ให้ใช้พารามิเตอร์ --set-default-zone= หลังจากนี้ อินเทอร์เฟซทั้งหมดจะถูกกำหนดให้กับโซนอื่น:

sudo firewall-cmd --set-default-zone=home
บ้าน
อินเทอร์เฟซ: eth0 eth1

การสร้างกฎการสมัคร

การเพิ่มบริการให้กับโซน

วิธีที่ง่ายที่สุดคือการเพิ่มบริการหรือพอร์ตไปยังโซนที่ไฟร์วอลล์ใช้ ดูบริการที่มี:

ไฟร์วอลล์-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp ความพร้อมใช้งานสูง http https imaps ipp ipp-ไคลเอนต์ ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp รัศมี rpc-bind samba samba-ไคลเอนต์ smtp ssh telnet tftp-ไคลเอนต์ ส่งลูกค้า vnc-เซิร์ฟเวอร์ wbem-https

บันทึก: ข้อมูลเพิ่มเติมข้อมูลเกี่ยวกับบริการเฉพาะแต่ละรายการสามารถพบได้ในไฟล์ .xml ในไดเร็กทอรี /usr/lib/firewalld/services ตัวอย่างเช่น ข้อมูลเกี่ยวกับบริการ SSH จะถูกจัดเก็บไว้ใน /usr/lib/firewalld/services/ssh.xml และมีลักษณะดังนี้:



สสส

หากต้องการเปิดใช้งานการสนับสนุนบริการในโซนใดโซนหนึ่ง ให้ใช้ตัวเลือก --add-service= คุณสามารถระบุโซนเป้าหมายได้โดยใช้ตัวเลือก --zone= ตามค่าเริ่มต้น การเปลี่ยนแปลงเหล่านี้จะมีผลในหนึ่งเซสชัน หากต้องการบันทึกการเปลี่ยนแปลงและใช้งานอย่างถาวร ให้เพิ่มแฟล็ก --permanent

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

sudo firewall-cmd --zone=public --add-service=http

หากจำเป็นต้องเพิ่มบริการในโซนเริ่มต้น คุณสามารถละเว้นแฟล็ก --zone= ได้

ตรวจสอบว่าการดำเนินการสำเร็จ:

ไฟร์วอลล์-cmd --zone=public --list-services
dhcpv6-ไคลเอนต์ http ssh

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

sudo firewall-cmd --zone=public --permanent --add-service=http

หากต้องการดูรายการกฎถาวร ให้ป้อน:

sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-ไคลเอนต์ http ssh

โซนสาธารณะรองรับ HTTP และพอร์ต 80 อย่างถาวรแล้ว หากเว็บเซิร์ฟเวอร์สามารถรองรับการรับส่งข้อมูล SSL/TLS คุณสามารถเพิ่มบริการ https ได้ (สำหรับเซสชันเดียวหรือชุดกฎถาวร):

sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https

จะทำอย่างไรหากไม่มีบริการที่จำเป็น?

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

วิธีที่ 1: การตั้งค่าพอร์ต

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

ตัวอย่างเช่น ควรเพิ่มแอปพลิเคชันที่ใช้พอร์ต 5000 และโปรโตคอล TCP ไปยังโซนสาธารณะ หากต้องการเปิดใช้งานการสนับสนุนแอปพลิเคชันสำหรับเซสชันด้านล่าง ให้ใช้พารามิเตอร์ --add-port= และระบุโปรโตคอล tcp หรือ udp

sudo firewall-cmd --zone=public --add-port=5000/tcp

ตรวจสอบว่าการดำเนินการสำเร็จ:

ไฟร์วอลล์-cmd --รายการพอร์ต
5,000/ทีซีพี

คุณยังสามารถระบุช่วงพอร์ตตามลำดับโดยแยกพอร์ตแรกและพอร์ตสุดท้ายในช่วงด้วยเครื่องหมายขีดกลาง ตัวอย่างเช่น หากแอปพลิเคชันของคุณใช้พอร์ต UDP 4990-4999 หากต้องการเพิ่มลงในโซนสาธารณะ คุณจะต้องป้อน:

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

หลังจากการทดสอบ คุณสามารถเพิ่มกฎเหล่านี้ลงไปได้ การตั้งค่าถาวรไฟร์วอลล์

sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
ความสำเร็จ
ความสำเร็จ
4990-4999/udp 5000/tcp

วิธีที่ 2: การกำหนดบริการ

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

บริการเป็นเพียงคอลเลกชันของพอร์ตที่มีชื่อและคำอธิบายเฉพาะ บริการช่วยให้จัดการการตั้งค่าได้ง่ายขึ้น แต่มีความซับซ้อนมากกว่าพอร์ต

ขั้นแรก คุณต้องคัดลอกสคริปต์ที่มีอยู่จากไดเร็กทอรี /usr/lib/firewalld/services ไปยังไดเร็กทอรี /etc/firewalld/services (นี่คือที่ที่ไฟร์วอลล์ค้นหาการตั้งค่าที่ไม่ได้มาตรฐาน)

ตัวอย่างเช่น คุณสามารถคัดลอกข้อกำหนดของบริการ SSH และใช้เพื่อกำหนดบริการตัวอย่างแบบมีเงื่อนไขได้ ชื่อสคริปต์ต้องตรงกับชื่อบริการและมีนามสกุล .xml

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

แก้ไขไฟล์ที่คัดลอก

sudo นาโน /etc/firewalld/services/example.xml

ไฟล์นี้มีคำจำกัดความ SSH:



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

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

กลับไปที่บริการตัวอย่าง สมมติว่าเขาขอให้เปิด พอร์ต TCP 7777 และ พอร์ต UDP 8888 คำจำกัดความจะมีลักษณะดังนี้:



บริการตัวอย่าง
นี่เป็นเพียงบริการตัวอย่างเท่านั้น อาจจะไม่ควรใช้กับระบบจริง

บันทึกและปิดไฟล์

รีสตาร์ทไฟร์วอลล์:

sudo firewall-cmd --reload

บริการจะปรากฏในรายการบริการที่มี:

ไฟร์วอลล์-cmd --get-services
rh-satellite-6 Amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ตัวอย่าง ftp ความพร้อมใช้งานสูง http https IMAPS ipp ipp-client ipsec kerberos kpasswd ldap ldaps ldaps ldaps ldaps ldaps ldaps ldaps พร็อกซี pmwebapi pmwebapis pop3s postgresql พร็อกซี-dhcp รัศมี rpc-bind แซมบ้า แซมบ้าไคลเอนต์ smtp ssh telnet tftp tftp-ไคลเอนต์ ส่งไคลเอนต์ vnc-เซิร์ฟเวอร์ wbem-https

การสร้างโซน

ไฟร์วอลล์มีโซนที่กำหนดไว้ล่วงหน้ามากมาย ซึ่งโดยส่วนใหญ่ก็เพียงพอที่จะทำงานให้สำเร็จได้ แต่ในบางสถานการณ์จำเป็นต้องสร้างโซนแบบกำหนดเอง

ตัวอย่างเช่น คุณสามารถสร้างโซนเว็บสาธารณะสำหรับเว็บเซิร์ฟเวอร์ และโซน DNS ส่วนตัวสำหรับบริการ DNS

เมื่อคุณสร้างโซน คุณจะต้องเพิ่มโซนนั้นลงในการตั้งค่าถาวรของไฟร์วอลล์

ลองสร้างโซน publicweb และ privateDNS:

sudo firewall-cmd --ถาวร --new-zone=publicweb
sudo firewall-cmd --ถาวร --new-zone=privateDNS

ตรวจสอบว่ามีโซนอยู่:

sudo firewall-cmd --permanent --get-zones

โซนใหม่จะไม่สามารถใช้ได้ในเซสชั่นปัจจุบัน:

ไฟร์วอลล์-cmd --get-zones
บล็อก dmz วางงานภายนอกบ้านภายในสาธารณะที่เชื่อถือได้

หากต้องการเข้าถึงโซนใหม่ คุณต้องรีสตาร์ทไฟร์วอลล์:

sudo firewall-cmd --reload
ไฟร์วอลล์-cmd --get-zones
บล็อก dmz ดรอป บ้านภายนอก ภายใน publicDNS สาธารณะ งานสาธารณะที่เชื่อถือได้

ตอนนี้คุณสามารถกำหนดบริการและพอร์ตที่จำเป็นให้กับโซนใหม่ได้แล้ว ตัวอย่างเช่น คุณสามารถเพิ่ม SSH, HTTP และ HTTPS ลงในโซนเว็บสาธารณะได้

sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
ไฟร์วอลล์-cmd --zone=publicweb --list-all
เว็บสาธารณะ
อินเทอร์เฟซ:
แหล่งที่มา:
บริการ: http https ssh
พอร์ต:
สวมหน้ากาก: ไม่
ส่งต่อพอร์ต:
icmp-บล็อก:
กฎที่หลากหลาย:

คุณสามารถเพิ่ม DNS ลงในโซน privateDNS:

sudo firewall-cmd --zone=privateDNS --add-service=dns
ไฟร์วอลล์-cmd --zone=privateDNS --list-all
DNS ส่วนตัว
อินเทอร์เฟซ:
แหล่งที่มา:
บริการ: DNS
พอร์ต:
สวมหน้ากาก: ไม่
ส่งต่อพอร์ต:
icmp-บล็อก:
กฎที่หลากหลาย:

จากนั้นคุณสามารถกำหนดอินเทอร์เฟซเครือข่ายให้กับโซนใหม่ได้:

sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1

ตอนนี้คุณสามารถทดสอบการตั้งค่าได้แล้ว หากทุกอย่างทำงานถูกต้อง คุณสามารถเพิ่มกฎเหล่านี้ในการตั้งค่าถาวรได้

sudo firewall-cmd --zone=publicweb --ถาวร --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

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

ตัวอย่างเช่น eth0 จะเชื่อมโยงกับเว็บสาธารณะ:

sudo นาโน /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=ไม่ใช่
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=เว็บสาธารณะ

และอินเทอร์เฟซ eth1 จะถูกผูกไว้กับ privateDNS:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
เน็ตมาสค์=255.255.0.0
ละลายน้ำแข็ง = "ไม่"
NM_CONTROLLED="ใช่"
ZONE=ไพรเวท DNS

รีสตาร์ท บริการเครือข่ายและไฟร์วอลล์:

sudo systemctl รีสตาร์ทเครือข่าย
sudo systemctl รีสตาร์ทไฟร์วอลล์

ตรวจสอบโซน:

ไฟร์วอลล์-cmd --get-active-zones
DNS ส่วนตัว
อินเทอร์เฟซ: eth1
เว็บสาธารณะ
อินเทอร์เฟซ: eth0

ตรวจสอบให้แน่ใจว่าบริการที่จำเป็นกำลังทำงานอยู่ในโซน:

ไฟร์วอลล์-cmd --zone=publicweb --list-services
http htpps ssh
ไฟร์วอลล์-cmd --zone=privateDNS --list-services
DNS

โซนผู้ใช้พร้อมใช้งานอย่างสมบูรณ์ คุณสามารถกำหนดให้รายการใดรายการหนึ่งเป็นโซนเริ่มต้นได้ ตัวอย่างเช่น:

sudo firewall-cmd --set-default-zone=publicweb

การเริ่มต้นไฟร์วอลล์โดยอัตโนมัติ

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

เมื่อต้องการทำเช่นนี้ ให้ป้อน:

sudo systemctl เปิดใช้งานไฟร์วอลล์

ไฟร์วอลล์จะเริ่มต้นพร้อมกับเซิร์ฟเวอร์

บทสรุป

ไฟร์วอลล์ไฟร์วอลล์เป็นอย่างมาก เครื่องมือที่ยืดหยุ่น- โซนช่วยให้คุณเปลี่ยนนโยบายไฟร์วอลล์ได้อย่างรวดเร็ว

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

แท็ก: ,