ผู้ดูแลระบบ Linux - การตั้งค่าไฟร์วอลล์

firewalldเป็นตัวควบคุมส่วนหน้าเริ่มต้นสำหรับ iptables บน CentOS ส่วนหน้าของfirewalldมีข้อดีหลัก ๆ สองประการเหนือ iptables แบบดิบ -

  • ใช้ง่ายต่อการกำหนดค่าและใช้งานโซนนามธรรมโซ่และกฎ

  • ชุดกฎเป็นแบบไดนามิกซึ่งหมายความว่าการเชื่อมต่อแบบ stateful จะไม่มีการหยุดชะงักเมื่อมีการเปลี่ยนแปลงการตั้งค่าและ / หรือแก้ไข

อย่าลืมว่าfirewalldเป็นเครื่องห่อสำหรับ iptables - ไม่ใช่สิ่งทดแทน แม้ว่าคำสั่ง iptables ที่กำหนดเองสามารถใช้กับfirewalldได้ แต่ขอแนะนำให้ใช้ firewalld เพื่อไม่ให้การทำงานของไฟร์วอลล์เสียหาย

ขั้นแรกตรวจสอบให้แน่ใจว่าfirewalldได้เริ่มต้นและเปิดใช้งานแล้ว

[root@CentOS rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago 
 Docs: man:firewalld(1) 
Main PID: 712 (firewalld) 
  Memory: 34.7M 
 CGroup: /system.slice/firewalld.service 
       └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

เราจะเห็นว่า firewalld ทำงานอยู่ (เพื่อเริ่มการบูต) และกำลังทำงานอยู่ หากไม่มีการใช้งานหรือไม่ได้เริ่มใช้งานเราสามารถใช้ -

systemctl start firewalld && systemctl enable firewalld

ตอนนี้เราได้กำหนดค่าบริการ firewalld แล้วขอให้มั่นใจว่าใช้งานได้

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

เราจะเห็นว่าบริการ firewalld ทำงานได้อย่างสมบูรณ์

Firewalld ทำงานบนแนวคิดของโซน โซนถูกนำไปใช้กับอินเทอร์เฟซเครือข่ายผ่าน Network Manager เราจะหารือเรื่องนี้ในการกำหนดค่าเครือข่าย แต่สำหรับตอนนี้โดยค่าเริ่มต้นการเปลี่ยนโซนเริ่มต้นจะเปลี่ยนอะแดปเตอร์เครือข่ายที่เหลืออยู่ในสถานะเริ่มต้นของ "Default Zone"

ลองมาดูอย่างรวดเร็วที่แต่ละโซนที่ออกมาของกล่องกับfirewalld

ซีเนียร์ โซนและคำอธิบาย
1

drop

ระดับความน่าเชื่อถือต่ำ การเชื่อมต่อและแพ็กเก็ตขาเข้าทั้งหมดจะหลุดออกไปและมีเพียงการเชื่อมต่อขาออกเท่านั้นที่ทำได้ผ่าน statefullness

2

block

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

3

public

เครือข่ายทั้งหมดถูก จำกัด อย่างไรก็ตามสามารถอนุญาตการเชื่อมต่อขาเข้าที่เลือกไว้อย่างชัดเจนได้

4

external

กำหนดค่า firewalld สำหรับ NAT เครือข่ายภายในยังคงเป็นส่วนตัว แต่สามารถเข้าถึงได้

5

dmz

อนุญาตเฉพาะการเชื่อมต่อขาเข้าบางรายการเท่านั้น ใช้สำหรับระบบที่แยก DMZ

6

work

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

7

hone

โดยค่าเริ่มต้นบริการอื่น ๆ จะไม่มีการกรอง สมมติว่าระบบอยู่บนเครือข่ายภายในบ้านที่จะใช้บริการเช่น NFS, SAMBA และ SSDP

8

trusted

ทุกเครื่องในเครือข่ายได้รับความเชื่อถือ การเชื่อมต่อขาเข้าส่วนใหญ่ได้รับอนุญาตThis is not meant for interfaces exposed to the Internet

โซนที่ใช้บ่อยที่สุด ได้แก่ สาธารณะสถานที่ทำงานและที่บ้าน

สถานการณ์บางอย่างที่จะใช้แต่ละโซนร่วมกันคือ -

  • public- เป็นโซนที่ผู้ดูแลระบบใช้บ่อยที่สุด จะช่วยให้คุณใช้การตั้งค่าแบบกำหนดเองและปฏิบัติตามข้อกำหนด RFC สำหรับการดำเนินการบน LAN

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

  • work- คุณอยู่ใน LAN ขององค์กรแบบกึ่งปลอดภัย ในกรณีที่การจราจรทั้งหมดสามารถสันนิษฐานได้ว่าปลอดภัยในระดับปานกลาง ซึ่งหมายความว่าไม่ใช่ WiFi และเราอาจมี IDS, IPS และความปลอดภัยทางกายภาพหรือ 802.1x เราควรทำความคุ้นเคยกับคนที่ใช้ LAN ด้วย

  • home- คุณใช้ LAN ที่บ้าน คุณเป็นผู้รับผิดชอบส่วนตัวสำหรับทุกระบบและผู้ใช้บน LAN คุณรู้จักทุกเครื่องบน LAN และไม่มีใครถูกบุกรุก บ่อยครั้งที่บริการใหม่ ๆ ถูกนำมาใช้เพื่อการแบ่งปันสื่อระหว่างบุคคลที่เชื่อถือได้และคุณไม่จำเป็นต้องใช้เวลาเพิ่มเพื่อความปลอดภัย

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

มาดูกันว่ามีโซนอะไรบ้างและโซนที่ใช้อยู่ตอนนี้มีอะไรบ้าง

[root@CentOS]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block

[root@CentOS]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

พร้อมที่จะเพิ่มกฎที่กำหนดเองใน firewalld แล้วหรือยัง?

ก่อนอื่นมาดูกันว่ากล่องของเรามีหน้าตาเป็นอย่างไรสำหรับพอร์ตสแกนเนอร์จากภายนอก

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00046s latency). 
Not shown: 1023 filtered ports 
PORT   STATE SERVICE 
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds 
bash-3.2#

