- โครงสร้างและการไหล: ตาราง โซ่ และการไหลของข้อมูล
- กฎและนโยบาย: คำสั่ง การแข่งขัน และวัตถุประสงค์หลัก
- NAT และการเผยแพร่: SNAT/MASQUERADE และ DNAT ในสถานการณ์โลกแห่งความเป็นจริง
- การออกแบบที่ปลอดภัย: DMZ ที่ใช้งานได้จริงและแนวทางปฏิบัติที่ดีในการทำงาน
หากคุณจัดการระบบปฏิบัติการ Linux เพื่อปกป้องความปลอดภัยและความเป็นส่วนตัวของคุณไม่ช้าก็เร็วคุณจะต้องจัดการกับ iptables ระบบกรองแพ็กเก็ตนี้เป็นหัวใจสำคัญของไฟร์วอลล์แบบคลาสสิกใน GNU/Linuxซึ่งสามารถตัดสินใจได้ว่าทราฟฟิกใดจะเข้า ออก หรือส่งต่อระหว่างเครือข่ายได้ หากตั้งค่าอย่างถูกต้อง มันก็เหมือนกับการมีพนักงานรักษาความปลอดภัยที่มีทักษะสูงอยู่ที่ทางเข้าเครือข่ายของคุณ คอยบังคับใช้กฎของคุณอย่างไม่มีที่ติและแม่นยำราวกับผ่าตัด
ในบรรทัดต่อไปนี้ คุณจะพบกับคู่มือฉบับสมบูรณ์และทันสมัยที่ครอบคลุมประเด็นสำคัญต่างๆ ได้แก่แนวคิดเกี่ยวกับไฟร์วอลล์ , Netfilter, ตารางและเชน, การไหลของแพ็กเก็ต, คำสั่งหลัก, ส่วนขยายกฎ และเป้าหมายขั้นสูงรวมถึงสถานการณ์การใช้งานจริง เช่น NAT, การเปลี่ยนเส้นทาง, นโยบายเริ่มต้น และ DMZ ที่ใช้งานได้จริง ทุกอย่างได้รับการอธิบายด้วยภาษาที่ชัดเจนแต่เข้มงวด เพื่อให้คุณสามารถนำไปใช้กับโครงสร้างพื้นฐานของคุณได้ทันที
ไฟร์วอลล์ในบริบท: จากพนักงานรักษาความปลอดภัยในไนท์คลับสู่เขต DMZ
ไฟร์วอลล์โดยพื้นฐานแล้วคือตัวกรองระหว่างเครือข่ายที่ใช้กฎเกณฑ์ในการตัดสินชะตากรรมของแต่ละแพ็กเก็ตลองนึกภาพเหมือนกับพนักงานรักษาความปลอดภัยในไนท์คลับที่มีรายการตรวจสอบ : ถ้าแพ็กเก็ตตรงตามเงื่อนไขก็จะผ่านเข้าไป ถ้าไม่ตรงก็จะถูกปฏิเสธ อุปมานี้ช่วยให้เข้าใจว่าสิ่งที่สำคัญคือตรรกะของกฎและลำดับในการประเมินกฎเหล่านั้น
ในการออกแบบเครือข่าย โครงสร้างเครือข่ายบางแบบมีความปลอดภัยมากกว่าแบบอื่นDMZ (เขตปลอดทหาร) คือเครือข่ายระดับกลางที่ให้บริการสาธารณะ (เช่น เว็บไซต์หรือเซิร์ฟเวอร์ FTP) โดยแยกออกจากเครือข่าย LAN ขององค์กร เหตุผลก็คือ หากผู้โจมตีสามารถเจาะระบบเซิร์ฟเวอร์สาธารณะได้ การแบ่งส่วนเครือข่ายจะป้องกันไม่ให้พวกเขาสามารถเข้าถึงส่วนที่เหลือของเครือข่ายภายในได้โดยตรง
Linux เป็นไฟร์วอลล์: Netfilter และ iptables
เคอร์เนลของลินุกซ์ได้รวมเอาNetfilter ซึ่งเป็นเฟรมเวิร์กที่มีกลไกสำหรับการดักจับและจัดการแพ็กเก็ตเอาไว้ในส่วนของพื้นที่ผู้ใช้ iptables เป็นยูทิลิตี้ที่กำหนดกฎที่เคอร์เนลจะนำไปใช้กับทราฟฟิก การแยกส่วนระหว่างเคอร์เนลและผู้ใช้เช่นนี้ทำให้ได้ประสิทธิภาพสูงและมีความยืดหยุ่นสูง
เป็นเรื่องที่มีประโยชน์ที่จะแยกแยะยูทิลิตี้ต่างๆ ตามโปรโตคอล ได้แก่iptables (IPv4), ip6tables (IPv6), arptables (ARP) และ ebtables (เฟรมอีเธอร์เน็ต)ในเคอร์เนล โมดูลทั่วไปคือ x_tables ซึ่งใช้ตรรกะร่วมกันในการจับคู่ส่วนขยายและเป้าหมาย ข้อสังเกตทางประวัติศาสตร์: iptables เข้ามาแทนที่ ipchains และ nftables ก็เข้ามาแทนที่ iptables ในเคอร์เนลเวอร์ชัน 3.13แม้ว่า iptables ยังคงถูกใช้งานอย่างแพร่หลายในหลายระบบ
ในการใช้งานคุณต้องมีสิทธิ์ของผู้ดูแลระบบ รัน iptables ในฐานะ root (หรือด้วย sudo) โดยปกติใน /usr/sbin/iptables (Debian/derivatives) หรือ /sbin/iptables (Red Hat/derivatives) เอกสารอย่างเป็นทางการอยู่ที่ man iptables และที่ netfilter.org
โครงสร้าง iptables: ตาราง เชน และกฎ
Iptables จัดระเบียบตรรกะของมันไว้ในตารางที่ประกอบด้วยโซ่ที่เต็มไปด้วยกฎต่างๆแต่ละกฎระบุเงื่อนไขการจับคู่และเป้าหมายที่จะนำไปใช้เมื่อแพ็กเก็ตตรงกับเงื่อนไขเหล่านั้น
- ตารางตัวกรอง (ค่าเริ่มต้น การกรองแบบบริสุทธิ์)
- INPUT: การจราจรมุ่งตรงไปที่ตัวเครื่องโดยตรง
- ไปข้างหน้า: ปริมาณการจราจรที่ผ่านอุปกรณ์ (การกำหนดเส้นทาง)
- เอาท์พุท: ปริมาณการรับส่งข้อมูลที่สร้างขึ้นในพื้นที่
- โต๊ะแนท (การแปลที่อยู่; ประเมินจากการเชื่อมต่อใหม่)
- การเตรียมการ: ก่อนที่จะตัดสินใจเลือกเส้นทาง เหมาะสำหรับการส่งต่อ DNAT/พอร์ต
- เอาท์พุท: แพ็กเก็ตที่มาจากภายในเครื่องก่อนการกำหนดเส้นทาง
- โพสต์ภาพ: หลังจากการกำหนดเส้นทาง เป็นเรื่องปกติสำหรับ SNAT/MASQUERADE
- โต๊ะไม้โกงกาง (ปรับแต่งส่วนหัวอย่างละเอียด: TOS, TTL, การทำเครื่องหมาย ฯลฯ)
- การกำหนดเส้นทางล่วงหน้า, อินพุต, ฟอร์เวิร์ด, เอาท์พุต, โพสต์รูทติ้ง: มีจำหน่ายตลอดเส้นทาง.
- ตารางดิบ (การควบคุมการติดตามการเชื่อมต่อ/conntrack)
- การเตรียมการ y เอาท์พุท:เพื่อทำเครื่องหมายการจราจรที่ควรข้ามโดย conntrack
เมื่อแพ็กเก็ตมาถึงเชน ระบบจะเปรียบเทียบแพ็กเก็ตนั้นกับกฎแต่ละข้อตามลำดับ หากตรงกัน ระบบจะดำเนินการตามเป้าหมายและหยุดการสำรวจ หากแพ็ก เก็ ตมาถึงจุดสิ้นสุดโดยไม่ตรงกับกฎใด ๆ และเชนนั้นถูกกำหนดไว้ล่วงหน้า ระบบ จะใช้กฎเชนเริ่มต้น สำหรับเชนนั้น
การไหลของแพ็กเก็ต: พวกมันผ่านที่ไหนและเมื่อใด
การทำความเข้าใจเส้นทางการรับส่งข้อมูลเป็นกุญแจสำคัญในการนำกฎไปใช้อย่างถูกต้อง โดยทั่วไปแล้วแพ็กเก็ตที่ออกจากเครือข่าย LAN ของคุณไปยังอินเทอร์เน็ตจะได้รับการประมวลผลดังนี้: ขั้นแรกคือPREROUTING (อาจมี DNAT/mangle) จากนั้นคือFORWARD (การกรองข้อมูลระหว่างทาง) และก่อนที่จะออกจากอุปกรณ์ จะได้รับการประมวลผล POSTROUTING (SNAT/MASQUERADE หากมี)
ในทางกลับกัน หากปลายทางคือไฟร์วอลล์เองเส้นทางจะเป็น PREROUTING → INPUTแต่ถ้ามาจากเครื่องโลคัล เส้นทางจะเป็นOUTPUT → POSTROUTINGกรอบความคิดนี้จะช่วยลดปัญหาปวดหัวเมื่อมีบางอย่างไม่ลงตัว
คำสั่งพื้นฐาน: รายการ ล้าง สร้าง และนโยบายเริ่มต้น
เพื่อตรวจสอบสถานะปัจจุบัน สหรัฐอเมริกา iptables -L (ทางเลือก -v เพื่อดูรายละเอียดและ -n (เพื่อไม่ให้แก้ไขชื่อ)คุณยังสามารถสร้างและลบโซ่ด้วย -N y -X ตามลำดับ และกำหนดนโยบายเริ่มต้นด้วย -P.
เมื่อคุณต้องเริ่มต้นจากศูนย์ กฎที่สะอาดด้วย -F (กดชักโครก) และถ้าใช้ได้ เคาน์เตอร์ โปรดจำไว้ว่าคุณสามารถระบุตารางด้วย -t และโซ่เฉพาะ เช่น iptables -F -t nat สำหรับ NAT
เมื่อกำหนดกฎ ตัวเลือกที่พบบ่อยที่สุดมักจะตรงไปตรงมา: -A เป็ด, -I แทรก, -R แทนที่และ -D ที่ถูกลบจากนั้นคุณเพิ่มตัวเลือกเช่น -p (โปรโตคอล), -s/-d (ต้นทาง/ปลายทาง), -i/-o (อินเทอร์เฟซ) และเป้าหมายด้วย -j (เช่น., ยอมรับ ยกเลิก หรือปฏิเสธ).
ลา นโยบายเริ่มต้น กำหนดสิ่งที่จะเกิดขึ้นหากไม่มีกฎที่ตรงกัน โครงร่างที่แข็งแกร่งโดยทั่วไปบนโฮสต์จะเป็น INPUT DROP, FORWARD DROP, OUTPUT ACCEPT, การบล็อกทุกอย่างที่เข้ามา ยกเว้นสิ่งที่ได้รับอนุญาตอย่างชัดเจน และปล่อยให้สิ่งที่ออกมาเป็นไปตามธรรมชาติ
ส่วนขยายการจับคู่ (-m): TCP, UDP, ICMP, MAC, stateful และมัลติพอร์ต
Iptables ขยายตัวกรองด้วยโมดูลที่ตรงกันโดยใช้ -m. TCP หนึ่งอนุญาตให้ปรับแต่งตามพอร์ตและแฟล็ก: --dport/--sport y --syn สำหรับการเปิดการเชื่อมต่อใหม่ เช่น
สำหรับ UDP คุณยังสามารถจำกัดพอร์ตต้นทางและปลายทางได้ตัวอย่างคลาสสิกคือ การเปิดพอร์ต 80/443 ให้กับเว็บเซิร์ฟเวอร์ หรืออนุญาตการสอบถาม DNS ขาออกบนพอร์ต 53/UDP
ด้วย ICMP --icmp-type ช่วยให้คุณสามารถแยกแยะประเภทได้ (เช่น., คำขอเสียงสะท้อน y ตอบกลับแบบเอคโค่ สำหรับการ ping) ซึ่งมีประโยชน์ในการอนุญาตการวินิจฉัยโดยไม่ปล่อยให้ ICMP เต็มรูปแบบเปิดอยู่
ยังมีโมดูลด้วย mac เพื่อกรองตามที่อยู่ MAC กับ --mac-sourceมีประโยชน์หากคุณต้องการอนุญาตให้คอมพิวเตอร์ที่ได้รับการจัดการโดยใช้ IP แบบไดนามิกทำการ ping ไฟร์วอลล์โดยไม่ต้องพึ่ง IP
และที่สำคัญที่สุดบางทีอาจอยู่ที่ระดับปฏิบัติการ โมดูล state (หรือติดตาม) ด้วย --state NEW, ESTABLISHED, RELATEDวิธีนี้ช่วยให้สามารถตอบสนองจากการเชื่อมต่อที่สร้างไว้แล้วได้ ช่วยลดจำนวนกฎที่จำเป็นลงอย่างมาก
การจัดกลุ่มพอร์ต multiport เพิ่ม --sports y --dports ด้วยรายการที่คั่นด้วยเครื่องหมายจุลภาคสะดวกในการเปิด HTTP, HTTPS และ SSH ในกฎเดียว
เป้าหมายนอกเหนือจากการยอมรับ/ยกเลิก: NAT และบริษัท
นอกจากการยอมรับหรือปฏิเสธแล้ว iptables ยังสามารถเขียนที่อยู่และพอร์ตใหม่เพื่อเชื่อมต่อเครือข่ายส่วนตัวกับอินเทอร์เน็ต หรือเพื่อประกาศบริการภายในได้อีกด้วย
สวมหน้ากาก (ตอน POSTROUTING จากตาราง nat) แทนที่ IP ต้นทางด้วย IP เอาต์พุตของไฟร์วอลล์ เหมาะอย่างยิ่งเมื่อ IP สาธารณะเป็นแบบไดนามิก (DHCP) นี่คือ NAT ขาออกทั่วไปสำหรับ LAN ทั้งหมด
สแนท (ยังอยู่ใน POSTROUTING) ตั้งค่า IP/พอร์ตต้นทางอย่างชัดเจนด้วย --to-source. ใช้เมื่อคุณมี IP สาธารณะแบบคงที่ และคุณอยากจะควบคุมการแปลอย่างแม่นยำ
ดีเอ็นเอท (ตอน PREROUTING o OUTPUT) เปลี่ยน IP ปลายทางด้วย --to-destination. เป็น “ท่าเรือเปิด” ที่มีชื่อเสียง:คุณรับข้อมูลการรับส่งข้อมูลบน IP สาธารณะและเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ใน DMZ เช่น เว็บไซต์ภายในที่ 192.168.1.2
ตัวอย่างง่ายๆ: การกรองการรับส่งข้อมูลระหว่างสองเครือข่าย
ลองนึกภาพเครื่องจักรที่ทำหน้าที่เป็นเราเตอร์/ไฟร์วอลล์ระหว่างสองซับเน็ต หากคุณต้องการให้โฮสต์ B เท่านั้นที่จะพูดคุยกับ C และผ่านทาง TCP เท่านั้น, ตารางจะเป็น filter และสตริงที่ถูกต้องคือ FORWARDเนื่องจากมีการจราจรผ่านอุปกรณ์
ขั้นแรก คุณจะต้องใช้หลักการ DROP เริ่มต้นกับ FORWARDจากนั้นจึงอนุญาตการรับส่งข้อมูล B→C บน TCP อย่างชัดเจน (และหากเหมาะสม ก็อนุญาต C→B ด้วย) รูปแบบ "ปฏิเสธโดยค่าเริ่มต้นและอนุญาตเฉพาะสิ่งที่จำเป็นขั้นต่ำ" นี้เป็นรากฐานของระบบรักษาความปลอดภัยที่แข็งแกร่ง
คดีรายวันบนแคทวอล์ค: กฎทั่วไป
เกตเวย์ที่มีสองอินเทอร์เฟซ เช่น eth1 (LAN) และ eth0 (WAN)โดยปกติจะต้องส่งต่อแพ็กเก็ตจาก LAN ไปยังอินเทอร์เน็ต เพื่อทำสิ่งนี้ จะเพิ่ม FORWARD -i eth1 -o eth0 -j ACCEPTและ อนุญาตเฉพาะแบบย้อนกลับเท่านั้น ESTABLISHED,RELATED กับ -m state.
ในไฟร์วอลล์เองขอแนะนำให้มีการอนุญาต ทราฟฟิกขาเข้าซึ่งเป็นการตอบสนองต่อการเชื่อมต่อขาออก กับ INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTและอนุญาตให้มีการวนกลับเสมอ: INPUT -i lo -j ACCEPT.
หากต้องการให้คอมพิวเตอร์ LAN สามารถเรียกดูได้ ให้ใช้ NAT ขาออก: -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source X.Y.Z.W (o MASQUERADE หาก IP เป็นแบบไดนามิก สิ่งนี้จะแปล IP ส่วนตัวเป็น IP สาธารณะของคุณ
มาตรการเสริมความปลอดภัยขั้นพื้นฐานอย่างหนึ่งคือการบล็อกแพ็กเก็ต WAN ขาเข้าที่มี IP ต้นทางที่ไม่ถูกต้อง (เช่น IP สาธารณะของคุณเอง ช่วง IP ส่วนตัว 192.168.0.0/24, 127.0.0.0/8 เป็นต้น) เนื่องจากมักบ่งชี้ถึงการปลอมแปลง IP
หากต้องการเปิดเผยบริการบนไฟร์วอลล์ (เช่น SMTP 25, HTTP 80, HTTPS 443 หรือ SSH 22) คุณสามารถ อนุญาตให้แพ็กเก็ต TCP ที่มีแฟล็ก SYN ไปยังพอร์ตปลายทางเหล่านั้นหากคุณต้องการจำกัดขอบเขตตาม IP ปลายทาง ให้เพิ่ม -d ไปยัง IP ของบริการ
บริการโครงสร้างพื้นฐานทั่วไป ได้แก่DHCP (การรับส่งข้อมูลจากพอร์ต 68 ถึง 67) บนอินเทอร์เฟซ LAN และDNSจากตัวแก้ไขที่เชื่อถือได้ (UDP 53) หากมีการกรองตามแหล่งที่มา พอร์ตเหล่านี้อนุญาตให้ไคลเอ็นต์รับที่อยู่ IP และแก้ไขชื่อได้
หากคุณต้องการบล็อกการเข้าถึง การใช้คำสั่ง DROP สำหรับการเชื่อมต่อ SSH/Telnet ขาเข้าก็ทำได้ง่าย นอกจากนี้ คุณยังสามารถ ใช้คำสั่ง REJECT สำหรับข้อความขาออกไปยัง IP ที่ถูกบล็อกในเครือข่ายท้องถิ่น เพื่อให้ผู้ส่งได้รับการแจ้งเตือนการปฏิเสธ
การติดตั้งและจัดการบริการบนระบบ Red Hat/CentOS
ในสภาพแวดล้อมดั้งเดิมที่มี CentOS/RHEL 5/6 ก็เพียงพอแล้ว ติดตั้งด้วย yum -y install iptablesแม้ว่าในปัจจุบันดิสโทรใหม่ๆ จำนวนมากจะนิยมใช้ nftables แต่ iptables ยังคงมีอยู่ในระบบและอุปกรณ์การผลิตอยู่
บูรณาการกับ บริการ SysV อนุญาตให้จัดการและคงกฎเกณฑ์ไว้ได้: service iptables start|stop|restart y service iptables save, การออมเงินใน /etc/sysconfig/iptables. เพื่อเปิดใช้งานเมื่อบูต: chkconfig iptables on ในระดับ 2–5
ในระบบสมัยใหม่ แม้ว่าตัวห่อหุ้ม จะเปลี่ยนแปลงไป แต่แนวคิดหลักยังคงอยู่ นั่นคือกำหนดกฎ ทดสอบ และบันทึกกฎเหล่านั้นไว้เพื่อให้กฎเหล่านั้นยังคงใช้งานได้แม้หลังจากการรีบูต ไม่ว่าจะด้วยเครื่องมือของระบบหรือสคริปต์ก็ตาม
การแสดงรายการ การลบ และการแก้ไขกฎด้วยความแม่นยำ
เพื่อดูสถานะพร้อมหมายเลขกฎ สหรัฐอเมริกา iptables -L --line-numbers -n -vด้วยวิธีนี้คุณสามารถลบโดยดัชนีด้วย -D INPUT 3 หรือแทนที่ด้วย -R โดยไม่สับสน
หากคุณต้องการลบแบบเลือก ทำความสะอาดเฉพาะโซ่หรือกระดานที่สัมผัส (-F FORWARD o -F -t nat) หลีกเลี่ยงการกวาดล้างทั่วโลกแบบระยะไกลโดยไม่มี "ตาข่ายความปลอดภัย" มิฉะนั้นคุณอาจสูญเสียการเข้าถึง SSH
โดยทั่วไปแล้วควรเริ่มต้นด้วยการกำหนดกฎที่อนุญาตให้เซสชัน SSH ของคุณใช้งานได้ ปรับเปลี่ยนทีละน้อย และกำหนดช่วงเวลาสำหรับการย้อนกลับ (ตัวอย่างเช่น งาน Cron ที่จะกู้คืนกฎใน 5 นาทีหากคุณไม่ได้ยืนยันการเปลี่ยนแปลง)
การคงอยู่ด้วย iptables-save และ iptables-restore
เพื่อบันทึกการตั้งค่าของคุณ iptables-save > /ruta/backup/iptables.rules สร้างดัมพ์ที่เครื่องอ่านได้ของตารางทั้งหมด เหมาะสำหรับการควบคุมการเปลี่ยนแปลงและการโยกย้ายข้อมูล
เพื่อชาร์จมันใช้ iptables-restore < /ruta/backup/iptables.rulesคุณสามารถทำการคืนค่าการบูตอัตโนมัติด้วย systemd, สคริปต์ init หรือ cron job @rebootเพื่อให้แน่ใจว่าไฟร์วอลล์ยังคงทำงานอยู่หลังจากรีบูต
เพิ่มการปฏิบัติที่ดีเหล่านี้: ดำเนินการด้วยสิทธิพิเศษที่เหมาะสม, บันทึกไฟล์ไว้ภายนอก /tmp และจัดให้สอดคล้องกับสภาพแวดล้อม (อินเทอร์เฟซและซับเน็ตที่ถูกต้อง) เพื่อหลีกเลี่ยงความประหลาดใจ
DMZ อย่างละเอียด: ตัวอย่างที่สมบูรณ์และสมจริง
สมมติว่ามีไฟร์วอลล์ Linux เชื่อมต่อกับเราเตอร์ในโหมด "ผู้ใช้คนเดียว" (โดยไม่มี NAT) โดยมีอินเทอร์เฟซสามตัว ได้แก่eth0 (LAN 192.168.1.1/24), eth1 (DMZ 192.168.2.1/24) และ eth2 (WAN ที่ได้รับ IP จาก DHCP) DMZ นี้เป็นที่ตั้งของเว็บเซิร์ฟเวอร์ Apache (192.168.2.2) และเซิร์ฟเวอร์ FTP (192.168.2.3)
วัตถุประสงค์ของนโยบาย: เพื่อเผยแพร่ HTTP/HTTPS และ FTP จาก DMZ ไปยังอินเทอร์เน็ตเพื่ออนุญาตการจัดการ SSH จาก LAN ไปยังไฟร์วอลล์ และเพื่ออนุญาตให้ LAN เรียกดูเว็บ (HTTP/HTTPS) ถ่ายโอนไฟล์ผ่าน FTP และแก้ไข DNS การเข้าถึงอื่นๆ ทั้งหมดถูกปฏิเสธ
พูดกว้างๆ: ใน กรอง/ส่งต่อ อนุญาตให้มีการขนส่ง LAN→WAN พร้อมการตอบสนอง และ WAN→DMZ ไปยังพอร์ตที่เผยแพร่เท่านั้น กับ ESTABLISHED,RELATED เพื่อหาคำตอบ ใน nat/พรีรูทติ้ง, ใช้ DNAT เพื่อเผยแพร่บริการ; ใน แนท/โพสต์สเตราท์, SNAT/MASQUERADE สำหรับเอาท์พุต LAN/DMZ
ตัวอย่างการเปิดคำเปิด: DNAT 80/443 ถึง 192.168.2.2 และ 21/20 (ขึ้นอยู่กับโหมด) ถึง 192.168.2.3 ด้วยสิ่งที่สอดคล้องกัน FORWARD อนุญาตพอร์ตเหล่านั้น รักษาความปลอดภัยช่องสัญญาณควบคุมและข้อมูลสำหรับ FTP (แอคทีฟ/พาสซีฟ) หรือจำกัดช่วงพาสซีฟและแสดงข้อมูลนี้บนไฟร์วอลล์
สำหรับ LAN: อนุญาตให้ออกทาง 80, 443, 21 และ 53 และการกลับมาใช้ NAT ขาออก POSTROUTING. ในไฟร์วอลล์ให้อนุญาต ขาเข้า SSH จากซับเน็ต 192.168.1.0/24 เท่านั้น และบล็อคการเข้าถึงที่ไม่ต้องการจาก WAN
อย่าลืมเรื่องสุขอนามัย: ปิดใช้งานช่วง IP ที่ไม่ถูกต้องบน WAN (ส่วนตัว, ลูปแบ็ก, IP สาธารณะของคุณเอง) และบันทึกเฉพาะสิ่งที่คุณสนใจเท่านั้น ด้วยนโยบายเริ่มต้นที่เข้มงวดและการเปิดช่องสัญญาณน้อยที่สุด ความเสี่ยงของคุณจะลดลงเหลือน้อยที่สุด
แนวทางปฏิบัติที่ดีและเคล็ดลับการปฏิบัติงาน
ควรวางแผนการทำงานเสมอ: บันทึกสิ่งที่คุณอนุญาตและเหตุผลตรวจสอบขั้นตอนที่คาดหวังด้วยแผนภาพอย่างง่าย และใช้กฎตามลำดับที่ถูกต้องเพื่อหลีกเลี่ยงการทับซ้อนกัน
ใช้การผสมผสานโมดูลที่มีหัว: สถานะ/ติดตามการตอบกลับ tcp con --syn ในช่องเปิดและ multiport เข้ากลุ่มวิธีนี้ช่วยให้คุณลดความซับซ้อนและลดความเสี่ยงของความไม่สอดคล้องกัน
สำหรับสภาพแวดล้อมที่มีการเปลี่ยนแปลงบ่อยครั้ง ควรพิจารณาแยกกฎตามฟังก์ชัน: โซ่ที่กำหนดเอง (กับ -N) เรียกจาก INPUT/OUTPUT/FORWARD เพื่อให้การเก็บหรือย้อนกลับชิ้นส่วนมีความสะอาดมากขึ้น
การเปลี่ยนไปใช้ nftables กำลังดำเนินอยู่แล้วในหลายๆ ดิสทริบิวชัน แต่หากแพลตฟอร์ม/ผลิตภัณฑ์ของคุณใช้ iptables การทำความเข้าใจส่วนประกอบเหล่านี้อย่างถ่องแท้จะทำให้คุณควบคุมได้อย่างสมบูรณ์และหากคุณย้ายไปใช้ nftables คุณก็จะเข้าใจแผนผังความคิดที่เทียบเท่ากันใน nftables ได้อย่างง่ายดาย
จากสิ่งที่คุณได้เรียนรู้มา คุณมีพื้นฐานที่มั่นคงสำหรับการใช้งานและบำรุงรักษา iptables ในสภาพแวดล้อมการใช้งานจริงแล้วคุณเข้าใจสถาปัตยกรรม (ตาราง เชน และโฟลว์) คุณเชี่ยวชาญในคำสั่งที่จำเป็น คุณสามารถใช้งาน NAT และเผยแพร่ด้วย DNAT/SNAT และคุณรู้วิธีตั้งค่า DMZ ที่ปลอดภัยจากนี้ไป เป็นเรื่องของการปรับแต่งให้เข้ากับความต้องการเฉพาะของคุณ ตรวจสอบเป็นประจำ และรักษากฎให้ชัดเจนเหมือนกับแบบจำลองเครือข่ายของคุณ