ด้วยiptablesของเคอร์เนลว่างเปล่าอย่างสมบูรณ์ (iptables -F
) สิ่งนี้จะทำสิ่งที่คุณถาม:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
สิ่งนี้บอกว่าที่อยู่ LAN ทั้งหมดได้รับอนุญาตให้พูดคุยกับพอร์ต TCP 22, localhost ได้รับการพิจารณาแบบเดียวกัน (ใช่, 127. * ไม่ใช่แค่ 127.0.0.1), และแพ็คเก็ตจากที่อยู่อื่น ๆ ที่ไม่ตรงกับกฎสองข้อแรกนั้นถังบิต คุณสามารถใช้ได้REJECT
แทนDROP
ถ้าคุณต้องการการปฏิเสธที่ใช้งานอยู่ (TCP RST) แทนที่จะทำให้ TCP พอร์ต 22 เป็นหลุมดำสำหรับแพ็กเก็ต
หาก LAN ของคุณไม่ได้ใช้ 192.168.0. * block คุณจะต้องเปลี่ยน IP และมาส์กในบรรทัดแรกเพื่อให้ตรงกับโครงร่าง IP ของ LAN
คำสั่งเหล่านี้อาจไม่ทำสิ่งที่คุณต้องการหากไฟร์วอลล์ของคุณมีกฎที่กำหนดค่าไว้แล้ว (พูดiptables -L
ตามรูทเพื่อค้นหา) สิ่งที่เกิดขึ้นบ่อยครั้งคือกฎข้อใดข้อหนึ่งที่มีอยู่คว้าแพ็คเก็ตที่คุณพยายามกรองเพื่อให้การผนวกกฎใหม่ไม่มีผล ในขณะที่คุณสามารถใช้-I
แทน-A
ด้วยiptables
คำสั่งประกบกฎระเบียบใหม่ลงไปตรงกลางของห่วงโซ่แทนท้ายพวกเขาก็มักจะดีกว่าที่จะหาวิธีโซ่ได้รับประชากรในการบูตระบบและปรับเปลี่ยนกระบวนการที่ดังนั้นกฎระเบียบใหม่ของคุณมักจะได้รับการติดตั้งใน ลำดับที่ถูกต้อง
RHEL 7+
ในระบบชนิด RHEL ล่าสุดวิธีที่ดีที่สุดในการทำเช่นนั้นคือการใช้firewall-cmd
หรือ GUI ที่เทียบเท่า สิ่งนี้จะบอกfirewalld
daemon ของระบบปฏิบัติการในสิ่งที่คุณต้องการซึ่งเป็นสิ่งที่เติมและจัดการกับสิ่งที่คุณเห็นผ่านiptables -L
และปรุงแต่งสิ่งที่คุณเห็นผ่านทาง
RHEL 6 และก่อนหน้านี้
สำหรับระบบประเภท RHEL ที่เก่ากว่าวิธีที่ง่ายที่สุดในการแก้ไขเชนไฟร์วอลล์เมื่อสั่งซื้อคือการแก้ไข /etc/sysconfig/iptables
วิธีที่ง่ายที่สุดในการปรับเปลี่ยนโซ่ไฟร์วอลล์เมื่อสั่งซื้อที่สำคัญคือการแก้ไข เครื่องมือไฟร์วอลล์ GUI และ TUI ของ OS นั้นค่อนข้างง่ายดังนั้นเมื่อคุณเริ่มเพิ่มกฎที่ซับซ้อนมากขึ้นเช่นนี้คุณควรกลับไปใช้ไฟล์ปรับแต่งเก่าที่ดีกว่า ระวังเมื่อคุณเริ่มทำสิ่งนี้คุณมีความเสี่ยงที่จะสูญเสียการเปลี่ยนแปลงหากคุณเคยใช้เครื่องมือไฟร์วอลล์ของระบบปฏิบัติการเพื่อแก้ไขการกำหนดค่าเนื่องจากอาจไม่รู้วิธีจัดการกับกฎที่ทำด้วยมือเช่นนี้
เพิ่มสิ่งนี้ลงในไฟล์:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
ตำแหน่งที่คุณเพิ่มเป็นบิตที่ยุ่งยาก หากคุณพบบรรทัดในไฟล์ที่พูดถึง--dport 22
เพียงแค่แทนที่ด้วยสามบรรทัดด้านบน มิฉะนั้นอาจเป็นไปได้ก่อนที่บรรทัดแรกที่มีอยู่จะลงท้าย-j ACCEPT
ด้วย โดยทั่วไปคุณจะต้องได้รับความคุ้นเคยกับวิธีการของiptablesทำงานของจุดที่จุดแทรกที่ถูกต้องจะชัดเจน
บันทึกไฟล์นั้นจากนั้นservice iptables restart
ให้โหลดกฎไฟร์วอลล์อีกครั้ง อย่าลืมทำเช่นนี้ในขณะที่ล็อกอินเข้าสู่คอนโซลในกรณีที่คุณทำการแก้ไข คุณไม่ต้องการล็อคตัวเองออกจากเครื่องในขณะที่ลงชื่อเข้าใช้ผ่าน SSH
ความคล้ายคลึงกับคำสั่งด้านบนไม่มีความบังเอิญ ไฟล์นี้ส่วนใหญ่ประกอบด้วยอาร์กิวเมนต์ของiptables
คำสั่ง ความแตกต่างที่สัมพันธ์กับข้างต้นคือiptables
คำสั่งถูกดร็อปและINPUT
ชื่อลูกโซ่กลายเป็นRH-Firewall-1-INPUT
ลูกโซ่เฉพาะ RHEL พิเศษ (หากคุณสนใจที่จะตรวจสอบไฟล์โดยละเอียดยิ่งขึ้นคุณจะเห็นก่อนหน้านี้ในไฟล์ที่พวกเขาได้เปลี่ยนชื่อINPUT
เชนเป็นหลักเพราะเหตุใดไม่สามารถพูดได้)