เปิดพอร์ต 80 ใน CentOS 6.5


14

ฉันพยายามเปิดพอร์ต 80 ใน CentOS 6.5 ของฉันบนเครื่องเสมือนของฉันดังนั้นฉันสามารถเข้าถึง apache จากเบราว์เซอร์เดสก์ท็อปของฉัน

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณดูที่ภาพหน้าจอด้านบน .... ฉันได้เพิ่มบรรทัดก่อนที่ลูกศรสีน้ำเงินตามที่เขียนไว้ในhttp://www.cyberciti.biz/faq/linux-iptables-firewall-open-port- 80 / ตอนนี้ฉันได้รับหน้าการทดสอบ apache เมื่อป้อนที่อยู่ IP ในเบราว์เซอร์ของฉัน แต่ยังคงเมื่อเริ่มต้น iptables ใหม่ฉันจะได้รับ "ล้มเหลว" เมื่อ CentOS พยายามใช้กฎใหม่

ไม่มีใครรู้วิธีแก้ปัญหาสำหรับเรื่องนี้? หรือฉันต้องเพิกเฉยต่อความล้มเหลว

คำตอบ:


28

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

ในการเปิดพอร์ต 80 ฉันทำสิ่งนี้:

$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables save

คำสั่งสุดท้ายจะบันทึกกฎที่เพิ่มเข้ามา นี่คือกฎที่ฉันจะใช้เพื่อเปิดพอร์ตสำหรับปริมาณการใช้งานเว็บ

ทำไมกฎของคุณทำให้เกิดปัญหา

หากคุณสังเกตเห็นกฎที่คุณพยายามจะใช้:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

มีสายโซ่ที่เรียกว่า "RH-Firewall-1-INPUT" หากคุณไม่มีเชนนี้หรือลิงค์จากINPUTเชนไปยังเชนนี้กฎนี้จะไม่สามารถเข้าถึงได้ กฎนี้อาจเป็นดังนี้:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

หรือINPUTเชนของคุณควรลิงค์ไปยังเชนนี้RH-Firewall-1-INPUTด้วยกฎเช่นนี้:

$ sudo iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
....

บันทึก:คุณสามารถดูโซ่ที่คุณมีด้วยคำสั่งนี้:

$ sudo iptables -L| grep Chain
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
...

นอกจากนี้รัฐอาจต้องแก้ไขเพื่อให้การเชื่อมต่อที่มีอยู่ได้รับอนุญาตเช่นกัน

-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

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

-I INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

การใช้ GUI

ไฟร์วอลล์อาจเป็นสัตว์ที่มีความซับซ้อน ดังนั้นคุณอาจต้องการลองใช้ TUI แทน (TUI เป็น GUI สำหรับเทอร์มินัล)

$ sudo system-config-firewall-tui

จากนั้นคุณสามารถผ่านหน้าจอต่างๆเพื่อตั้งiptablesกฎ

            เอสเอส # 1

            เอสเอส # 2

อ้างอิง


กฎล่าสุดลบกฎก่อนหน้าทั้งหมดในไฟล์ iptables ของฉันและเพิ่มเพียงหนึ่งข้างต้น (sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT) ตอนนี้ฉันไม่สามารถเข้าถึงหน้า apache จากเบราว์เซอร์ของฉันได้อีกต่อไป
Erik van de Ven

1
@ErikVandeVen - ขอโทษที่ฉันไม่ได้ทำให้ชัดเจน กฎอื่น ๆ ที่คุณจะต้องมีการเพิ่มในลักษณะเดียวกันและบันทึกไว้ (ในเวลา sam) หรือคุณสามารถไปที่ไฟล์/etc/sysconfig/iptablesและเพิ่มได้ ข้อมูลต้นฉบับของคุณควรอยู่ในไฟล์นี้, /etc/sysconfig/iptables.save.
slm

ขอบคุณฉันสามารถกู้คืน iptables ได้โดยการคัดลอก iptables.save แต่ฉันก็ยังไม่สามารถเพิ่มกฎโดยไม่เกิดข้อผิดพลาดและสามารถเปิดหน้าทดสอบ apache ภายในเบราว์เซอร์ของฉันได้ในเวลาเดียวกัน ผมจะดูที่การกวดวิชาที่ whcih riclags ได้โพสต์ครั้งแรก :)
เอริคแวนเดอเวน

1
ผู้ชายฉันไม่เข้าใจเลยว่าทำไมคำตอบนี้จึงได้รับซิงเกิ้ลใด ๆ รายละเอียดการตอบที่ดีเยี่ยม พิจารณาหนึ่งของฉันเหมือนเป็นพันขอบคุณ
Samiron

1
GUI ไฟร์วอลล์นั่นนั้นเป็นสิ่งที่พระเจ้าส่งมาโดยที่ไม่เคยเห็นมาก่อน!
Matt Fletcher

0

ฉันเพิ่งติดตั้ง CentOS 6.5 เป็นเครื่องเสมือนด้วยเหตุผลเดียวกันเพื่อใช้เป็นเว็บเซิร์ฟเวอร์เสมือน อย่างไรก็ตามผมทำตามนี้มีรายละเอียดมากวิธีการจากวิกิพีเดีย CentOS จากนั้นตามคำตอบของ @slm ฉันเพิ่มพอร์ต 80 ลงในนั้นและบันทึกโดยใช้sudo /etc/init.d/iptables saveไปและบันทึกไว้โดยใช้

iptables -L -v มีผลลัพธ์นี้:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
  214 17168 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    1    44 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:http 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 169 packets, 15164 bytes)
 pkts bytes target     prot opt in     out     source               destination

0

หากคุณต้องการแก้ไขการตั้งค่าไฟร์วอลล์ของคุณ แต่คุณไม่คุ้นเคยiptablesฉันขอแนะนำให้คุณใช้system-config-firewall-tuiเครื่องมือนี้หากคุณไม่ได้ใช้ X server system-config-firewallซึ่งเป็นเครื่องมือ GUI สำหรับมัน

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