เมื่อคุณติดตั้ง 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 เสร็จสิ้น คุณสามารถเริ่มการติดตั้งและกำหนดค่าฟังก์ชันการทำงานหลักได้
บทสรุป
เราได้ทำตามขั้นตอนการตั้งค่าเริ่มต้นบางอย่างที่ฉันมักจะทำเมื่อเตรียมเซิร์ฟเวอร์แล้ว ฉันไม่เสแสร้งว่าเป็นความจริงเด็ดขาด ฉันอาจพลาดบางสิ่งบางอย่างหรือทำบางอย่างที่ไม่ถูกต้องทั้งหมด ฉันยินดีที่จะแสดงความคิดเห็นและข้อเสนอแนะที่สมเหตุสมผลและมีความหมาย
จะมีประโยชน์ในการเชื่อมต่อเซิร์ฟเวอร์กับระบบตรวจสอบทันทีหลังการกำหนดค่า หรือตั้งค่าหากคุณยังไม่มี ฉันมีบทความโดยละเอียดเกี่ยวกับการตั้งค่าการตรวจสอบ:
- ตัวอย่างของการตั้งค่าเซิร์ฟเวอร์การมอนิเตอร์ zabbix หรือเชื่อมต่อ centos กับการมอนิเตอร์โดยการติดตั้งเอเจนต์เท่านั้น
- การตั้งค่าการแจ้งเตือนทางอีเมล zabbix ผ่านเซิร์ฟเวอร์ smtp บุคคลที่สาม
- การตรวจสอบโดยละเอียดของเว็บเซิร์ฟเวอร์โดยใช้ nginx + php-fpm
- ระบบตรวจสอบเว็บไซต์ตาม zabbix
- ตรวจสอบการจำลองแบบ 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:
คำจำกัดความของบริการส่วนใหญ่คือข้อมูลเมตา คุณสามารถเปลี่ยนชื่อย่อของบริการในแท็กได้
กลับไปที่บริการตัวอย่าง สมมติว่าเขาขอให้เปิด พอร์ต 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 เปิดใช้งานไฟร์วอลล์
ไฟร์วอลล์จะเริ่มต้นพร้อมกับเซิร์ฟเวอร์
บทสรุป
ไฟร์วอลล์ไฟร์วอลล์เป็นอย่างมาก เครื่องมือที่ยืดหยุ่น- โซนช่วยให้คุณเปลี่ยนนโยบายไฟร์วอลล์ได้อย่างรวดเร็ว
ตอนนี้คุณรู้วิธีการทำงานของไฟร์วอลล์แล้ว และคุณคุ้นเคยกับแนวคิดพื้นฐานของไฟร์วอลล์แล้ว คุณสามารถสร้างโซนที่กำหนดเองและเพิ่มบริการได้
แท็ก: ,