วิธีกำหนดค่า iptables เพื่อให้พอร์ตที่ไม่ต้องการไม่ถูกรายงานว่าถูกกรอง


9

ฉันต้องการหยุดไม่ให้ผู้อื่นเห็นพอร์ตของฉันเป็นตัวกรองในการสแกนมาตรฐาน nmap (ไม่ได้รับสิทธิพิเศษ) สมมติว่าฉันเปิดพอร์ตต่อไปนี้แล้ว: 22, 3306, 995 และไฟร์วอลล์ที่ตั้งค่าไว้เช่นนี้:

-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 995 -j DROP

นี่คือผลลัพธ์ของการสแกน nmap:

[+] Nmap scan report for X.X.X.X

    Host is up (0.040s latency).
    Not shown: 90 closed ports

    PORT     STATE    SERVICE
    22/tcp   filtered ssh
    995/tcp  filtered pop3s
    3306/tcp filtered mysql

แสดงพอร์ตเหล่านี้ว่าถูกกรองเนื่องจากเซิร์ฟเวอร์ของฉันไม่ได้ตอบกลับ RST สำหรับ SYN มีวิธีแก้ไขพฤติกรรมนี้หรือไม่? ตัวอย่างเช่น: หากไฟร์วอลล์ iptables บล็อกพอร์ตให้ตอบกลับ RST สำหรับ SYN แทนที่จะเป็นโหมดเงียบ (ไม่ตอบอะไร)?

คำตอบ:


18

อย่าใช้ DROP ซึ่งระบุได้ง่ายว่า "กรอง" หากคุณรู้ว่ากล่องหมด แต่คุณสามารถใช้สิ่งต่อไปนี้เพื่อส่ง RST แทน (ราวกับว่ามีการฟังการบริการ แต่มันไม่ยอมรับการเชื่อมต่อจากคุณ)

-A INPUT -p tcp -m tcp --dport 22 -j REJECT --reject-with tcp-reset

หรือใช้วิธีต่อไปนี้เพื่อทำให้พอร์ตดูปิด (ราวกับว่าไม่มีบริการฟังอยู่)

-A INPUT -p tcp -m tcp --dport 22 -j REJECT

9
-A INPUT -p tcp -m tcp --dport 995 -j REJECT --reject-with tcp-reset

ควรทำสิ่งที่คุณต้องการ (ตอบกลับด้วย RST)

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