Android

วิธีตั้งค่าไฟร์วอลล์ด้วย firewalld บน centos 7

Rsyslog

Rsyslog

สารบัญ:

Anonim

ไฟร์วอลล์ที่ตั้งค่าไว้อย่างเหมาะสมเป็นหนึ่งในส่วนที่สำคัญที่สุดของความปลอดภัยของระบบโดยรวม

FirewallD เป็นโซลูชั่นไฟร์วอลล์ที่สมบูรณ์ที่จัดการกฎ iptables ของระบบและจัดให้มีอินเตอร์เฟส D-Bus สำหรับการใช้งาน เริ่มต้นด้วย CentOS 7, FirewallD จะแทนที่ iptables เป็นเครื่องมือจัดการไฟร์วอลล์เริ่มต้น

ในบทช่วยสอนนี้เราจะแสดงวิธีตั้งค่าไฟร์วอลล์ด้วย FirewallD ในระบบ CentOS 7 ของคุณและอธิบายแนวคิดพื้นฐาน FirewallD ให้คุณทราบ

ข้อกำหนดเบื้องต้น

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

แนวคิดไฟร์วอลล์พื้นฐาน

FirewallD ใช้แนวคิดของโซนและบริการแทน iptables chain และ rules ขึ้นอยู่กับโซนและบริการที่คุณกำหนดค่าคุณสามารถควบคุมการรับส่งข้อมูลที่อนุญาตหรือไม่อนุญาตให้เข้าและออกจากระบบ

FirewallD สามารถกำหนดค่าและจัดการโดยใช้ยูทิลิตีบรรทัดคำสั่ง firewall-cmd

โซนไฟร์วอลล์

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

ด้านล่างนี้เป็นโซนที่ FirewallD สั่งให้ตามระดับความน่าเชื่อถือของโซนตั้งแต่ไม่น่าเชื่อถือถึงเชื่อถือได้:

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

บริการไฟร์วอลล์

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

Firewalld Runtime และการตั้งค่าถาวร

Firewalld ใช้ชุดการกำหนดค่าที่แยกกันสองชุดรันไทม์และการกำหนดค่าถาวร

การกำหนดค่ารันไทม์คือการกำหนดค่าการทำงานจริงและจะไม่คงอยู่กับการรีบูต เมื่อเซอร์วิส Firewalld เริ่มทำงานจะโหลดการกำหนดค่าถาวรซึ่งกลายเป็นการกำหนดค่ารันไทม์

โดยค่าเริ่มต้นเมื่อทำการเปลี่ยนแปลงการกำหนดค่า Firewalld โดยใช้ยูทิลิตี้ firewall-cmd การเปลี่ยนแปลงจะถูกนำไปใช้กับการกำหนดค่ารันไทม์ ในการเปลี่ยนแปลงอย่างถาวรคุณต้องใช้ตัวเลือก --permanent

การติดตั้งและเปิดใช้งาน FirewallD

  1. Firewalld ถูกติดตั้งตามค่าเริ่มต้นบน CentOS 7 แต่หากไม่ได้ติดตั้งไว้ในระบบของคุณคุณสามารถติดตั้งแพ็กเกจโดยพิมพ์:

    sudo yum install firewalld

    บริการ Firewalld ถูกปิดใช้งานโดยค่าเริ่มต้น คุณสามารถตรวจสอบสถานะไฟร์วอลล์ด้วย:

    sudo firewall-cmd --state

    ในการเริ่มบริการ FirewallD และเปิดใช้งานกับประเภทการบู๊ต:

    sudo systemctl start firewalld sudo systemctl enable firewalld

การทำงานกับ Firewalld Zones

หลังจากเปิดใช้งานบริการ FirewallD เป็นครั้งแรกโซน public จะถูกตั้งค่าเป็นโซนเริ่มต้น คุณสามารถดูโซนเริ่มต้นได้โดยพิมพ์:

