ฉันคุ้นเคยกับการทำให้ IPv4 แข็งขึ้นบนเซิร์ฟเวอร์ Ubuntu แต่เมื่อฉันใช้กฎเดียวกันสำหรับ IPv6 กับ ip6tables การเชื่อมต่อ IPv6 จะขาดหายไป ส่งผลให้ ปลายทางไม่สามารถเข้าถึงได้: ที่อยู่ที่ไม่สามารถเข้าถึงได้
ข้อผิดพลาดระหว่าง ping คุณช่วยแนะนำวิธีแก้ปัญหานี้ได้ไหม ตรรกะของฉันมีดังต่อไปนี้:
#IPv6
#รีเซ็ตกฎทั้งหมด (F) และเชน (X)
ip6tables -F
ip6tables -X
#Force ตรวจสอบแพ็กเก็ต SYN
ip6tables -A อินพุต -p tcp ! --syn -m state --state ใหม่ -j DROP
#วางแพ็คเก็ตคริสต์มาส
ip6tables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
#Drop แพ็กเก็ตว่าง
ip6tables -A INPUT -p tcp --tcp-flags ไม่มีทั้งหมด -j DROP
#Drop แพ็กเก็ตขาเข้าพร้อมแฟรกเมนต์
#ip6tables -A INPUT -f -j DROP #สิ่งนี้ใช้งานไม่ได้เหมือนใน iptables
#จราจรติดขัด
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P ไปข้างหน้า DROP
ip6tables -t filter -P OUTPUT DROP
#ตั้งมั่น
ip6tables -A INPUT -m state --state ที่เกี่ยวข้อง ก่อตั้ง -j ACCEPT
ip6tables -A OUTPUT -m state --state ที่เกี่ยวข้อง ก่อตั้ง -j ACCEPT
#ยอมรับการย้อนกลับ
ip6tables -t filter -A INPUT -i lo -j ยอมรับ
ip6tables -t filter -A OUTPUT -o lo -j ยอมรับ
#ไอซีเอ็มพี
ip6tables -t filter -A INPUT -p icmp -j ยอมรับ
ip6tables -t filter -A OUTPUT -p icmp -j ยอมรับ
#ServiceX
ip6tables -t filter -A DESTINATION -p PROTOCOL --dport PORT -j ยอมรับ
#บริการย
ip6tables -t filter -A DESTINATION -p PROTOCOL --dport PORT -j ยอมรับ
#บริการZ
ip6tables -t filter -A DESTINATION -p PROTOCOL --dport PORT -j ยอมรับ
...
ตัวอย่างสำหรับเซิร์ฟเวอร์ ssh แม้ว่าฉันไม่เคยใช้พอร์ตเริ่มต้น 22...
#สสส
ip6tables -t filter -A INPUT -p tcp --dport 22 -j ยอมรับ
ip6tables -t filter -A OUTPUT -p tcp --dport 22 -j ยอมรับ
สคริปต์ถูกสร้างให้เรียกใช้งานได้ ดังนั้นมันจึงทำงานข้ามการรีบูตใน /etc/init.d/scriptname แนวคิดคือการบล็อกทุกอย่างและอนุญาตเฉพาะบริการเซิร์ฟเวอร์ที่ทราบว่าใช้งานจริงเท่านั้น
ขอแนวทางที่ดีกว่านี้ได้ไหม เหตุใดจึงใช้งานได้ใน IPv4 แต่ไม่ใช่ใน IPv6 เมื่อฉันออก ip6tables -t filter -P อินพุตที่ยอมรับ
มันใช้งานได้ แต่นั่นไม่ใช่ประเด็น ฉันจะรักษาความปลอดภัย IPv6 บนเซิร์ฟเวอร์ Ubuntu ได้อย่างไร ขอบคุณ!