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

Shorewall - ไฟร์วอลล์ระดับสูงสำหรับเซิร์ฟเวอร์ Linux


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

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

ชอร์วอลล์คืออะไร?

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

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

ติดตั้งไฟร์วอลล์ Shorewall ใน Linux

Shorewall สามารถติดตั้งได้โดยใช้เครื่องมือ apt และ yum package manager

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

หลังการติดตั้ง เราจำเป็นต้องคัดลอกการกำหนดค่าตัวอย่างจากไดเร็กทอรี “/usr/share/doc/shorewall” ไปยังไดเร็กทอรีเริ่มต้นของ Shorewall “/etc/shorewall

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

หากเราดูในไดเร็กทอรีนี้ เราจะเห็นไฟล์จำนวนหนึ่งและไฟล์ shorewall.conf

Shorewall มองเครือข่ายเป็นกลุ่มของโซนต่างๆ ดังนั้นไฟล์แรกที่เราต้องการดูคือไฟล์ “/etc/shorewall/zones

sudo nano /etc/shorewall/zones

ที่นี่ เราจะเห็นว่ามีสามโซนที่กำหนดโดยค่าเริ่มต้น: fw, net และ loc สิ่งสำคัญที่ควรทราบคือ Shorewall ถือว่าเครื่องไฟร์วอลล์เป็นโซนของตัวเองและจัดเก็บไว้ในตัวแปรที่เรียกว่า $fw

ไฟล์ “/etc/shorewall/zones” ค่อนข้างอธิบายได้ในตัวมันเอง คุณมี โซนเน็ต (อินเทอร์เฟซที่เชื่อมต่อกับอินเทอร์เน็ต), loc โซน (อินเทอร์เฟซที่เชื่อมต่อกับ LAN) และ fwซึ่งก็คือทุกสิ่ง

การตั้งค่านี้ให้สิ่งต่อไปนี้:

  • อนุญาตคำขอการเชื่อมต่อทั้งหมดจาก โซน loc (LAN) ไปยัง โซนเน็ต (อินเทอร์เน็ต)
  • ยกเลิกคำขอการเชื่อมต่อทั้งหมด (ละเว้น) จากเน็ตโซนไปยัง ไฟร์วอลล์ และ LAN
  • ปฏิเสธและบันทึกคำขออื่นๆ ทั้งหมด

บิต LOG LEVEL ควรเป็นที่คุ้นเคยสำหรับทุกคนที่เคยดูแลระบบด้วย Apache, MySQL หรือโปรแกรม FOSS อื่น ๆ อีกจำนวนหนึ่ง ในกรณีนี้ เรากำลังบอกให้ Shorewall ให้ใช้ ระดับข้อมูล ของการบันทึก

เมื่อตั้งค่าโซนและนโยบายของเราแล้ว เราจะต้องกำหนดค่าอินเทอร์เฟซของเรา คุณทำได้โดยแก้ไขไฟล์ “/etc/shorewall/interfaces

sudo nano /etc/shorewall/interfaces

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

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

man shorewall-interfaces

บทสรุปโดยย่อของบางส่วนมีดังนี้:

  • nosmurfs – กรองแพ็กเก็ตที่มีที่อยู่ออกอากาศเป็นแหล่งที่มา
  • logmartians – บันทึกแพ็กเก็ตด้วยที่อยู่ต้นทางที่เป็นไปไม่ได้
  • ตัวกรองเส้นทาง – การกรองเส้นทางเคอร์เนลเพื่อป้องกันการปลอมแปลง

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

sudo nano /etc/shorewall/rules

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

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

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

สิ่งนี้เรียกว่า การส่งต่อพอร์ต เป็นคุณลักษณะทั่วไปใน ไฟร์วอลล์/เราเตอร์ ส่วนใหญ่ ใน “/etc/shorewall/rules“ คุณจะทำได้สำเร็จโดยเพิ่มบรรทัดดังนี้:

SSH(DNAT)	net		loc:192.168.1.25

ข้างต้น เราได้กำหนดแพ็กเก็ต ที่กำหนดโดย SSH ใดๆ ที่มาจาก โซนเน็ต ไปยังไฟร์วอลล์จะต้อง กำหนดเส้นทาง (DNAT) ไปยังพอร์ต 22 บนเครื่องที่มีที่อยู่ 192.168.1.25

ซึ่งเรียกว่า การแปลที่อยู่เครือข่าย หรือ NATD ” เพียงบอก Shorewall ว่านี่คือ NAT สำหรับที่อยู่ปลายทาง

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

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