sudo firewall-cmd --get-default-zone

public

ในการรับรายการของโซนทั้งหมดที่มีให้พิมพ์:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

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

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

ผลลัพธ์ข้างต้นบอกเราว่าส่วนต่อประสาน eth0 และ eth1 ถูกกำหนดให้กับเขตสาธารณะ

คุณสามารถพิมพ์การตั้งค่าการกำหนดโซนได้ด้วย:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

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

sudo firewall-cmd --list-all-zones

คำสั่งพิมพ์รายการขนาดใหญ่ด้วยการตั้งค่าของโซนที่มีอยู่ทั้งหมด

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

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

sudo firewall-cmd --zone=work --change-interface=eth1

ตรวจสอบการเปลี่ยนแปลงโดยการพิมพ์:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

การเปลี่ยนโซนเริ่มต้น

หากต้องการเปลี่ยนโซนเริ่มต้นให้ใช้ตัวเลือก --set-default-zone ตามด้วยชื่อของโซนที่คุณต้องการให้เป็นค่าเริ่มต้น

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

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

ตรวจสอบการเปลี่ยนแปลงด้วย:

sudo firewall-cmd --get-default-zone

home

การเปิดพอร์ตหรือบริการ

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

วิธีรับรายการประเภทบริการที่เป็นค่าเริ่มต้นทั้งหมด:

sudo firewall-cmd --get-services

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับแต่ละบริการได้โดยการเปิดไฟล์. xml ที่เชื่อมโยงภายในไดเร็กทอรี /usr/lib/firewalld/services ตัวอย่างเช่นบริการ HTTP มีการกำหนดดังนี้:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

ในการอนุญาตการรับส่งข้อมูล HTTP ขาเข้า (พอร์ต 80) สำหรับอินเทอร์เฟซในโซนสาธารณะเฉพาะสำหรับประเภทเซสชันปัจจุบัน (การกำหนดค่ารันไทม์):

sudo firewall-cmd --zone=public --add-service=http หากคุณกำลังปรับเปลี่ยนโซนเริ่มต้นคุณสามารถออกจากตัวเลือก - --zone

ในการตรวจสอบว่ามีการเพิ่มบริการสำเร็จให้ใช้ตัวเลือก --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

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

ใช้ --list-services พร้อมกับตัวเลือก --permanent เพื่อยืนยันการเปลี่ยนแปลงของคุณ:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

ไวยากรณ์สำหรับการลบบริการเป็นเช่นเดียวกับเมื่อเพิ่มบริการ เพียงแค่ใช้ --remove-service แทนตัวเลือก --add-service :

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

คำสั่งด้านบนจะลบบริการ http จากการกำหนดค่าถาวรของโซนสาธารณะ

ถ้าคุณใช้แอพพลิเคชั่นเช่น Plex Media Server ที่ไม่มีบริการที่เหมาะสม

ในสถานการณ์เช่นนี้คุณมีสองทางเลือก คุณสามารถเปิดพอร์ตที่เหมาะสมหรือกำหนดบริการ FirewallD ใหม่

ตัวอย่างเช่นเซิร์ฟเวอร์เพล็กซ์ฟังพอร์ต 32400 และใช้ TCP เพื่อเปิดพอร์ตในโซนสาธารณะสำหรับเซสชันปัจจุบันใช้ตัวเลือก --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp โปรโตคอลสามารถเป็น tcp หรือ udp

ในการตรวจสอบว่าพอร์ตถูกเพิ่มสำเร็จให้ใช้ตัวเลือก --list-ports :

sudo firewall-cmd --zone=public --list-ports

32400/tcp

หากต้องการให้พอร์ต 32400 เปิดหลังจากรีบูตให้เพิ่มกฎลงในการตั้งค่าถาวรโดยใช้คำสั่งเดียวกันโดยใช้ตัวเลือก --permanent

