คุณสามารถเลือกที่จะทำเครื่องหมายแพ็กเก็ตที่จะยอมรับเป็นการดำเนินการที่ปลอดภัยในห่วงโซ่ต่อไปนี้ของตะขอเดียวกัน
กฎการยอมรับแต่ละข้อควรทำเครื่องหมายที่แพ็กเก็ต
กฎที่ทำการยอมรับอย่างชัดแจ้งควรทำเครื่องหมายแพ็กเก็ตก่อนที่จะยอมรับ เหตุการณ์ใด ๆ ของ:
... ยอมรับ
ควรแทนที่ด้วย:
... ชุดเครื่องหมายเมตา 0xf00 ยอมรับ
ค่าไม่สำคัญตราบใดที่ไม่ใช่ 0 หากไม่มีบทบาทอื่นในการทำเครื่องหมาย
แต่ละห่วงโซ่ควรยอมรับแพ็กเก็ตที่ทำเครื่องหมายไว้เนื่องจากเป็นการดำเนินการที่ปลอดภัย
โดยใช้กฎนี้ในช่วงต้นของห่วงโซ่:
เครื่องหมายเมตา != 0 ยอมรับ
นั่นคือแนวคิดทั่วไป การปรับเปลี่ยนและข้อยกเว้นยังคงสามารถทำได้หากเหมาะสมกว่า
นี่คือชุดกฎที่เยี่ยมชมตามแนวทางนี้ เครื่องหมายได้รับการยอมรับหลังจาก ct ... การลดลงไม่ถูกต้อง
กฎซึ่งเป็นกฎสำคัญที่ไม่ควรข้าม (และจริงๆ แล้วสามารถทำได้ในห่วงโซ่ก่อนหน้านี้ครั้งแล้วครั้งเล่า เนื่องจากเป็นกฎการดรอป) หากอยู่ด้านล่าง อินพุตคือเชนสุดท้ายใน hook ของตัวกรอง/อินพุต ไม่จำเป็นต้องทำเครื่องหมายแพ็กเก็ตที่ยอมรับ แต่ก็ไม่เสียหายที่จะทำเช่นนั้น
/etc/nftables.conf:
:
ล้างชุดกฎ
ตัวกรองตาราง inet {
ตัวนับ input_ssh {}
ตั้ง my_admin_ipv4 {
พิมพ์ ipv4_addr
ช่วงเวลาธง
เคาน์เตอร์
องค์ประกอบ = {
10.0.0.0/8,
172.16.0.0/12,
192.168.0.0/16
}
}
อินพุตลูกโซ่ {
ประเภท ตัวกรอง เบ็ด ตัวกรองลำดับความสำคัญอินพุต; นโยบายลดลง;
iifname lo meta mark set 0x1 ยอมรับความคิดเห็น "อนุญาตการรับส่งข้อมูลย้อนกลับ";
สถานะ ct ที่จัดตั้งขึ้น ชุดเครื่องหมายเมตาที่เกี่ยวข้อง 0x1 ยอมรับความคิดเห็น "อนุญาตการเชื่อมต่อที่สร้างแล้ว/ที่เกี่ยวข้อง";
ct ระบุความคิดเห็นที่ไม่ถูกต้อง "ปฏิเสธการเชื่อมต่อที่ไม่ถูกต้อง";
เครื่องหมายเมตา != 0 ยอมรับ
#สสส
tcp dport ssh ip saddr @my_admin_ipv4 ชื่อตัวนับ input_ssh meta mark set 0x1 ยอมรับความคิดเห็น "อนุญาต IPv4 SSH จากผู้ดูแลระบบ";
}
ห่วงโซ่ไปข้างหน้า {
ประเภทตัวกรอง hook ลำดับความสำคัญไปข้างหน้า 0; นโยบายลดลง;
}
เอาต์พุตลูกโซ่ {
ประเภทลำดับความสำคัญเอาต์พุตของตะขอตัวกรอง 0; นโยบายยอมรับ;
}
รวม "/etc/nft/*.conf"
}
/etc/nft/http.conf
(เปลี่ยน counter_nginx
กับ counter_http
). เดอะ เครื่องหมายเมตา != 0 ยอมรับ
อาจไม่จำเป็นต้องใช้กฎที่นี่เนื่องจากอาจไม่มีห่วงโซ่อื่นมาก่อน แต่ก็ไม่เจ็บที่จะมีเช่นกัน
ตัวนับ input_http {}
เชน http {
ประเภท ตัวกรองเบ็ด ตัวกรองลำดับความสำคัญอินพุต - 1; นโยบายยอมรับ;
เครื่องหมายเมตา != 0 ยอมรับ
# HTTP #
tcp dport {80,443} ชื่อตัวนับ input_http ชุดเครื่องหมายเมตา 0x2 ยอมรับความคิดเห็น "อนุญาต HTTP";
}
วิธีนี้ใช้เครื่องหมาย ดังนั้นจะรวมเข้ากับกฎไฟร์วอลล์อื่นที่ใช้เครื่องหมายเพื่อวัตถุประสงค์อื่นได้ยากขึ้น ยังคงเป็นไปได้โดยสงวนเครื่องหมายไว้สองสามบิตด้วยการดำเนินการระดับบิต