จะลบการเข้าถึงพอร์ตโดยใช้ไฟร์วอลล์บน Centos7 ได้อย่างไร


14

หากพอร์ตเปิดขึ้นสำหรับการใช้งานสาธารณะโดยใช้ไฟร์วอล - cmd ฉันต้องการ จำกัด พอร์ตนี้เป็น IP เฉพาะซึ่งฉันพบคำตอบสำหรับไซต์นี้

ฉันใช้สิ่งต่อไปนี้เพื่อเปิด:

$ firewall-cmd --permanent --zone=public --add-port=10050/tcp
$ firewall-cmd --reload

ตอนนี้ใช้ข้อมูลจากข้อมูลที่ฉันพบว่าฉันต้องการ จำกัด การเข้าถึงพอร์ตนี้ไปยังที่อยู่ IP ที่เฉพาะเจาะจง ฉันต้องลบพอร์ตนี้ออกจากการเข้าถึงสาธารณะก่อนหรือไม่

หรือฉันเพียงแค่เพิ่มกฎใหม่ดังต่อไปนี้และนั่นจะดูแลปัญหาให้ฉันได้ไหม

$ firewall-cmd --new-zone=special
$ firewall-cmd --permanent --zone=special --add-rich-rule='
  rule family="ipv4"
  source address=”123.1.1.1"
  port protocol="tcp" port="10050" accept'

ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --reload

แต่เมื่อฉันเรียกใช้ต่อไปนี้:

$ firewall-cmd --list-ports 

10050/tcp จะยังคงปรากฏ

โปรดเข้าใจฉันไม่คุ้นเคยกับการกำหนดค่าด้านที่รุนแรงเกินไป

Soultion:อย่าลืม--run-to-Permanent

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --runtime-to-permanent
$ firewall-cmd --reload 

อาฉันลืม--permanent
mcv

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

1
เป็นการดีกว่าที่จะไม่ใช้--permanentในกรณีที่คุณทำผิดกฎไฟร์วอลล์ หากคุณใช้--permanentและล็อคตัวเองคุณจะพบว่ามันค่อนข้างยากที่จะกลับเข้ามาเนื่องจากคุณไม่มีวิธีการกู้คืน แต่อย่าใช้--permanentและเมื่อคุณมีความสุขกับกฎใช้firewall-cmd --runtime-to-permanentเพื่อกระทำกฎ หากคุณถูกล็อคการรีโหลดไฟร์วอลล์หรือการรีบูตจะกลับมาอีกครั้ง
Michael Hampton

ดังนั้นสิ่งนี้firewall-cmd --runtime-to-permanentจะถูกนำไปใช้หลังจากfirewall-cmd --reloadหรือแทนที่มันทั้งหมดหรือไม่ ฉันจะลองสิ่งนี้อย่างแน่นอน
mcv

คำตอบ:


28

วิธีแก้ปัญหา:อย่าลืม--runtime-to-Permanent

$ firewall-cmd --zone=public --remove-port=10050/tcp
$ firewall-cmd --runtime-to-permanent 
$ firewall-cmd --reload 

1
systemctl restart firewalldฉันยังคงมีการปฏิบัติตามด้วย
JaKu

สิ่งนี้ไม่ได้ผลสำหรับฉัน systemctlเป็นรุ่น219และfirewall-cmdเป็นรุ่น0.5.3บน CentOS 7.5 64 บิต
Pred

5
# firewall-cmd --zone=public --remove-port=12345/tcp --permanent
# firewall-cmd --reload

แทนที่ 12345 ด้วยพอร์ตที่คุณต้องการลบ


1
ฉันอ่านที่ไหนสักแห่งว่าใน Fedora doc แนะนำให้ใส่--permanentเป็นตัวเลือกแรก แต่ใช่--permanentเป็นกุญแจสำคัญ
WesternGun

ฉันมักจะเก็บไว้เป็นตัวเลือกสุดท้ายเพื่อให้แน่ใจว่าหากกฎไม่ถูกต้องไม่ว่าด้วยเหตุผลใดฉันสามารถรีบูตได้โดยไม่ต้องสร้างกฎถาวร ถ้าเป็นไปตามที่ฉันต้องการฉันสามารถใช้ลูกศรขึ้นและเพิ่มลง--permanentในส่วนท้ายได้
Justin E

0

ทำตามขั้นตอนเหล่านี้คุณจะสบายดี:

  1. $ firewall-cmd --zone = public --remove-port = 10050 / tcp
  2. $ firewall-cmd - ทำงานเป็นถาวร
  3. $ firewall-cmd - โหลดซ้ำ
  4. $ systemctl รีสตาร์ทไฟร์วอลล์
  5. $ firewall-cmd --zone = public - รายการ - พอร์ต

ฉันไม่คิดว่าคุณจำเป็นต้องรีสตาร์ทไฟร์วอลล์d firewalldได้รับการออกแบบมาเพื่อหลีกเลี่ยงการเริ่มบริการทั้งหมดใหม่ทุกครั้งที่คุณเปลี่ยนการกำหนดค่า
vdegenne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.