ไวยากรณ์สำหรับการลบพอร์ตเป็นเช่นเดียวกับเมื่อเพิ่มพอร์ต เพียงใช้ --remove-port แทนตัวเลือก --add-port

sudo firewall-cmd --zone=public --remove-port=32400/tcp

การสร้างบริการ FirewallD ใหม่

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

ตัวอย่างเช่นในการสร้างคำนิยามบริการสำหรับ Plex Media Server เราสามารถใช้ไฟล์บริการ SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

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

ในตัวอย่างต่อไปนี้เรากำลังเปิดพอร์ต 1900 UDP และ 32400 TCP

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

บันทึกไฟล์และโหลดบริการ FirewallD อีกครั้ง:

sudo firewall-cmd --reload

ตอนนี้คุณสามารถใช้บริการ plexmediaserver ในโซนของคุณเหมือนกับบริการอื่น ๆ..

การส่งต่อพอร์ตด้วยไฟร์วอลล์

หากต้องการส่งต่อทราฟฟิกจากพอร์ตหนึ่งไปยังอีกพอร์ตหนึ่งหรือที่อยู่อื่นก่อนอื่นให้เปิดใช้งาน masquerading สำหรับโซนที่ต้องการโดยใช้ --add-masquerade ตัวอย่างเช่นการเปิดใช้งานการปลอมแปลงสำหรับโซนโซน external :

sudo firewall-cmd --zone=external --add-masquerade

  • ส่งต่อทราฟฟิกจากพอร์ตหนึ่งไปอีกพอร์ตหนึ่งบนเซิร์ฟเวอร์เดียวกัน

ในตัวอย่างต่อไปนี้เรากำลังส่งต่อทราฟฟิกจากพอร์ต 80 ไปยังพอร์ต 8080 บนเซิร์ฟเวอร์เดียวกัน:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

  • ส่งต่อทราฟฟิกไปยังเซิร์ฟเวอร์อื่น

ในตัวอย่างต่อไปนี้เรากำลังส่งต่อทราฟฟิกจากพอร์ต 80 ไปยังพอร์ต 80 บนเซิร์ฟเวอร์ที่มี IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

  • ส่งต่อทราฟฟิกไปยังเซิร์ฟเวอร์อื่นบนพอร์ตอื่น

ในตัวอย่างต่อไปนี้เรากำลังส่งต่อทราฟฟิกจากพอร์ต 80 ไปยังพอร์ต 8080 บนเซิร์ฟเวอร์ที่มี IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

การสร้าง Ruleset ด้วย FirewallD

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

  1. เปลี่ยนโซนเริ่มต้นเป็น dmz

    เราจะใช้โซน dmz (ปลอดทหาร) เพราะโดยปกติจะอนุญาตเฉพาะทราฟฟิก SSH เท่านั้น หากต้องการเปลี่ยนโซนเริ่มต้นเป็น dmz และกำหนดให้กับอินเตอร์เฟส eth0 ให้รันคำสั่งต่อไปนี้:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    เปิดพอร์ต HTTP และ

    หากต้องการเปิดพอร์ต HTTP และ HTTPS ให้เพิ่มกฎการบริการถาวรลงในโซน dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    ทำการเปลี่ยนแปลงมีผลทันทีโดยการโหลดไฟร์วอลล์อีกครั้ง:

    sudo firewall-cmd --reload

    ตรวจสอบการเปลี่ยนแปลง

    วิธีตรวจสอบประเภทการตั้งค่าการกำหนดค่าโซน dmz:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    เอาต์พุตข้างต้นบอกเราว่า dmz เป็นโซนเริ่มต้นถูกนำไปใช้กับอินเตอร์เฟส eth0 และพอร์ต ssh (22) http (80) และ https (443) เปิด

ข้อสรุป

คุณได้เรียนรู้วิธีกำหนดค่าและจัดการบริการ FirewallD บนระบบ CentOS ของคุณ

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

firewalld firewall iptables centos security