อนุญาตให้คำขอขาเข้าพอร์ต 80

ขั้นแรกตรวจสอบเพื่อดูว่าโซนใดถูกใช้เป็นค่าเริ่มต้น

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

จากนั้นตั้งกฎอนุญาตให้พอร์ต 80 เป็นโซนเริ่มต้นปัจจุบัน

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

ตอนนี้เรามาทำเครื่องหมายที่ช่องของเราหลังจากอนุญาตการเชื่อมต่อพอร์ต 80

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00053s latency). 
Not shown: 1022 filtered ports 
PORT   STATE  SERVICE 
22/tcp open   ssh 
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds 
bash-3.2#

ขณะนี้อนุญาตให้มีการรับส่งข้อมูลที่ไม่พึงประสงค์ถึง 80

ขอนำโซนเริ่มต้นที่จะลดลงและดูสิ่งที่เกิดขึ้นกับพอร์ตการสแกน

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

ตอนนี้มาสแกนโฮสต์ด้วยอินเทอร์เฟซเครือข่ายในโซนที่ปลอดภัยยิ่งขึ้น

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00094s latency). 
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds 
bash-3.2#

ตอนนี้ทุกอย่างถูกกรองจากภายนอก

แสดงให้เห็นด้านล่างโฮสต์จะไม่ได้ตอบสนองต่อการร้องขอ ping ICMP เมื่ออยู่ในลดลง

bash-3.2# ping 10.211.55.1 
PING 10.211.55.1 (10.211.55.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

มาตั้งค่าโซนเริ่มต้นเป็นสาธารณะอีกครั้ง

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

ตอนนี้ขอตรวจสอบ ruleset กรองของเราในปัจจุบันในที่สาธารณะ

[root@CentOS]# firewall-cmd --zone=public --list-all 
public (active) 
target: default 
icmp-block-inversion: no 
interfaces: enp0s5 
sources:  
services: dhcpv6-client ssh 
ports: 80/tcp 
protocols:  
masquerade: no 
forward-ports:  
sourceports:  
icmp-blocks:  
rich rules:

[root@CentOS rdc]#

ตามที่กำหนดค่าไว้กฎตัวกรองพอร์ต 80 ของเราจะอยู่ภายในบริบทของการกำหนดค่าที่กำลังทำงานอยู่เท่านั้น ซึ่งหมายความว่าเมื่อรีบูตระบบหรือรีสตาร์ทบริการ firewalld กฎของเราจะถูกยกเลิก

เราจะกำหนดค่าhttpd daemon เร็ว ๆ นี้ดังนั้นเรามาทำการเปลี่ยนแปลงอย่างต่อเนื่อง -

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

ตอนนี้กฎพอร์ต 80 ของเราในโซนสาธารณะยังคงอยู่ตลอดทั้งการรีบูตและการรีสตาร์ทบริการ

ต่อไปนี้เป็นคำสั่ง firewalld ทั่วไปนำไปใช้กับไฟร์วอลล์ cmd

คำสั่ง หนังบู๊
ไฟร์วอลล์ -cmd - รับโซน แสดงรายการโซนทั้งหมดที่สามารถใช้กับอินเทอร์เฟซ
firewall-cmd - สถานะ ส่งคืนสถานะปัจจุบันของบริการ firewalld
ไฟร์วอลล์ cmd - รับเริ่มต้นโซน รับโซนเริ่มต้นปัจจุบัน
ไฟร์วอลล์ -cmd --set-default-zone = <zone> ตั้งค่าโซนเริ่มต้นในบริบทปัจจุบัน
ไฟร์วอลล์ cmd - รับที่ใช้งานโซน รับโซนปัจจุบันในบริบทตามที่ใช้กับอินเทอร์เฟซ
ไฟร์วอลล์ -cmd --zone = <zone> - รายการทั้งหมด แสดงรายการการกำหนดค่าของโซนที่ให้มา
firewall-cmd --zone = <zone> --addport = <port / transport protocol> ใช้กฎพอร์ตกับตัวกรองโซน
--ถาวร ทำการเปลี่ยนแปลงโซนอย่างต่อเนื่อง แฟล็กถูกใช้แบบอินไลน์กับคำสั่งแก้ไข

เหล่านี้เป็นแนวคิดพื้นฐานของการบริหารและการกำหนดค่าfirewalld

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